开始与队友一起使用git,但无法掌握如何使用分支
有一个"master
"分支,我创建了一个分支"B
"来处理module
此外,我还必须经常从master
分支获取某些java类的更改(fetch?)。
如何做到这一点?还是使用git的方式不对?
如果您的模块分支必须保持有关主内容的最新信息,您可以:
git fetch
(将获取每个origin
分支)git checkout B
(您在"模块"分支中)git rebase origin/master
(在原点/主节点顶部的分支中回放提交)
如果您在分支中处理的文件与master中更新的文件不同(没有冲突),则效果良好
此外,只有当你是唯一一个处理该分支的人时,这才有效,因为它会更改其历史记录(如果其他人已经从同一分支中提取,这会很不方便)
如果没有,您需要将最后一步替换为:
git merge origin/master
你可以在"学习git分支"中看到更多的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
的进化。
有很多方法可以做到这一点,我将提出其中一种。
假设你有你的分支B,它是从master创建的。你的队友在其他地方做了一些改变,这些改变最终会出现在master中,所以你也需要在B中进行这些改变。您需要做的第一件事是获取主控器所在的远程设备(例如,原点):
git fetch origin
运行此命令后,您的本地git将了解在原点中执行的更改。现在您需要将这些更改合并到B中。一种方法是通过git-rebase:
git rebase origin/master
这个过程可能会导致冲突,您需要解决这些冲突。解决冲突不是这个问题的重点,但您可能想在中阅读有关--skip、--abort和--continue的内容https://git-scm.com/docs/git-rebase.