是不是可以用干跑git stash pop?

inf*_*ged 4 git

git stash pop是否会盲目地覆盖本地更改或将它们与本地更改合并?

如果它合并,则可能存在合并冲突.有没有办法提前知道,使用--dry-run或其他方法会有合并冲突?

我可以找到--dry-run使用git fetch和git push但不能使用git stash pop.

编辑在几个答案后专门解释问题 -

我有一种情况,我有一个大约几天的git藏匿处.git stash完成之后,本地分支已被修改.这意味着,本地文件和存储文件之间存在差异(跟踪所有文件,并且在存储或本地分支中没有未跟踪的文件).

问题是,我想,一旦我执行git stash apply,在复杂的合并操作的情况下本地更改将处于冲突状态,因此无法撤消(因为没有撤消合并操作).git checkout不会有帮助,因为本地分支有本地更改.我的理解是否正确?

我想在做一个git stash apply之前做一个干运行之前看结果.所以,在我做任何事情并在之后哭泣之前,我想找到一个优雅的解决方案来解决这个问题.

Moh*_*din 6

是不是可以用干跑git stash pop?

我不确定干运行,但你可能会apply藏匿pop它而不是它(保留一个藏匿的副本,以防更改不适合,并且你想再次应用它们):

git stash apply
Run Code Online (Sandbox Code Playgroud)

然后观察结果,如果你不喜欢它们,只需checkout改变以前的状态,或解决冲突ours.否则,他们改变是好的,解决它们theirs.

git stash apply不会覆盖未跟踪的文件(在提交未提交的文件之前,它将自动应用).换句话说,git stash pop/apply是一个安全的过程,不会造成任何数据丢失.

根据问题的变化进行更新:

我想,一旦我执行git stash apply,本地更改将处于冲突状态.

不,这不会发生,但如果你提交了更改.即,无论如何,本地更改不会被覆盖或丢失.Git会抱怨你的更改必须在你申请藏匿之前提交.看到这个,这里我尝试应用stash,其中我的一个更改没有被提交(并且它们将受到存储数据的影响):

错误:对以下文件的本地更改将被merge覆盖:
file.txt
请在合并之前提交更改或存储它们.
中止

当你提交它们时,是的你将能够应用存储,在这里你可能会遇到冲突.


因为没有撤消合并操作

当然有,只需恢复合并提交:git revert --no-commit <MergeCommitHash>.

我再次确认这git stash apply是一个安全的过程.它将拒绝覆盖任何未经修改的更改(即,您可以安全地丢失任何数据),如果您合并,并且结果不正常,只需还原合并提交.

如果有任何事情仍然不清楚,我会尽力帮助你.