最初我曾经犯过一个错误的分支,想要把它拿回来并提交给正确的分支(主人)。我想从How to fix committing to the wrong Git branch?
接受的答案中建议路线所以我进行了软重置,据我所知,它使工作副本完全不受影响
git reset --soft HEAD^
然后尝试结帐主人
git checkout master
我被告知,某些本地更改会被结帐覆盖,我应该提交或存储更改。我选择藏匿它们。我使用了Git Extensions stashing命令,我相信它只是
git stash
至少那是我现在在其他存储库上尝试时显示的内容。我理解,这并不包含未跟踪的文件,但它也不会清除它们。
然后我通过Git Extensions GUI切换到主分支。然后我想弹出由于某些冲突导致失败的存储。此时我注意到,缺少一个未跟踪(但被忽略)的文件夹(。\ MyScripts)。其他未跟踪(和忽略)的文件(例如* .log文件)
我可以看到的区别在于,通过.git / info / exclude排除了MyScripts文件夹,并通过.gitignore排除了* .log文件
这对任何人都有意义吗?我的MyScripts文件夹在哪里?如何取回它?
答案 0 :(得分:0)
只是一个注意事项:你提到的问题是,第二个答案更明智 - 尽管选票较少。
我的MyScripts文件夹在哪里?如何取回它?
如果你提交了它,那么它就在你Git对象数据库的某个地方 - 让我们恢复它;)
首先在软重置之前找出您的提交ID :
$ git reflog
查看那里的提交,在软复位之前找到一个提交并将其写下来(可以git log -1 <commit>
进行仔细检查,看看是否选择了合适的提示)。
现在结帐分支,清理你的混乱切换分支,可能失败的合并和可能失败的stash pop:
$ git checkout master
$ git reset --hard HEAD # or HEAD~1 if you already committed something broken
最后,樱桃挑选哈希,你在reflog中发现并解决冲突,因为你打算解决它们:
$ git cherry-pick <commit>