我什么时候需要在“git add,git commit”之前或之后做“git pull”?

时间:2013-08-30 09:15:07

标签: git

什么是正确的方法?

git add foo.js
git commit foo.js -m "commit"
git pull
git push

或者

git pull
git add foo.js
git commit foo.js -m "commit"
git push

或者

git add foo.js
git pull
git commit foo.js -m "commit"
git push

UPD:

我忘了提及在这种情况下,我使用git add来暂存跟踪的已修改的文件。不要将全新文件包含到存储库中。这会改变命令的顺序吗?

6 个答案:

答案 0 :(得分:62)

pull = fetch + merge。

你需要在合并之前提交你所做的事情。

提交后拉。

答案 1 :(得分:60)

我认为最好的方法是:

存储您的本地更改:

git stash

将分支更新为最新代码

git pull

将您的本地更改合并到最新代码中:

git stash apply

添加,提交并推送您的更改

git add
git commit
git push

根据我的经验,这是Git阻力最小的途径(无论如何在命令行上)。

答案 2 :(得分:44)

我建议尽可能经常从远程分支撤出,以尽量减少大型合并和可能的冲突。

话虽如此,我会选择第一个选项:

git add foo.js
git commit foo.js -m "commit"
git pull
git push

在提取之前提交您的更改,以便在提取期间将提交与远程更改合并。这可能会导致您可以开始处理的冲突,知道您的代码已经提交,如果出现任何问题,您必须因任何原因中止合并。

我确信有人会不同意我的观点,我认为没有任何正确的方式来完成合并流程,只有最适合人们使用的方法。

答案 3 :(得分:4)

我认为git pull --rebase是最简单的方法,可以在远程提交的基础上设置您当地的最新提交,而这些提交是您在某一点上没有的。

因此,每次您想要开始进行更改时,都不必拉动。

答案 4 :(得分:3)

您希望更改位于远程分支的当前状态之上。所以你可能想要在自己承诺之前就拉上右边。之后,再次推送您的更改。

只要与远程分支没有任何冲突,“脏”本地文件就不是问题。如果存在冲突,则合并将失败,因此在进行本地更改之前不存在拉动风险或危险。

答案 5 :(得分:0)

对我来说最好的方法是:

  1. 创建新分支,签出该分支
  2. 创建或修改文件,git添加,git提交
  3. 回到master分支并从远程进行拉取(以获取最新的master更改)
  4. 将新创建的分支与master合并
  5. 删除新创建的分支
  6. 将主控推送到远程

或者您可以将新创建​​的分支推送到远程上并在那里合并(如果您这样做,那么最后需要从远程主节点上拉出