与队友一起开始使用git,无法掌握如何使用分支机构
有一个“master
”分支,我创建了一个分支“B
”来处理module
。
另外,我必须经常从master
分支获取某些 java类的更改(获取?)。
如何实现这一目标?或者使用git是一种错误的方法吗?
答案 0 :(得分:4)
如果您的模块分支必须保持最新的主内容,您可以:
git fetch
(将获取每个origin
分支)git checkout B
(您在“模块”分支中)git rebase origin/master
(重播你在原点/主人之上的那个分支的提交)如果您在分支机构中处理的文件与主机中的更新文件不同(没有冲突),那么效果很好
此外,只有当你是唯一一个在该分支上工作的人时,它才有效,因为它改变了它的历史记录(如果其他人已经从同一个分支中撤出,这是不方便的。)
如果没有,您需要通过以下方式替换最后一步:
git merge origin/master
您可以在“Learn Git Branching”中看到更多git分支。
请注意,git fetch
或git pull
与包含主人更新的问题是分开的
git pull
仍然会抓取,并将origin/B
合并到B
:您仍需要合并origin/master
(如果您在B
独自一人,则需要重新合并)从master获取最新的演变到你的分支B
。
如果您是处理B
的多个用户,那么git pull --rebase
实际上更好,因为它会在origin/B
之上重放您的本地(未删除)提交(避免不必要的合并提交) )。同样,这与origin/master
无关:仍然需要git merge origin/master
才能将master
的演变纳入B
。
答案 1 :(得分:1)
有很多方法可以做到,我会提出其中一个。
所以,假设您拥有从主人创建的分支B.您的队友在其他地方进行了一些更改,这些更改最终都在master中,因此您也需要在B中进行这些更改。你需要做的第一件事就是获取那个主人所在的遥控器(例如原点):
git fetch origin
运行此命令后,您的本地git将了解已在原点中执行的更改。现在你需要将这些更改合并到B.一种方法是通过git rebase:
git rebase origin/master
此过程可能会导致冲突,您需要修复这些冲突。修复冲突不是这个问题的重点,但您可能希望在https://git-scm.com/docs/git-rebase中阅读--skip, - abort和--continue。