如何在推送到远程时避免Git pull的合并提交

时间:2015-05-05 11:47:04

标签: git merge pull

我有一个存储库和一些本地更改要提交。 在提交之前,我使用Eclipse中的Egit将更改提取到我的本地。

它创建了一个合并提交,我提交了它的提交。

现在,当我尝试推送到原点时,它表明它将推送我的提交以及合并提交。 但理想情况下,合并提交不应该是远程存储库的一部分。

如何避免这种情况?

6 个答案:

答案 0 :(得分:33)

每当从远程存储库中提取时都使用rebase选项。请按照以下步骤进行操作

  1. 提交您的更改 - 它将在您的本地创建一个新提交。
  2. 现在做git pull --rebase <remote-name> <branch-name>
  3. 基本上,rebase会将您在当前分支HEAD上提交的提交作为补丁。然后它将在HEAD顶部应用所有远程提交,然后在其上应用您的提交。
  4. 因此,最佳做法是提交更改,然后使用rebase选项提取远程提交。

答案 1 :(得分:6)

如果您有未提交的更改,则可以执行

 def custom_loss(y1_true, y1_pred,y2_true, y2_pred):

答案 2 :(得分:3)

通常的策略是在分支机构工作。当远程主服务器更改时,将更改拉到主服务器而不是合并, rebase 分支。

请参阅Atlassian的Git Rebase

答案 3 :(得分:3)

你可以运行

git config --global branch.autosetuprebase always

使git pull --rebase成为git pull的默认行为。

答案 4 :(得分:2)

如果您不想要合并提交,那么将本地分支同步到远程分支的最佳方法是进行 rebase。建议您先执行 git fetch,然后执行 git rebase,但是,正如其他人提到的,您可以同时执行这两个操作:

git pull --rebase --autostash

如果您总是这样做,您可以将 git pull 配置为自动执行此操作:

git config --global pull.rebase true
git config --global rebase.autostash true

答案 5 :(得分:0)

场景:

假设在 GIT 存储库中提出了一个 PR:从 feature/my_bug_fixrelease/project-007。 但是由于上述分支之间的冲突,GIT 不允许合并。

然后就这样做,

$ git checkout feature/my_bug_fix

$ git pull --rebase origin release/project-007

$ # resolve any conflicts encounter during the process

$ git rebase --continue

$ git push origin feature/my_bug_fix  --force

这是解决冲突分支的有效且干净的方法,通过这个,您将不会获得那些合并提交,否则如果您使用 git merge 就会出现这些提交。 >

此外:

pull          = fetch + merge

pull --rebase = fetch + rebase

因此,选择处理分支的方式。

您应该更好地了解合并和变基之间的区别:)