我有一个存储库和一些本地更改提交.在提交之前,我使用Eclipse中的Egit将更改提取到我的本地.
它创建了一个合并提交,我提交了它的提交.
现在,当我试图推送到原点时,它表明它将推送我的提交以及合并提交.但理想情况下,合并提交不应该是远程存储库的一部分.
怎么避免这个?
小智 39
从远程存储库中提取时,请使用rebase选项.请按照以下步骤操作,
git pull --rebase <remote-name> <branch-name>.Fel*_*peC 14
如果您不想合并提交,将本地分支同步到远程分支的最佳方法是执行变基。建议您先执行 a git fetch,然后执行git rebase,但是,正如其他人提到的,您可以同时执行这两项操作:
git pull --rebase --autostash
Run Code Online (Sandbox Code Playgroud)
如果您总是这样做,您可以配置git pull为自动执行此操作:
git config --global pull.rebase true
git config --global rebase.autostash true
Run Code Online (Sandbox Code Playgroud)
Cod*_*Kid 11
你可以跑
git config --global branch.autosetuprebase always
Run Code Online (Sandbox Code Playgroud)
使 gitpull --rebase成为 git pull 的默认行为。
如果您有未提交的更改,则可以执行此操作,
git stash
git pull --rebase <remote> <branch>
git stash pop
Run Code Online (Sandbox Code Playgroud)
设想:
假设 a 是在 GIT repo 中提出的 PR: from feature/my_bug_fixinto release/project-007。但由于上述分支之间的冲突, GIT 不允许合并。
然后执行以下操作:
$ git checkout feature/my_bug_fix
$ git pull --rebase origin release/project-007
$ # resolve any conflicts encountered during the process
$ git rebase --continue
$ git push origin feature/my_bug_fix --force
Run Code Online (Sandbox Code Playgroud)
这是解决分支冲突的有效且干净的方法。此外,通过使用--rebase您将不会获得合并提交,否则如果您使用 git merge 则会出现合并提交。
而且:
pull = fetch + merge
pull --rebase = fetch + rebase
Run Code Online (Sandbox Code Playgroud)
因此,选择处理分支的方式。
您现在应该更好地理解合并和变基之间的区别:)