Git Stash 的 --theirs 相当于什么?

22

我对命令行使用git还比较新,但是我知道你可以使用--theirs和--ours来解决合并冲突 - 但是这似乎只能在git checkout中使用。当使用git stash pop/git stash apply时是否有类似的方法?也就是说,当我从存储中弹出时,它会创建一堆冲突。是否有一种方式可以立即一次性地解决所有冲突而不是单独解决每个冲突?

谢谢

2个回答

22

除了@r3mus-n0x的回答外,您还应该提供要检出的stash的索引。然后致命错误就不会发生。

$> git stash list
   stash@{0}: WIP on xxx: 466a845fe Fix: Deleted unnecessary comments

$> git checkout stash@{0} --theirs .

已确认使用 git 版本 2.28.0


工作得正是我所希望的。虽然在我的脑海里想着是否添加了一个新的/未跟踪的文件...但这不是什么大问题。 - Devin Rhode
@DevinRhode 未跟踪的文件在存储时与其他文件不同,它们存储在第三个父级中,您可以通过以下方式访问它们。或者您可以使用提交的 SHA:

第三个父级方法

$> git checkout stash@{0}^3 -- path/to/file

SHA 方法

首先找到未跟踪文件的 SHA:

$> git log --name-status stash@{0}

然后将其检出

#> git checkout SHA -- path/to/file
- creep3007
1
@DevinRhode,我在这里找到了一篇很好的描述帖子https://dev59.com/PX_aa4cB1Zd3GeqP5Zoq#23609023 - creep3007
在git 2.43.0中,命令git checkout 'stash@{0}' --theirs -- xxx.file出现错误fatal: '--merge', '--ours', or '--theirs' cannot be used when checking out of a tree,但在2.42版本中却能正常运行。 - undefined

5
您可以仍然使用git checkout命令,并将当前目录作为参数传入:
git checkout --theirs .

7
了解这点很有用,不幸的是这会导致一个错误: fatal: '--ours/--theirs' 不能在切换分支时使用 - Kieran
1
@Kieran,请提供导致您出现此错误的确切步骤。 - r3mus n0x

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接