我开始修改我的代码库,没有意识到我是在一个旧的主题分支上。为了转移它们,我想把它们藏起来,然后应用到master的新分支。我使用git stash pop将正在进行的更改转移到这个新分支,忘记了在创建新分支之前我没有将新更改拉入master。这导致了一系列合并冲突,并丢失了一个干净的更改存储库(自从我使用pop以来)。
一旦我正确地重新创建了新分支,我该如何恢复隐藏的更改以正确地应用它们?
我开始修改我的代码库,没有意识到我是在一个旧的主题分支上。为了转移它们,我想把它们藏起来,然后应用到master的新分支。我使用git stash pop将正在进行的更改转移到这个新分支,忘记了在创建新分支之前我没有将新更改拉入master。这导致了一系列合并冲突,并丢失了一个干净的更改存储库(自从我使用pop以来)。
一旦我正确地重新创建了新分支,我该如何恢复隐藏的更改以正确地应用它们?
当前回答
如果你像我一样,并且有想要保留的未归档的更改,那么可以通过从存储库中检出每个文件的已知稳定版本来避免丢失工作。希望这些文件与您正在处理的文件不同。此外,这也是我们使用小提交的原因,笨蛋。
git checkout main -- <file_with_conflicts>
其他回答
事实证明,Git足够聪明,如果应用不干净,就不会丢弃存储。我能够通过以下步骤达到所需的状态:
要取消合并冲突的分级:git reset HEAD。(注意后面的点)要保存冲突的合并(以防万一):git stash要返回到master:git checkout master要获取最新的更改:git fetch upstream;git合并上游/主要更正我的新分支:gitcheckoutnewbranch;git重基主机要应用正确的隐藏更改(现在是堆栈中的第二个):git stash apply stash@{1}
幸运的是,在发生冲突的情况下,git stash pop不会更改存储!
所以不用担心,只需清理代码并重试。
假设您的代码库以前是干净的,您可以使用:gitcheckout-f返回到该状态然后做你忘记的事情,例如gitmerge缺少分支在那之后,只要再次打开git存储,你就会得到同样的存储,这之前是冲突的。
请记住:存储是安全的,但是,工作目录中未提交的更改当然不是。他们可能会搞砸。
这里的说明有点复杂,所以我将提供更直接的内容:
git reset HEAD—hard放弃对当前分支的所有更改…必要时进行中介工作git stash pop在你准备好后的某个日期再次打开存储
如果你像我一样,并且有想要保留的未归档的更改,那么可以通过从存储库中检出每个文件的已知稳定版本来避免丢失工作。希望这些文件与您正在处理的文件不同。此外,这也是我们使用小提交的原因,笨蛋。
git checkout main -- <file_with_conflicts>
git checkout -f
必须工作,如果您以前的状态是干净的。
小心:小心–您将丢失对文件的所有未跟踪更改。