我在两台不同的机器上搞砸了一些存储库。
在我的机器上(A)我提交了一些更改,并希望在另一台机器(B)上安装这些更改,但在第二台机器上有一些更改我需要备份并稍后恢复
所以我用git diff
查看更改的位置,然后在机器B上git stash
清除目录。
最后,我git pull --rebase
新的提交并测试了一切正在机器B上工作。
然后我尝试恢复隐藏的更改执行git stash pop
(我通常更喜欢git stash apply
但在这种情况下我没有用它)。
我收到了
# On branch master nothing to commit (working directory clean) Dropped refs/stash@{0} (8d5ee9...aa3)
然后我执行了git status
,看到没有任何改变。
# On branch master nothing to commit (working directory clean)
“嗯......很奇怪。我想恢复一些实际上已经改变和隐藏的变化”
我以为已经丢失了这些更改,所以试图做git apply 8d5ee9...af3
,但没有任何改变。
“该死的!也许在藏匿处什么也没有,因为一些奇怪的原因!”
幸运的是,我总是保留终端的所有日志,然后回到git diff
,看到我发生了什么变化。
我查看了文件,我看到已经集成在代码中的隐藏更改,但是git status
没有告诉我我有未分段的文件。
“什么?发生了某种反叛/合并,我甚至不知道何时以及如何发生?”
所以我尝试git checkout master
(因为隐藏的更改应该与它分离),我得到了一个
Warning: you are leaving 109 commits behind, not connected to any of your branches: 8d5ee94 WIP on (no branch): 2cffcf8 uses the service be1466a index on (no branch): 2cffcf8 uses the service 2cffcf8 uses the service b8d40bf Added pagination ... and 105 more. If you want to keep them by creating a new branch, this may be a good time to do so Switched to branch 'master'
此时我停下来了解发生了什么。
“到底是什么?为什么我有这么多分离的提交?我确定他们必须来自'主'分支.....但是,怎么样?” < / p>
所以我仍然从分支'master'中的藏匿处进行更改;我不明白..并且不知道如何像以前那样分离隐藏的变化,并将它们从实际的主分支再次划分
我在机器A和B上都尝试了git pull --rebase
+ git checkout master
,但是存放在B上的文件仍然与A上的相同文件不同。
我最初的情况怎么样?
我真的很困惑该怎么做。
git status
(主 - >无提交) git stash pop
(主 - >无提交)(丢弃的存储{0}:提交a1b2c3d4)
(我希望我的更改显示为非暂存文件)git stash apply a1b2c3d4
(没有看到任何改变我试图应用它)git checkout a1b2c3d4
(NoBranch,在a1b2c3d4上分离了HEAD - &gt;无法提交)
(没有看到任何改变,我愚蠢地试过这个)git checkout master
(主 - >无提交)
(最后一件蠢事。所以现在一切都合并了)git status
我想回到第一个命令状态。
答案 0 :(得分:1)
我找到了行为的原因。
一位在机器B上工作的同事提交了存储中的更改,即使我不知道为什么目录没有被清理(也许它移动了文件并且可能是从其他地方提交的,机器C )。 无论如何,我存放了暂存的文件(因为没有丢失其他人的未知工作),这些文件对应于已经提交的更改。 因此,拉动最近的提交确实已经得到了我试图从藏匿处恢复的更改。
我可能在控制机器A上的文件时犯了一些错误,我没有看到更改已经存在。
抱歉浪费你的时间。
而且我建议每个人都吃点东西,而不是一直与饥饿一起解决问题:)