Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git cherry pick--继续,'--无编辑';选项_Git_Git Cherry Pick - Fatal编程技术网

git cherry pick--继续,'--无编辑';选项

git cherry pick--继续,'--无编辑';选项,git,git-cherry-pick,Git,Git Cherry Pick,我正在编写一个迁移git repos的脚本。我在樱桃树上跑步 git add . git cherry-pick --continue 这将启动vim,提示我保存提交消息并冻结脚本。我正在寻找一个命令行选项,如--no edit或--cerial,来解决这个问题 丑陋的终端黑客可能也会受到欢迎;) 您可以使用: git cherry-pick <sha1> --no-commit git cherry pick--不提交 解决冲突后,可以从脚本提交冲突 当然,您可以设置cher

我正在编写一个迁移git repos的脚本。我在樱桃树上跑步

git add .
git cherry-pick --continue
这将启动vim,提示我保存提交消息并冻结脚本。我正在寻找一个命令行选项,如
--no edit
--cerial
,来解决这个问题

丑陋的终端黑客可能也会受到欢迎;)

您可以使用:

git cherry-pick <sha1> --no-commit
git cherry pick--不提交
解决冲突后,可以从脚本提交冲突

当然,您可以设置cherry pick策略选项,通过接受我们/他们的代码自动解决冲突

否则,您将得到标准的git冲突标记

+<<<<<<< HEAD
         some code
+||||||| parent of 4d64ec6... test commit
+        first version code
+=======
+        second version code
+>>>>>>> 4d64ec6... test commit
+>4d64ec6。。。测试提交
在执行git add之前,您需要解决所有冲突。因此,您不应该使其完全自动化

也就是说,要跳过编辑提交消息,只需将编辑器设置为不执行任何操作并报告成功的命令。在类Unix系统上,理想的方法是
true
命令。因此:

git -c core.editor=true cherry-pick --continue
我会成功的。(您也可以使用任何环境变量
GIT_EDITOR
VISUAL
EDITOR
;事实上,如果设置了任何环境变量,则必须使用它们而不是
core.EDITOR
,因为顺序是:如果设置了,则使用
$GIT_EDITOR
;如果设置了,则使用
$VISUAL
;否则使用
$EDITOR
如果设置了;否则使用
core.editor
如果设置了;否则使用此版本Git中内置的任何内容。)

来自:

对于Git 2.32(2021年第2季度),不再需要tihs

git cherry pick
/
revert
带或不带
-[no-]edit
未按预期生成编辑器(例如冲突后仍要求“
revert--no edit
”),该问题已用git 2.32(2021年第2季度)更正

参见作者(2021年3月31日)
(于2021年4月8日合并)

:修复cherry pick和revert消息的编辑处理 报告人:Renato Botelho
签字人:以利亚·纽伦
审核人:Johannes Schindelin

save\u opts()
应保存任何非默认值。
本打算这样做,但由于struct
replay\u选项中的大多数选项默认为0,因此它只保存非零值。
不幸的是,这并不总是适用于选项。编辑。
粗略地说,options.edit的cherry pick默认值为0,revert默认值为1。
使
save\u opts()
记录与默认值不同的值

选项。编辑也过于简单化;我们有两个以上的案例。
以前存在的行为如下所示:

Non-conflict commits    Right after Conflict
Edit iff isatty(0)      Edit (ignore isatty(0))
No edit                 See above
Edit (ignore isatty(0)) See above
(*)                     See above

(*) Before stopping for conflicts, No edit is the behavior.  After
    stopping for conflicts, the --no-edit flag is not saved so see
    the first two rows.
但是,预期的行为是:

Non-conflict commits    Right after Conflict
Edit iff isatty(0)      Edit iff isatty(0)
No edit                 Edit iff isatty(0)
Edit (ignore isatty(0)) Edit (ignore isatty(0))
No edit                 No edit
为了获得预期的行为,我们需要将options.edit更改为三种状态:unspecified、false或true

  • 当被指定时,我们遵循它所说的
  • 未指定时,我们需要检查正在创建的当前提交是否正在解决冲突,以及咨询options.action和
    isatty(0)

    此时,添加一个压缩选项的
    should_edit()
    实用程序函数。根据非冲突情况的附加信息,将
    向下编辑为布尔值
continue\u single\u pick()
是负责冲突后恢复的函数,无论选择的提交是一个提交还是多个提交。
使此函数在所有情况下都停止假定编辑行为,以便它能够正确处理
!isatty(0)
和不编辑提交消息的特定请求


我不清楚您发布的声明,所以我运行了一个测试,发现“git cherry pick--continue”会冻结,直到合并冲突得到解决。那么如何解决它们呢?我在项目根目录中解决与git add.
的冲突。我想接受所有更改,然后运行
git cherry pick--continue
@HaraldNordgren我对
git rebase
也有同样的问题,我更喜欢fits选项(使用
-c
),因为没有副作用。此外,它还可以很容易地转换为别名。@JosephK.Strauss:注意,您可以使用shell别名设置
GIT\u编辑器
,例如,
alias foo='GIT\u EDITOR=true GIT cherry pick--continue'
,或者通过使用
的GIT别名
来调用shell。但是,如果
-c core.editor=true
足够,也可以。这种技巧在交互式rebase中也可以很好地工作:
git-c core.editor=true rebase--继续
Non-conflict commits    Right after Conflict
Edit iff isatty(0)      Edit iff isatty(0)
No edit                 Edit iff isatty(0)
Edit (ignore isatty(0)) Edit (ignore isatty(0))
No edit                 No edit