gpt4 book ai didi

git - 如何解决所有有利于刚刚 pop 的存储的 merge 冲突?

转载 作者:太空狗 更新时间:2023-10-29 13:36:16 25 4
gpt4 key购买 nike

假设在运行 git stash pop 时,收到一条 CONFLICT 消息(由于自动 merge 尝试失败)。

有没有一种快速的方法告诉 git 解决所有冲突以支持刚刚 pop 的存储?

编辑:我刚刚编写了以下脚本来测试所提出的两个备选方案。它

  1. 在目录 /tmp/$1 中创建一个新的 git 仓库,并 cd 到它;
  2. 创建文件的第一个版本并提交;
  3. 对文件进行一些修改并保存文件;
  4. 对文件进行其他更改(包括冲突和非冲突更改),并提交这些更改;最后
  5. 打开储藏室

这为比较两种提议的方法奠定了基础。这是脚本:

shopt -s expand_aliases
alias gcommit='git commit -q --allow-empty-message -m ""'
alias gmerge='git merge -q --no-edit'

TESTDIR=/tmp/$1
rm -rf "$TESTDIR"
mkdir -p "$TESTDIR"
cd "$TESTDIR"

git init -q
touch chiasmus.txt
git add . && gcommit

cat <<EOF > chiasmus.txt
ask

what

...
EOF
gcommit -a

cat <<EOF > chiasmus.txt
ask
not
what
your country can do for you
...
EOF
git stash -q

cat <<EOF > chiasmus.txt
quote:
ask

what
you can do for your country
...
jfk
EOF
gcommit -a

git stash pop -q

然后我跑了

% bash gittest.sh checkout
% bash gittest.sh merge

% cd /tmp/checkout
% git checkout --theirs $(git diff --name-only --diff-filter=U)

% cd /tmp/merge
% git reset -q --hard
% git merge -q --no-edit --squash -Xtheirs stash
Auto-merging chiasmus.txt
Squash commit -- not updating HEAD
Automatic merge went well; stopped before committing as requested

% diff /tmp/{checkout,merge}/chiasmus.txt
0a1
> quote:
5a7
> jfk

因此,看起来“checkout”选项确实丢失了非冲突更改。不过,碰巧的是,这个选项更符合我真正想要的,即让 git pop 的行为更接近我期望它做的事情:让我回到我运行时的位置 git 存储,期间。没有自动 merge 等。(IOW,我的问题,正如所问的那样,真的没有准确反射(reflect)我所追求的。就好像 meagar 以某种方式读懂了我的想法。)

最佳答案

只需自己进行 merge ,而不是 stash pop。存储提交的命名为 stash

git merge --squash -Xtheirs stash

关于git - 如何解决所有有利于刚刚 pop 的存储的 merge 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16449830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com