idea使⽤git更新代码:updateproject(gitmerge、gitrebase)
idea使⽤git更新代码 :
选中想要更新的项⽬,右键点击 git => repository => pull
这样使⽤⼀次后idea会⾃动建⽴选中分⽀的远程跟踪分⽀,以后可直接点击下图按钮,不需要再选分⽀,除⾮要拉取另⼀分⽀
update project 的两个选项
说明:为避免在前后相对位置懵逼,先讲明越靠后的提交越新,越顶端的提交越新git merge
git merge b : 将b分⽀合并到当前分⽀
图解(主分⽀master, git merge test)
D---E test /
A---B---C---F master
使⽤merge合并:
D--------E / \\
A---B---C---F----G
⼯作流
1. git pull (或fetch && merge)
2. 解决冲突3. 再次git pullgit rebase
git rebase ⽬标分⽀
rebase:翻译成中⽂是重新设定
git rebase 你其实可以把它理解成是“重新设置基线”,将你的当前分⽀重新设置开始点。
rebase会把你当前分⽀的 commit 放到最后⾯,将rebase后的⽬标分⽀的commit当作基点放在前⾯,通俗的说就是将⽬标分⽀的提交作为你当前分⽀的基点,所以叫变基
图解(主分⽀master git rebase test)
D---E test /
A---B---C---F master
git rebase test合并:
A---B---D---E---C'---F' test, master
如图主分⽀的基点变成了test的⼏个commit,可能会覆盖别⼈代码,所以不要在公共分⽀使⽤rebase
⼯作流
git rebase
while(存在冲突) { git status
找到当前冲突⽂件,编辑解决冲突 git add -u
git rebase --continue if( git rebase --abort ) break; }区别
两个使⽤场景是不⼀样的,merge只是合并⽬标分⽀的内容,rebase也合并另外⼀个分⽀的内容,但是会把本分⽀的commits顶到最顶端git merge 会⽣成⼀个新的合并节点,⽽rebase不会
使⽤场景
都在同⼀个分⽀开发,为了提交记录更好的可读性,⽤
git pull --rebase origin master
开发分⽀拉取主分⽀时。为了让你最新开发的提交记录在最前⾯,也建议⽤rebase假设我们现在有3个分⽀
master分⽀:线上环境使⽤的分⽀testing分⽀:测试环境使⽤的分⽀
my_feature分⽀:开发新功能的分⽀,也就是当前分⽀
A. 假设我在my_feature上开发了⼀段时间,之后另外的同事开发的功能正式上线到master分⽀了,那么我可以在当前的分⽀下rebasemaster分⽀,这样我这个分⽀的⼏个commits相对于master还是处于最顶端的,也就是说rebase主要⽤来跟上游公共分⽀同步,同时把⾃⼰的修改顶到最上⾯
B. 我在my_feature上开发了⼀段时间了,想要放到test分⽀上,那就切到test,然后git merge my_feature,因为test是公共分⽀,最好是⽤merge
注意
不要在公共分⽀使⽤rebase拉取其他分⽀,rebase会打乱时间线,使远程仓库和本地仓库对不上,导致其他⼈⽆法推送代码使⽤git pull时默认是merge, 加 --rebase参数使其使⽤rebase⽅式 : git pull --rebase