我正在寻找一个命令git stash只列出文件将被覆盖/冲突时,做一个git pull,所有的一次。我只是想接受所有的远程更改和处理所有的冲突,通过隐藏本地。我只是丢弃了冲突的本地更改或隐藏了所有更改(我想保留那些不冲突的更改),这并不理想。
git stash
git pull
fykwrbwg1#
Stop using git stash,而使用temporary commits。这样做没有什么特别的处理,只是简单的,普通的git命令:
git commit -am "==== before pull ====" # Temporary commit git pull --rebase git reset HEAD^ # Undo temporary commit
如果发生冲突,则使用use KDiff3解决冲突。上面的方法很简单,或者如果你想要更多的控制(比如pull带来了很多变化,你只想在开始时处理其中的一部分),你可以使用两个分支,somebranch(跟踪origin/somebranch)和somebranch.mywork,这是你正在做的未发布的工作。然后让somebranch严格遵循origin/somebranch,然后在此基础上对somebranch.mywork进行重新定基。当最终要推送来自somebranch.mywork的更改时,只需(快进)将这些更改合并到somebranch中并进行推送。
pull
somebranch
origin/somebranch
somebranch.mywork
jv2fixgn2#
编辑:不幸的是,我刚刚意识到生成的隐藏文件将同时包含冲突文件和非冲突文件。
这两个命令应该会得到您想要的结果:
git pull --autostash git diff --name-only --diff-filter=U | xargs git restore -s@ -SW
autostash选项将执行常规的git stash,然后执行git pull。然后,它将尝试应用隐藏。如果存在任何冲突,它将提示您解决它们。这里的技巧是,您可以完全放弃更改,而不是解决冲突。我给出的git diff命令将首先找到所有存在合并冲突的文件,然后将它们通过管道传输到git restore。您的本地存储库将处于以下状态:
autostash
git diff
git restore
2条答案
按热度按时间fykwrbwg1#
Stop using git stash,而使用temporary commits。
这样做没有什么特别的处理,只是简单的,普通的git命令:
如果发生冲突,则使用use KDiff3解决冲突。
上面的方法很简单,或者如果你想要更多的控制(比如
pull
带来了很多变化,你只想在开始时处理其中的一部分),你可以使用两个分支,somebranch
(跟踪origin/somebranch
)和somebranch.mywork
,这是你正在做的未发布的工作。然后让
somebranch
严格遵循origin/somebranch
,然后在此基础上对somebranch.mywork
进行重新定基。当最终要推送来自somebranch.mywork
的更改时,只需(快进)将这些更改合并到somebranch
中并进行推送。jv2fixgn2#
编辑:不幸的是,我刚刚意识到生成的隐藏文件将同时包含冲突文件和非冲突文件。
这两个命令应该会得到您想要的结果:
autostash
选项将执行常规的git stash
,然后执行git pull
。然后,它将尝试应用隐藏。如果存在任何冲突,它将提示您解决它们。这里的技巧是,您可以完全放弃更改,而不是解决冲突。
我给出的
git diff
命令将首先找到所有存在合并冲突的文件,然后将它们通过管道传输到git restore
。您的本地存储库将处于以下状态: