我进了一个分店做了一些工作.我想进入另一个分支,但不想承诺,所以我做了git stash.然后我做了git checkout <otherbranch>.我在那里做了一些工作,就像在第一个分支中一样,我想在提交工作之前切换它.所以我git stash也在那里.我切换回第一个分支并尝试解除它(git stash pop)认为它将从该特定分支获取存储.我感到惊讶的是它从<otherbranch>最近的藏匿中释放了藏匿物.我的印象是存储是特定于分支的,但是这种行为表明整个本地存储库只有一个存储.
是git stash分支特定的还是整个存储库?如果是整个存储库,我可以将选项传递给它以使其特定于分支吗?
tor*_*rek 29
要查看当前的存储堆栈:
git stash list
Run Code Online (Sandbox Code Playgroud)
要从堆栈中选择特定的存储,请按上面所示进行参考.stash@{number}
如果您希望行为是每个分支,则可以在分支上进行提交(或多次提交).您可以随时"unmake"提交(或多个)后(例如,使用git reset,无论是--soft或--mixed;看到git的重置文件 ;或者git rebase -i只保留最后的"真实"而丢弃的临时提交(S)).
(要真正模拟,git stash您至少需要两次提交,一次用于索引状态,一次用于工作树状态.但是,如果您不打算保存并恢复索引状态,则可以只git add -A使用整个工作树状态并提出,在临时提交,或者git stash是一个shell脚本,所以你可以复制并很容易地修改它,使其在默认情况下每个分支上工作,使用,例如,它的工作名称空间,而不是单一的全球性的整个回购.你仍然可以通过明确命名将一个藏匿处从一个分支带到另一个分支.)refs/pb-stash/branchrefs/stash
Ada*_*dam 20
我不确定为什么这里的每个答案都建议用commit+模拟 stash reset。Stash 非常好用。
所以这里是 stash 工作流程:
每当您必须切换分支而您还没有准备好提交时,请将您的更改保存到堆栈中
git stash save "Your custom stash message"
Run Code Online (Sandbox Code Playgroud)
(如果您不想要自定义消息,只需使用git stash)。
当你返回一个分支时,检查存储
git stash list
Run Code Online (Sandbox Code Playgroud)
如果您在分支上,FixIssue0203您可以使用 usegit stash pop因为这将应用顶部stash@{0}并将其从存储中删除。
但是,如果您在分支中,ImproveReadme您应该首先应用 stash 1 git stash apply stash@{1},然后从 stack 中删除 stash 1 git stash drop stash@{1}。
就是这样!
Tre*_*ith 12
git stash 不是按分支的。
git stash(当您有很多隐藏物和分支时,它很容易丢失)git commit将未完成的代码保存在您的分支中,当您准备完成代码时,执行一个git reset ${COMMIT_HASH_VALUE}将未完成的代码取回git commit和git reset使用时一起正确地可以模拟git stash为一个特定分支这是一个现实生活中常见的场景,它演示了commitand reset命令的价值和用法:
git commit在功能分支X上执行
COMMIT_HASH_VALUE备后用git reset ${COMMIT_HASH_VALUE}(FYI默认git resetIS --mixed)
| 归档时间: |
|
| 查看次数: |
17856 次 |
| 最近记录: |