[英]Git: getting back to unstaged changes after pushing to remote branch?
因此,我对一堆文件进行了更改,然后创建了一个新分支并将其推送到新的远程分支,如下所示:
git status
# lots of changes listed
git checkout -b new-branch
git add .
git commit -m "pushing to new-branch"
git push origin new-branch
但是,当我返回主分支时,运行git status
导致:
nothing to commit, working directory clean
,我的更改全部消失了。 我的印象是,我仍然会将所有更改都列出,而不是分阶段进行。 (发生在我身上的所有更改都移到了“新分支”。)是否有任何方法可以回到主分支上进行所有未暂存的更改的状态?
谢谢。
将更改提交到新分支后,您将没有未暂存的更改。 提交后,无论您位于哪个分支上(或在进行更改之间切换),提交的所有阶段更改( git add
)都将提交到当前分支。
但是,如果您需要将所有上次提交的更改都返回到master分支中,则可以执行回滚( git reset --soft
)。 通过这样做,您将删除分支new-branch
上的最后一次提交
git checkout new-branch
git reset --soft HEAD^
这将回滚您在分支上的最后一次提交,并且您所做的更改将在暂存中可用。
现在,您可以检出master并进行其他更改,然后再次提交。
运行以下命令:
如果您在提交之前是在撒谎,请尝试执行此操作,而不要执行第2步:
git reset --soft HEAD~3
它将恢复HEAD中第四个最后一次提交所指定的更改。 (您需要根据不需要的提交的位置更改数字“ 3”。)
并检查git状态。 您应该能够看到尚未落实的本地更改。
有什么方法可以回到主分支上所有未分段的更改的状态?
我不确定为什么要这么做。 我不建议这样做 ,但这可以解决问题:
git checkout master # go back to the master branch
git merge new-branch # merge in the changes you committed in new-branch
git reset --soft HEAD~1 # make HEAD point to the commit before the merge
# this will leave the changes in the index,
# in other words, staged
您也可以将最后一个命令替换为
git reset --mixed HEAD~1 # make HEAD point to the commit before the merge
# this will leave no changes in the index,
# in other words, no changes are staged
我确实建议您了解以下三种状态:提交,修改和暂存。 在这里阅读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.