如何使用master提交更新master的分支



开始与队友一起使用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 fetchgit pull与包括来自主设备的更新的问题是分开的
git pull仍然会获取,并且还将origin/B合并到B:然后您仍然需要合并origin/master(或者如果您单独在B上,则重新绑定),以将最新的进化从master获取到您的分支B

如果您是几个使用B的用户,那么git pull --rebase实际上更好,因为它会在origin/B之上回放本地(未推送的)提交(避免不必要的合并提交)。同样,这与origin/master无关:仍然需要git merge origin/master来包括从masterB的进化。

有很多方法可以做到这一点,我将提出其中一种。

假设你有你的分支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.

最新更新