Git bash帮助您进行更改并持续到结束

时间:2019-05-28 21:37:19

标签: bash git shell

我在git中有分支A和B。在这里,我正在挑选从分支A到分支B的更改。为此,我在分支A中创建了一个标签,并在其顶部进行了10次不同的提交。第一次提交已在分支A中被标记。

Git cherry pick命令将提交哈希作为输入。

为此,我有一个从这样的变量中的标签(在分支A中)开始的提交哈希(SHA)列表。

结帐分支A

commithash="$(/usr/bin/git log --boundary --pretty=oneline ${tag_name}.. | sed -e 's/- //'| cut -d ' ' -f 1)"

echo $commithash  ---gives spaces delimited commit hashes below. 

3f899d3eebce23ce6a1efd3b73ea0b328c8cf3e1 2180e9e8a0a73a5313e70317a20360e3314b2568 f001ad3d03b6a4231d370a3b389d6edbd14db73b 66049c094a0780df7a518ba75d677213168e5211 3a6e53426e85f36b8fc3e19586c18d1ee0abf31b 0b2698bf67ea0c29f0e76fe110a0b89ccbfdecd2 8aed2c998dcd38ac5e01be5d1004d7130b1b2458 07a65386ad8883bf5f774541461cce0779d8b0d2 b57d0d1cea1cf8a151f1244c30b8f08eb7583926

我现在切换到分支B

对于该变量中的每个提交哈希,我要运行命令。

git cherry-pick --strategy-option theirs $(for-each-commit-sha)

运行命令时,该命令成功,但以下情况失败。

A。如果cherry pick命令的输出具有以下输出,则脚本将失败,并且没有选择任何文件。

error: could not apply 34h5432.. adding dev text for cc in file
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'

下面是输出:

git status 

On branch B
You are currently cherry-picking commit 34h5432...
  (fix conflicts and run "git cherry-pick --continue")
  (use "git cherry-pick --abort" to cancel the cherry-pick operation)

Unmerged paths:
  (use "git add/rm <file>..." as appropriate to mark resolution)

    deleted by us:   cc.txt

在这种情况下,我想运行git add cc.txt或对“我们删除:”

之后提到的内容发出git add。
git add cc.txt 

git commit -m "adding file" 

然后继续对列表中的其余提交哈希值进行樱桃选择,直到最后一个。

从最后一次提交到第一次执行都需要完成樱桃选择。在这种情况下,以b57d0d1cea1cf8a151f1244c30b8f08eb7583926开头并以 3f899d3eebce23ce6a1efd3b73ea0b328c8cf3e1

我该怎么做?

commithash="$(/usr/bin/git log --boundary --pretty=oneline ${tag_name}.. | sed -e 's/- //'| cut -d ' ' -f 1)"

1 个答案:

答案 0 :(得分:0)

首先,git cherry-pick can take a range of commits:您不必手动列出这些提交。

第二,在进行添加和git checkout --theirs -- cc.txt之前,请先查看git cherry-pick --continue是否会还原您的文件。