Use*_*456 3 git workflow pull fetch
我知道之前已经问过这个问题,但在我看来答案已经随着时间的推移而改变,所以我很困惑.所以在2012年12月22日圆满之后,(我们这些幸存下来的人)一劳永逸,当你想从远程分支中获取最新变化时,建议使用git的方式是"开发".
我使用拉,说实话从来没用过fetch.我只是感到震惊,我可能会让自己陷入一些奇怪的境地.
以下是我的工作流程示例:
git pull origin develop
git checkout -b story-001
...do some work
git commit -am "fixed utests"
.. do some more work
git commit -am "fixed impl for service x"
git rebase develop
git checkout develop
git merge --squash story-001
git commit -m "Story 001 completed <testinfo>"
git push origin develop
..error.. master is head..
git pull origin develop
..maybe merge issue
git mergetool
..resolved problem
git commit -am "resolved merge for story 001"
git push origin develop
git branch -D story-001
....
... and so on
... after a while some changes on remote <develop>
...
git pull origin develop
Run Code Online (Sandbox Code Playgroud)
正如你在我的世界中看不到的那样,为什么会这样?
如果您希望当前(本地)的工作保持领先,那么您就可以了
git fetch
git rebase origin/develop
Run Code Online (Sandbox Code Playgroud)
要么
git pull --rebase
Run Code Online (Sandbox Code Playgroud)
代码中的合并,即远程和本地更改时的拉动,可能会导致本地工作的顺序错误,并被远程更改覆盖.
因此,如果你想抓住遥控器,你应该做拉动和获取,如果你已经在你的本地做了一些工作.只是为了保持简单.但是大多数时候,如果你运气好的话,拉动会起作用.
这是我通过做更多研究所理解的.但是,在我尝试进行一些实验验证之前,我不确定.
我认为最好的解决方案是大多数时候使用git pull --rebase,不知何故更有意义.您可以根据我的理解更改git pull的默认行为,但这可能很危险,因为您可能会忘记它并使自己更加困惑.