我是GitHub的新手.有人提交了5次提交的拉取请求.但是其中3个有一点虫子,所以必须等待.如何为我的项目挑选其中的2个?
我运行以下命令:
git cherry-pick SHA --strategy-option theirs
Run Code Online (Sandbox Code Playgroud)
并得到这样的冲突等待手动解决:
deleted by us: SOME_FILE
Run Code Online (Sandbox Code Playgroud)
有没有办法让git通过添加我们删除的文件自动解决此类冲突?
我正在尝试找到一种方法来在挑选它们时检查提交。不幸的是,我找不到与cherry-pick操作一起使用的 git hook。在精心挑选的提交上执行脚本的可能解决方案是什么?
什么是词的意思樱桃在git的樱桃?
除了水果之外,我只看到樱桃采摘表达中的单词(也出现在带有git-cherry-pick的git中),这意味着有选择地选择一些东西(对吧?).
对樱桃来说,樱桃中git-cherry的水果与樱桃采摘无关.
我是巴西人,所以英语的微妙之处有时并不那么明显.
据我所知,默认情况下,该cherry-pick命令接受提交并将其置于当前分支之上.是否有可能cherry-pick在Git中提交并将其置于当前提交之下?
在我的项目中,我几个月前发布了一个版本.在那个版本之后,我在master分支上做了很多更改.
如果我在最后一个版本中遇到一些错误,我会在主分支上修复它们,然后将它们挑选到我在上一版本中创建的分支.然后我可以提供一个只有bug修复的新版本,而不释放master分支上未完成的工作.
当我试图挑选一个错误修复发布分支时,我遇到了合并冲突.
据我所知,cherry选择某个提交会向目标分支引入一个新提交,并在提取的提交中完成更改.
但是,当我尝试修复合并冲突时,似乎git已经在master分支上应用了更改,这些更改不是由我选择的提交提交给我的发布分支.樱桃选择提交只引入了冲突文件的几行.但是,当我尝试解决冲突时,我看到该文件中还引入了其他几行,这些行被添加到具有不同提交的主分支中.
有人可以解释为什么我的发布分支中引入了除了樱桃挑选提交之外的提交更改吗?
我正在尝试从两个不同的工作分支中挑选更改,即我想挑选从分支linear到分支的最后 5 个提交diagonal。
git cherry-pick -n -x linear~6..linear
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,第一个精心挑选的提交存在一些合并冲突。我把它们找出来,例如用git status,解决它们并用 更新索引git add。现在我想继续剩下的但是
git cherry-pick --continue`
Run Code Online (Sandbox Code Playgroud)
导致(抱歉是翻译的,英文错误信息可能略有不同):
error: Your local changes will be overwritten by "cherry-pick".
Note: Stash your changes by using "stash" in order to continue.
fatal: "cherry-pick" failed.
Run Code Online (Sandbox Code Playgroud)
我做错了什么?如何解决冲突,但仍然只在一次提交中从多个提交中进行挑选?这对我来说很重要,因为其中一些提交将通过跟随提交被撤销。
这可能是“How to do git cherry-pick --continue in SourceTree?”的重复。但我没有看到我的问题在那里得到回答。
假设如下:
HEAD/master
|
A<--B<--C<--D<--E<--F<--G<--J
^
official
Run Code Online (Sandbox Code Playgroud)
哪里official有分店。
我想挑选 2 个提交到official分支,例如E,J
这两个提交都是影响相同 3 个文件的修复。
当我这样做时git cherry-pick E一切顺利,但当我这样做时,git cherry-pick J我遇到了一些冲突。
查看差异,我意识到我还需要挑选提交 F,它在这 3 个文件中的两个文件中进行了更改,这些更改基本上是方法定义更改,并且J是在此基础上完成的。
因此,只需执行git cherry-pick F && git cherry-pick J
问题即可轻松解决:
如果我不知道在这些文件中所做的更改并且提交 F 是更改许多文件的大提交:是否有另一种方法可以确定我们尝试选择的提交取决于哪个提交而无需手动执行 git 日志在文件上并通过提交提交?
我正在尝试进行一些更改,但我不想在这个分支中提交它们,我只想在本地拥有它们。
为此,我正在使用
git cherry-pick <hash> --no-commit
Run Code Online (Sandbox Code Playgroud)
但是,这会自动将它们添加到舞台,然后,我必须使用手动重置它们
git reset HEAD <files>
Run Code Online (Sandbox Code Playgroud)
git 没有选项可以让cherry pick 不提交,也不添加到索引中吗?
就像是:
git cherry-pick <hash> --no-commit --no-stage
Run Code Online (Sandbox Code Playgroud)
我知道这个技巧会做我想要的,但我必须在提交中指定所有文件:
编辑
也试过这个,但它也被添加到索引中。
git checkout hash -- <list of files>
Run Code Online (Sandbox Code Playgroud)
而这些文件,可能不会共享相同的公共路径。我正在尝试使其自动化
git-cherry-pick ×10
git ×9
cherry-pick ×4
commit ×1
git-am ×1
git-branch ×1
git-cherry ×1
git-diff ×1
git-log ×1
git-merge ×1
github ×1
merge ×1
pull-request ×1