Why doesn't git fetch update local branch?
我有以下场景:
我的远程分支机构与本地分支机构相同。然后我在远程分支中做了一些更改,在本地分支中做了一些不同的更改。
我的想法是运行git fetch,同步我的本地分支,然后检查差异,然后推送所有东西,但它根本不起作用!(git fetch似乎没有得到以前在远程分支中所做的更改)我知道运行git pull修复了这个问题,或者说git push -f,但是我想在提交之前检查这些更改。
为什么git fetch不能按预期工作?或者我如何在提交之前审查这些差异?
- @Surajrao好吧,我的问题更多的是关于为什么在这个场景中不能像预期的那样工作,而不仅仅是这两个命令之间的差异。
- 好吧,我不同意这是一个杜撰的问题,因为它不是真正被问到的问题,但如果你真的理解拉和取之间的区别,那么你的期望将是不同的,你不会认为取没有按预期工作。
- git fetch不获取更改(实际上分支不保存更改)。git fetch获得的是commits(每个分支名称,或git中的任何其他名称,只指向一个特定的commit)。
要在合并本地分支和远程分支之前查看它们之间的差异,可以在执行git fetch之后使用git diff,如本问题中所述。
如果您希望在不立即提交的情况下执行远程分支与本地分支的合并,以允许您查看结果,则可以使用git pull --no-commit(如git scm.com上所述)。--no-commit选项防止git自动提交合并,合并可能是pull的一部分,这将允许您在提交之前查看合并结果。
git fetch下载从远程分支提交,但不更新您的工作区。在将提交合并到本地分支之前,您将看不到提交。
git pull是git fetch和git merge的组合,这就是git pull似乎"修正"这种行为的原因。