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

为什么git rebase会覆盖我的本地更改?如何避免覆盖?,git,git-rebase,Git,Git Rebase,我正试着重新调整我的分支的基址。但它总是在重设基础后覆盖我的本地更改 我正在使用命令git-rebase,它将显示一个文件冲突,然后我手动解决了冲突。 尝试后git-rebase--继续。然后我发现我的本地更改丢失了 如何保留本地更改并使用主控形状重新设置基础 听起来,在您重新设置基础时,您的工作目录是脏的。您可能应该做好准备,以便在执行重基时擦除工作目录和阶段。作为一种解决方法,如果您发现自己有一个非空的工作目录和/或阶段,但需要重新设置到最新的其他分支,那么您可以进行隐藏,即 git sta

我正试着重新调整我的分支的基址。但它总是在重设基础后覆盖我的本地更改

我正在使用命令
git-rebase
,它将显示一个文件冲突,然后我手动解决了冲突。 尝试后
git-rebase--继续
。然后我发现我的本地更改丢失了


如何保留本地更改并使用主控形状重新设置基础

听起来,在您重新设置基础时,您的工作目录是脏的。您可能应该做好准备,以便在执行重基时擦除工作目录和阶段。作为一种解决方法,如果您发现自己有一个非空的工作目录和/或阶段,但需要重新设置到最新的其他分支,那么您可以进行隐藏,即

git stash
Git将进行2次(甚至3次)提交,以保持您的工作目录和后台的当前状态。重新基础完成后,可以通过应用隐藏来恢复这些更改:

git stash apply

我认为在某些情况下,Git甚至不允许您根据工作目录和阶段的状态进行合并或重新设置基础。但是在任何情况下,在重定基址之前确保它们是干净的都是一个好主意。

首先不要忘记在重定基址之前添加和提交当前文件


在手动解决文件中的冲突后。要将冲突标记为已解决,请使用git add,然后使用git rebase继续。然后,
git push

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

假设您有一个单独的分支,请按照以下步骤使用master重新设置基础,而不会丢失本地更改。如果您在master以外的其他分支机构:

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

正如您所注意到的,当工作目录变脏时,git将不允许您重新设置基址。它将输出一个错误并中止重定基址进程。我怀疑这是问题所在。您是否使用了任何其他命令,如
git stash
?@Kaushal,我没有隐藏。我已在重新设置基础之前提交了所有更改。您完成重新设置基础了吗?我想你只是对正在进行的再基地状态感到困惑。我检查过了。你的步骤不同。那么链接中的步骤呢?重新定基时真的覆盖了本地更改吗?@everalian嗨,我浏览了链接,所以他们讨论了使用合并和重新定基来将master branch的新功能合并到本地回购中。我认为这两种方法都不会重写您的本地更改。不同之处在于,使用我提到的方法,您的主分支将不会被更新——您的功能分支将被更新为新的远程更改,并且更改也将在那里。使用上面提到的方法,本地回购协议中的主分支也会得到更新。