这是情况:
1. 我在A分支上进行了更改。 2. 在A分支上运行了 `git stash` 命令。 3. 切换到B分支并在B分支上进行了更改。 4. 在B分支上运行了 `git stash` 命令。 5. 切换回A分支。 6. 在A分支上运行了 `git stash pop` 命令。 7. 在这个列表的第7个步骤之后,我在存储之前对分支A所做的更改没有恢复,而我在分支B上所做的更改弹出到了分支A上。我在分支A上使用了 `cmd z`,文件回到了先前的状态,其中包括我所做的更改。似乎分支A的HEAD移动到了分支B的HEAD。当我在分支B上使用 `git checkout B` 和 `git stash pop` 时,同样的事情发生了:分支B拥有分支A上所做的所有更改,但不包括我在分支B上所做的更改。我再次使用了 `cmd z` 回滚到我需要的分支状态。
这给我带来了很多问题,直到我被允许再次提交代码到项目中(由于提交会自动推送到服务器,并且经理不希望在运行一些测试之前将新代码放入服务器,因此在一段时间内没有人能够提交)。我该如何只弹出在分支上所做的更改,而不是其他分支上所做的更改呢?
1. 我在A分支上进行了更改。 2. 在A分支上运行了 `git stash` 命令。 3. 切换到B分支并在B分支上进行了更改。 4. 在B分支上运行了 `git stash` 命令。 5. 切换回A分支。 6. 在A分支上运行了 `git stash pop` 命令。 7. 在这个列表的第7个步骤之后,我在存储之前对分支A所做的更改没有恢复,而我在分支B上所做的更改弹出到了分支A上。我在分支A上使用了 `cmd z`,文件回到了先前的状态,其中包括我所做的更改。似乎分支A的HEAD移动到了分支B的HEAD。当我在分支B上使用 `git checkout B` 和 `git stash pop` 时,同样的事情发生了:分支B拥有分支A上所做的所有更改,但不包括我在分支B上所做的更改。我再次使用了 `cmd z` 回滚到我需要的分支状态。
这给我带来了很多问题,直到我被允许再次提交代码到项目中(由于提交会自动推送到服务器,并且经理不希望在运行一些测试之前将新代码放入服务器,因此在一段时间内没有人能够提交)。我该如何只弹出在分支上所做的更改,而不是其他分支上所做的更改呢?
git stash list
查看这些描述。然后例如使用git stash pop stash@{1}
从堆栈中检索第二个项目。 - Raffaelgit stash
,我建议你只在简单的事情上使用它。当事情变得更加复杂时,我会选择临时分支。即使有适当命名的存储条目,也很容易迷失方向。 +++ 还有git stash show -p stash@{1}
可以查看详细信息和类似的内容,但使用分支更简单。 - maaartinus