所以我对一堆文件进行了更改,然后创建了一个新的分支并将它们推送到新的远程分支,如下所示:
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
,我的变化全都消失了。我的印象是,我仍然会列出所有更改,不上演。 (我发现我的所有更改都转移到了我的'新分支'。)有没有办法在主分支上恢复到我的所有未分阶段更改的状态?
感谢。
答案 0 :(得分:0)
当您将更改提交到新分支时,您不再有未分阶段的更改。无论您在哪个分支上(或者在进行更改之间切换),一旦提交,所有暂存的更改(git add
)将被提交到当前分支。
但是,如果您需要在主分支中重新提交所有上次提交的更改,则可以执行回滚(git reset --soft
)。通过这样做,您将删除分支new-branch
git checkout new-branch
git reset --soft HEAD^
这将回滚您在分支上的最后一次提交,并且您在分段时可以进行所做的更改。
现在您可以结帐主数据并进行其他更改并重新提交。
答案 1 :(得分:0)
运行以下命令:
如果你在某些提交之前撒谎,那么试试这个而不是第2步:
git reset --soft HEAD~3
恢复HEAD中第四次最后一次提交所指定的更改。 (您需要根据不需要的提交位置更改数字' 3')
并检查git状态。您应该能够看到尚未提交的本地更改。
答案 2 :(得分:0)
有没有办法在主分支上恢复到我的所有未分级更改的状态?
我不确定你为什么要这样做。 我不推荐,但这样就可以了:
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
我建议您了解三种状态:已提交,已修改和已暂存。阅读here。