- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有问题要做
git stash pop
git checkout BRANCHNAME
最佳答案
TL;博士
使用git stash branch
创建新分支并应用存储:
git stash branch newbranch
git apply --index
(这意味着它将分别还原索引和工作树)。
git for-each-ref --format='%(refname:short)' \
--points-at $(git rev-parse refs/stash~1) refs/heads
git for-each-ref
特性)
git stash
所做的是使这两个(或三个)提交,但不将它们放在分支上。
master
或
develop
这样的分支名称只是指向其分支上的最后一次提交:
...--E--F--G <-- master
\
H <-- develop
git checkout
一个类似于
develop
的分支名称时,您告诉git:
HEAD
附加到分支名称,以便git知道您现在签出了哪个提交:
...--E--F--G <-- master
\
H <-- develop (HEAD)
H
的提交是当前的或
HEAD
提交,正如名称
develop
所指。
git commit
将其冻结为新提交),git将以当前提交为其父级写入新提交,然后更新分支名称:
...--E--F--G <-- master
\
H--I <-- develop (HEAD)
HEAD
仍然附加到分支名称,但现在分支名称标识commit
I
,而不是commit
H
。
git stash
所做的是使两个提交一个用于索引,一个用于没有分支名称的工作树。相反,git使用名称
refs/stash
来查找
w
提交(而
w
同时查找原始提交和
i
提交):
...--E--F--G <-- master
\
H <-- develop (HEAD)
|\
i-w <-- refs/stash
i
和
w
提交后,
git stash
将运行
git reset --hard
,以将索引和工作树设置回与当前提交匹配的状态(此处为
H
)。
develop
,然后进行了一组不同的更改并进行了一个新的提交
git stash
?那么你有:
...--E--F--G <-- master
\
H--I <-- develop (HEAD)
|\
i-w <-- refs/stash
I
的分支名称,即使这是保证应用“cc>”的一个提交。
H
的commit
refs/stash
的内容),并且您现在运行了
I
,那么
HEAD
将要做的是附加一个新的分支名称
git stash branch recover
,以提交
git stash
,并签出该提交并通过附加
recover
使新分支成为当前分支:
...--E--F--G <-- master
\
H <-- recover (HEAD)
\
I <-- develop
H
操作的最后一步,应用并删除存储,以便索引恢复到您签出并运行
HEAD
时的索引方式,并且工作树恢复到您签出并运行
git stash branch
时的工作树方式。现在您可以完成
H
ing和
git stash
以进行新的提交:
...--E--F--G <-- master
\
H--J <-- recover (HEAD)
\
I <-- develop
H
仍然指向commit
git stash
?
...--E--F--G <-- master
\
H <-- develop
\
J <-- recover (HEAD)
git add
,以便更容易地将其与前面的关系图匹配起来)。这个设置没有问题。当然,如果您不想在这里使用
git commit
分支,您不必使用
J
,但它仍然有效。
develop
(
H
)或
J
(
recover
)生成的。应用(或弹出)这样的隐藏要求第三次提交中的文件不会与工作树中的文件冲突。一般来说,这意味着工作树不仅必须根据
git stash branch
是“干净的”,而且还必须根据使用适当选项运行
git stash save -a
所提供的意义是干净的。在这种情况下,即使
--all
有时也会失败。如果它真的失败了,它就不会让藏起来的东西爆炸。
关于git - 如何确定git stash的来源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53182142/
我如何在一个语句中删除最旧的存储(比如最旧的 5 个存储)而不是像这样做: git stash drop stash@{3} git stash drop stash@{4} git stash dr
我认为它们应该基本相同,但是当我尝试 $ git stash show -p stash@{N} 和 $ git show stash@{N} 后者显示了一些额外的提交信息,但实际差异要短得多。 (前
我一直在 git 的一个分支上工作,然后我藏了一些东西。在分支之间进行一些切换后,我回到了我的初始分支,进行了一些新的更改,将它们存储起来,然后意识到我想回到我第一次存储之前所做的更改。 所以我的问题
我使用 git 管理主目录中的配置文件。这是我的主目录中 .gitignore 文件的简化内容。 * !.bashrc !.bash_aliases !.gitignore 我在我的主目录 .bash
这个问题在这里已经有了答案: How to remove range of git stash? (6 个答案) 关闭 4 年前。 我有以下存储列表(git stash list): stash@{
我正在尝试使用以下方式应用特定的存储: git stash apply stash@{2} 但最终出现这个错误: fatal: ambiguous argument 'stash@': unknown
我想创建一个 git 包,它只包含我的存储中不在存储所基于的点的提交。我想这样做而不是发送每一次提交,因为我知道收件人已经有每一次提交,包括分歧点。 我得到这个: $ git bundle creat
我对我的分支进行了一些更改,然后意识到我忘记了我已经对所述分支进行了一些其他必要的更改。我想要的是一种将我 stash 的更改与当前更改 merge 的方法。 有办法吗? 更多的是为了方便,我最终放弃
不太确定发生了什么,但 git stash 似乎在一个糟糕的地方。 % git stash list stash@{0}: filter-branch: rewrite stash@{1}: filt
在 channel 入口条件中使用 stash:variables 时,我遇到了 Stash 问题。 模板.html {stash:embed name="pages" stash:paginate=
很多时候,在进行实验性更改之前,我需要拍摄当前工作目录的快照作为备份。这就是我所做的。 git stash git stash apply 但是我使用了一些监听磁盘更改的应用程序,它们会导致不需要的行
在我们的办公室中,我们使用没有服务器访问权限的 Stash(最大访问级别是创建分支),因此我们需要限制特定 Git 分支的推送。所以很简单,我们需要做的就是在发布后卡住我们的分支。 目前我们正在做的是
我更改了一些文件和一些新文件 git pull: 说我在几个文件中有冲突 我做到了: git stash git pull git stash pop 我预计会发生冲突,但没有发生。 相反,许多文件现
我有一个 Windows 命令脚本,旨在将 dev 分支 merge 到项目分支中。它首先读取当前分支名称、存储更改、获取并 merge 开发和项目分支,然后切换回原始分支并 pop 存储。 问题是
git stash 的联机帮助页说 pop [--index] [-q|--quiet] [] Remove a single stashed state from the stash list an
请理解场景: 1. 一天前创建了一个新分支,并将我的工作推送到那里。 2.整天忙于sublime,修改现有文件,创建一些新文件。 3. 没有添加或提交,但存储,切换到另一个分支,在那里提交并 pop
谁能解释一下它们之间的区别: git stash 对比: git stash save ? 谢谢! 最佳答案 来自docs : Calling git stash without any argume
首先我输入 git stash show。 然后输入s和tab,显示git stash show stash@{,到此为止一切正常。 但是我输入1和tab后,变成了git stash show sta
在使用 git add -p 对索引添加一些更改后,我发布了一个 git stash 但忘记添加 --keep-index。然后我就傻傻的做了一个git stash pop,我对索引的修改都没有了。有
使用 Xcode,在尝试将代码更新推送到 Github 时,系统提示我“Pull and Stash”。我不小心选择了好吧,现在我的Xcode项目是旧版本(最后一个推送到GitHub)。我怎样才能将其
我是一名优秀的程序员,十分优秀!