问题
执行以下工作流程的Git命令是什么?
方案
我从存储库克隆并对我的本地存储库进行了一些自己的提交。与此同时,我的同事们提交了远程存储库。现在,我想:
检查是否有新的
来自其他人的承诺
远程存储库,即origin
?
说有3个新的提交
我上次的远程存储库
拉,我想差一点
远程存储库的提交,即
HEAD~3
HEAD~2
,HEAD~2
HEAD~1
和HEAD~1
HEAD
。
知道远程改变了什么后, 我想获得最新的提交 来自其他人。
到目前为止我的调查结果
对于第2步:我知道插入符号HEAD^
,HEAD^^
等以及代字符HEAD~2
,HEAD~3
等。
对于第3步:我想,只是git pull
。
答案 0 :(得分:223)
您可以git fetch origin
更新存储库中的远程分支以指向最新版本。对于遥控器的差异:
git diff origin/master
是的,您也可以使用插入符号。
如果您想接受远程更改:
git merge origin/master
答案 1 :(得分:148)
git remote update && git status
在answer至Check if pull needed in Git
上找到此信息
git remote update
让您的遥控器更新。然后你可以 做以下几件事之一,例如:
git status -uno
会告诉您正在跟踪的分支是在前方,后方还是分歧。如果它什么也没说,那就是当地和 遥控器是一样的。- 醇>
git show-branch *master
将显示所有名称以master(例如master和origin / master)结尾的分支中的提交。如果您将
-v
与git remote update
一起使用,则可以看到哪些分支 得到了更新,所以你真的不需要任何进一步的命令。
答案 2 :(得分:33)
对“起源”进行综合观察的好方法是:
git remote show origin
答案 3 :(得分:15)
我只是用
git remote update
git status
后者然后报告我当地背后有多少提交。 (如果有的话)
然后
git pull origin master
让我的本地人更新:)
答案 4 :(得分:11)
一个可能的解决方案
感谢Alan Haggai Alavi's solution我提出了以下潜在的工作流程:
第1步:
git fetch origin
第2步:
git checkout -b localTempOfOriginMaster origin/master
git difftool HEAD~3 HEAD~2
git difftool HEAD~2 HEAD~1
git difftool HEAD~1 HEAD~0
第3步:
git checkout master
git branch -D localTempOfOriginMaster
git merge origin/master
答案 5 :(得分:8)
我的常规问题是“任何新的或在回购中更改”,因此 whatchanged 会派上用场。找到它here。
git whatchanged origin/master -n 1
答案 6 :(得分:1)
git status
并不总是显示master和origin / master之间的区别。
如果您希望组合git fetch origin && git status
起作用,则需要在本地分支和原点之间指定跟踪信息:
# git branch --set-upstream-to=origin/<branch> <branch>
对于主分支:
git branch --set-upstream-to=origin/master master
答案 7 :(得分:0)
由于到目前为止尚未提出建议...我发现它非常有用...
我只是使用
git fetch origin
获取远程更改,然后使用不错的gitk工具查看本地和待处理的远程提交(及其相关更改) (https://git-scm.com/docs/gitk)涉及--all参数,例如
gitk --all