为什么git rebase会覆盖我的本地更改?如何避免覆盖?

时间:2017-07-30 14:59:41

标签: git git-rebase

我正在尝试用主人来重新分支我的分支。但是在变基之后它总是会覆盖我的本地变化。

我正在使用命令git rebase并且它将显示一个文件冲突,然后我手动解决了冲突。 经过尝试git rebase --continue。然后我发现我的本地变化都没有了。

如何使用master保留本地更改和rebase?

3 个答案:

答案 0 :(得分:0)

听起来你的工作目录很糟糕。您可能应该为您的工作目录做好准备,并在进行rebase时擦除阶段。作为一种解决方法,如果你发现自己有一个非空的工作目录和/或阶段,但你需要重新绑定到最新的其他分支,你可以做一个藏匿,即。

git stash

Git将提交2个(甚至3个)提交来保存您当前的工作目录和阶段。在rebase完成后,您可以通过应用stash来获取这些更改:

git stash apply

我认为在某些情况下,Git甚至不允许您根据工作目录和阶段的状态进行合并或变基。但无论如何,在变基之前确保它们是干净的可能是个好主意。

答案 1 :(得分:0)

首先不要忘记添加&在进行rebase之前提交当前文件。

手动解决文件冲突后。要标记为已解决冲突,请使用 git add <file> ,然后git rebase --continue。然后git push

答案 2 :(得分:-1)

首先,我希望您不是直接在本地仓库中的主分支上工作,并且您有一个单独的分支,您可以将其推送到本地更改。在分支上完成工作后,您可以创建拉取请求或与主分支合并。

假设您有一个单独的分支,请按照以下步骤使用master进行rebase,而不会丢失您的本地更改。如果你在主人以外的另一个分支:

git checkout master

然后继续执行以下命令:

git remote -v
git remote add upstream https://github.com/url_of_the_repo_you_are_working_on
git pull upstream master
git checkout branch_name_you_are_working_on
git rebase -i master

此时,您的本地仓库中的分支机构将会更新,您分支机构中的更改将保持不变。现在,您可以将更改推送到远程分支:

git push -f origin branch_name_you_are_working_on