Git rebase 圈子一次又一次地回到同一个地方

sri*_*ram 7 git git-merge git-rebase git-branch

我在使用 Git rebase 时遇到问题,我必须一次又一次地合并代码,但仍然没有成功。

我从主人那里切下了我的分支(A)。我开始在我的分支上工作并进行了更多的提交。与此同时,master 也发生了变化,并进行了大量的提交。现在我正在尝试将我的分支合并回 master。

所以我给,

git co master
git pull 
git co branch-A
git rebase master
Run Code Online (Sandbox Code Playgroud)

现在我收到类似 CONFLICT 的消息:合并冲突

有了这个,它分支到一个新的分支,名称为(没有分支,rebase 分支-A)在此之后我解决了所有冲突,然后我给了所有这些文件的 git add 。

现在我得到了状态

rebase in progress; onto ad0da3f
You are currently rebasing branch 'branch-A' on 'ad0da3f'.
  (all conflicts fixed: run "git rebase --continue")
Run Code Online (Sandbox Code Playgroud)

在此之后,我运行 git rebase --continue 并且我为解决冲突所做的所有更改都消失了,它回到了合并和像以前​​一样抛出大量冲突的初始状态!

我的问题是,

  1. 我怎样才能恢复在发出 git rebase --continue 之前完成的所有冲突解决方案?
  2. 我怎样才能不陷入需要一次又一次合并以将更改从 master 拉到我的分支的同一个循环?
  3. 在我成功地将所有更改从 master 合并到我的分支后,将我的分支合并回 master,我可以简单地使用,

    git co master git merge branch-A

或者我需要发出更多命令吗?

任何帮助请...

and*_*vil 3

对我来说,很难说你出了什么问题,但请按照以下步骤操作:

  • 首先,备份您的项目所在的文件夹,以防万一出现问题,您仍然拥有原始的本地存储库。

  • 在 master 中使用 rebase 进行拉取:

    git checkout master
    
    git pull --rebase origin master
    
    Run Code Online (Sandbox Code Playgroud)
  • 与 master 重新建立分支:

    git checkout branch-A
    
    git rebase master
    
    Run Code Online (Sandbox Code Playgroud)
  • 当然,如果存在一些冲突,请按照您已经采取的方式解决。

当我说用自己的分支变基时,我想说的是用远程更新你的分支。当然,如果只使用branch-A,则不需要在本地分支中执行pullpull --rebase 。但在 master 中,使用 rebase 来避免 git pull 导致的合并提交是一个很好的做法。当然,变基会导致一些影响,例如,当您在进行变基之前推送提交时。因此,理想的情况是将所有内容都本地化,并且只有在变基之后才推送分支或将其与主分支合并。请参阅变基的危险

就我而言,我喜欢做的是:在使用 master 重新调整我的功能分支后,我签出 master 并执行git merge <my-branch> --no-ff. 这样我的 git 历史记录就有一个提交合并分支 'my-branch'。我喜欢这样我的 git 历史。

有关合并与变基的更多信息,请参阅“ git merge”和“git rebase”之间的区别是什么?