我的群组有一项政策,只有一个人可以在GitHub上更改master
分支。他是Git大师,在origin/master
上进行了复杂的提交管理。
其他人被告知要使用(在主分支上保险后):
git pull --rebase origin master
确保我们完美地镜像origin
。但是,我知道我偶尔会忘记--rebase
。现在我想知道,我的本地master
是否与origin
上的那个不同步?
上述命令只有在同步时才会成功吗?如果不是我能做什么?
答案 0 :(得分:1)
如果您未指定--rebase
,则会将上游master
的{{1}}分支(即origin
)合并到当前已检查的分支中。如果您指定origin/master
,则您的更改将在--rebase
之上重播。最终结果应该是相同的。
如果您忘记指定origin/master
,则还可以使用配置选项启用它:--rebase
。启用此选项后,每次启动时,您的更改都将被重新定位而不是合并。
要回答问题的标题:运行git config pull.rebase true
(在使用git log HEAD..origin/master
同步历史记录之后)。如果它没有显示任何提交,那么您的工作是与源相关的最新版本。如果它显示提交,那么git fetch
中的提交尚未集成到您的本地工作副本中。
答案 1 :(得分:1)
查看本地分支机构是否与其远程对应分机保持同步的最简单方法是使用git fetch
,然后使用git status
。
git fetch
更新有关远程分支机构的信息,但不会更新其本地对等分机。
git status
显示有关分支和工作树的当前状况的信息。如果它与遥控器的日期一致,则应该说
On branch x
Your branch is up to date with 'origin/x'.
在您的具体案例中x
为master
。
另一方面,如果您的分支不是最新的,例如,因为您添加了一个提交,它会说
On branch x
Your branch is ahead of 'origin/x' by 1 commit.
git pull --rebase
做什么 git pull
实际上是git fetch
后跟git merge
的快捷方式。使用--rebase
修饰符,而不是使用git merge
git rebase
。
简而言之,git merge
和git rebase
都会将更改从一个分支应用到另一个分支,但它们的方式不同。您可以查看文档或以下SO答案以获取更多信息:git merge
,git rebase
。