我不小心将文件保存在错误的分支上。然后我做了git reset --soft HEAD^
,现在git status
说我落后了14次提交,并列出了一堆红色的修改过的文件。包括一些未跟踪的文件。
我不知道该怎么做。我试图从远程仓库转到最新的提交,但它说我做git pull
后我的本地更改将被覆盖。
帮助。我不想搞砸我当地的回购。我只想回到我所处的状态,将编辑后的文件保存在正确的分支中,并提交。
答案 0 :(得分:3)
如果您更改了本地分支,并且不想丢失任何更改,则可以使用 git-stash 。 在尝试之前,我建议您备份本地存储库。请尝试以下步骤:
git stash save 'local changes'
。
这会将您的本地更改保存在临时位置,并让您在没有任何先前更改的情况下处理当前分支。
git pull <remote-name> <branch-name>
。如您所知,它将从远程分支检索更新的提交,并应用于您当地的分支。
git stash pop
。这将恢复您在第1步中所做的操作。它将对您之前的更改(您保存的更改)应用于本地分支。如有任何冲突,您有责任解决任何冲突。完成后,您可能需要提交并推送 - 由您决定。
答案 1 :(得分:1)
请勿恐慌
备份您的存储库。
使用git stash save
存储您的更改。这会将您的更改添加到stash。
然后,从远程分支拉出:git pull <remote> <wrong-branch>
。这会将您的工作副本返回到原始分支HEAD。在您开始处理变更集之前,这就是您的分支的样子。
现在,将隐藏的更改应用于您的工作副本:git stash apply
。 Git将足够聪明,可以忽略与现有提交相匹配的隐藏更改,因此您将保留工作副本,使其处于与提交错误分支之前相同的状态。
现在签出正确的分支,并像往常一样提交:
git checkout <right-branch>
git add [...]
git commit -m "blah blah blah"
如果您的更改集与正确的分支不兼容,您可能必须在签出正确的分支时纠缠您的更改,但一旦完成,您的更改现在将在正确的分支上提交。