git 一次应用多个存储
git apply multi stash at one time
我有两次存储,我需要一次提交两次存储。
我使用 git stash apply
应用最新的存储,但是当我再次使用它时,它抛出以下错误,
error: Your local changes to the following files would be overwritten by merge:
library/HQ/groupsql.sql
Please commit your changes or stash them before you merge.
Aborting
The stash entry is kept in case you need it again.
如何弹出这两个存储然后提交它们。
我认为你可以做到以下几点:
// to see the list of "stashes" (like every time when stash run 'git stash' a new entry is created in the list
> git stash list
// Lest assume you need stash@{1} and stash@{3} for the sake of example
> git stash apply stash@{1}
git commit -am "Whatever message"
> git stash apply stash@{3}
git commit --amend // to add changes from stash3 from the previous commit
最重要的是,每个存储应用完成后都会在本地分支上生成提交,但只要更改是本地的(未推送),您就可以更改历史记录
我建议你也阅读 This thread,它包含一些巧妙的技巧,从 git 2.11 开始可用:你可以使用 git stash apply n
而不是 git stash apply stash@{n}
另一个建议:您可以使用 git stash show stash@{3}
查看存储 3 中更改了哪些文件(如果您不确定要应用哪个存储)
虽然我从未见过在一个命令中执行此操作的功能。所以现在我的答案是 "no, you can't apply multiple stashes at once"。我很高兴能得到更有经验的 git 用户的证明。
当然,我认为您无法一次性完成,除非您已准备好为此编写自己的脚本。原因是您当前的 HEAD 和两个存储区可能有重叠的更改。即使您编写了一个脚本来为您执行此操作,您也很难解决冲突,因为您的脚本不知道要保留哪些更改以及要丢弃哪些更改。所以,正确的方法是按照书上的方法来做,即:
git stash apply stash@{1}
# resolve conflicts if any
git add .
git commit -m "<commit_message>"
git stash apply stash@{2}
我有两次存储,我需要一次提交两次存储。
我使用 git stash apply
应用最新的存储,但是当我再次使用它时,它抛出以下错误,
error: Your local changes to the following files would be overwritten by merge: library/HQ/groupsql.sql Please commit your changes or stash them before you merge. Aborting The stash entry is kept in case you need it again.
如何弹出这两个存储然后提交它们。
我认为你可以做到以下几点:
// to see the list of "stashes" (like every time when stash run 'git stash' a new entry is created in the list
> git stash list
// Lest assume you need stash@{1} and stash@{3} for the sake of example
> git stash apply stash@{1}
git commit -am "Whatever message"
> git stash apply stash@{3}
git commit --amend // to add changes from stash3 from the previous commit
最重要的是,每个存储应用完成后都会在本地分支上生成提交,但只要更改是本地的(未推送),您就可以更改历史记录
我建议你也阅读 This thread,它包含一些巧妙的技巧,从 git 2.11 开始可用:你可以使用 git stash apply n
而不是 git stash apply stash@{n}
另一个建议:您可以使用 git stash show stash@{3}
查看存储 3 中更改了哪些文件(如果您不确定要应用哪个存储)
虽然我从未见过在一个命令中执行此操作的功能。所以现在我的答案是 "no, you can't apply multiple stashes at once"。我很高兴能得到更有经验的 git 用户的证明。
当然,我认为您无法一次性完成,除非您已准备好为此编写自己的脚本。原因是您当前的 HEAD 和两个存储区可能有重叠的更改。即使您编写了一个脚本来为您执行此操作,您也很难解决冲突,因为您的脚本不知道要保留哪些更改以及要丢弃哪些更改。所以,正确的方法是按照书上的方法来做,即:
git stash apply stash@{1}
# resolve conflicts if any
git add .
git commit -m "<commit_message>"
git stash apply stash@{2}