我有一种奇怪的行为,我不明白可能是什么原因。
基本上:
所以,我从不做生产服务器的提交,我只是拉到那里。
所以在我完成最后一次拉动之后:
-bash-4.2$ git pull origin master
然后我检查了状态并给了我这个:
-bash-4.2$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 2 commits.
# (use "git push" to publish your local commits)
然后我去看看那些提交的内容:
-bash-4.2$ git cherry -v
+ 2456db712fafab4b845a128711820ca107475e1f Remove comment added by josepluis to yiic horde loader
+ 8b9edf42c0d5177cd77f061160e27580098b745c Fix small bug when ordering pictures that was executing the update on wrong table
如果我查看Bitbucket,我发现那些不是来自生产服务器的本地提交,但它们是我在计算机上执行的提交并推送到Bitbucket。
那么为什么来自生产服务器的Git会考虑那些提交,本地未提交的提交?
答案 0 :(得分:0)
尝试检查origin/master
的reflog,并检查两次拉动之间是否有重写历史记录:
$ git reflog origin/master
ffac48d09 refs/remotes/origin/master@{0}: fetch: fast-forward
d7dffce1c refs/remotes/origin/master@{1}: fetch: fast-forward
e05806da9 refs/remotes/origin/master@{2}: fetch: fast-forward
aeddbfdfa refs/remotes/origin/master@{3}: fetch: fast-forward
...
$ git log --oneline --graph ffac48d09 d7dffce1c e05806da9
# and check if the sequence of commits is linear, or if it "forked" at some point
避免被重写(以及git pull
的自动合并或重组)的两种方法:
git pull
,运行git fetch
,检查origin/master
进化的方式,并根据您的需要:
git merge origin/master
/ git rebase origin/master
:执行与git pull
相同的操作,但在被告知历史记录发生变化后 git reset --hard origin/master
:不要尝试合并,只需使用此特定提交git pull
只能继续快进:git pull --ff-only