标签: git-cherry-pick

任何人都可以解释一下git cherry-pick <sha>的作用吗?

正如我在这里所关注的那样,我在另一个本地分支中有旧提交[包含abc.cpp,def.cpp].

几个月后我想要使用这些更改,但在我目前的分支中,abc.cpp已升级.那么如果我挑选那么它会将旧的abc.cpp的变化整合到新的abc.cpp [最近的工作目录副本]中吗?

git git-cherry-pick

5
推荐指数
1
解决办法
4816
查看次数

Cherry pick仅提交触摸特定文件的提交

什么是简单的方式来请求"樱桃选择从另一个分支只有触摸特定文件的提交"?即该命令git log ..other-branch afile给出了触摸"afile"的其他分支中的未合并提交列表; 如何请求在当前分支上重播同一组提交?

git git-cherry-pick

5
推荐指数
1
解决办法
521
查看次数

在标签上挑选樱桃会影响后者吗?

在发布时,我检查了以前发布的标签,并在其中挑选了新项目(使用git cherry-pick <commit-id>)。然后,我使用git tag <tag-name>.

这会影响我精心挑选的旧标签吗?

git git-tag git-cherry-pick

5
推荐指数
1
解决办法
7026
查看次数

git cherry-pick 无需结帐?

Merge、update 和 pull Git 分支上接受的答案中而不使用 checkouts

如果分支 B 会导致非快进合并,则不能在不先检查 A 的情况下将分支 B 合并到分支 A 中。这是因为需要一个工作副本来解决任何潜在的冲突。

我推断并说您也git cherry-pick不能到达未结账的目的地是否正确?

git cherry-pick git-cherry-pick

5
推荐指数
0
解决办法
1597
查看次数

提交时`.git/CHERRY_PICK_HEAD`有什么区别?

注意:这是对我之前的帖子(现已删除)的改写。重新措辞旨在为帖子提供不同的重点。


运行后git cherry-pickgit报告有冲突。我解决了冲突,然后跑了git cherry-pick --continue。此时,$GIT_EDITOR弹出一个COMMIT_EDITMSG缓冲区,其中预先填充了精选提交的原始消息以及一些附加信息,其中包括警告:

# It looks like you may be committing a cherry-pick.
# If this is not correct, please remove the file
#   .git/CHERRY_PICK_HEAD
# and try again.
Run Code Online (Sandbox Code Playgroud)

我检查了如果我“删除”(实际上只是暂时重命名).git/CHERRY_PICK_HEAD文件会发生什么。这产生的直接外部影响是|CHERRY-PICKING从我的git-aware 提示中删除指示。

除了我的提示中的这一变化,以及COMMIT_EDITMSG缓冲区中预先填充的信息可能存在一些差异之外,在有或没有.git/CHERRY_PICK_HEAD文件的情况下执行提交会有什么区别?


更准确地说,我试图在这里比较两种情况。

在第一个场景中,我运行

% git cherry-pick --continue
Run Code Online (Sandbox Code Playgroud)

...并且(无视前面引用的警告)我像往常一样继续提交。

在第二种情况下,我运行

% rm .git/CHERRY_PICK_HEAD
% git commit
Run Code Online (Sandbox Code Playgroud)

...并像往常一样继续提交。

(假设我在两种情况下都使用相同的提交消息。)

这两种情况的最终结果会有什么不同?

git cherry-pick git-cherry-pick

5
推荐指数
1
解决办法
1385
查看次数

“--abort”和“--quit”作为“cherry-pick”的定序器子命令有什么不同?

根据doc,在 的三个音序器子命令中cherry-pick,我们有这两个,对我来说,奇怪地相似:

--quit
Run Code Online (Sandbox Code Playgroud)

忘记当前正在进行的操作。可用于在樱桃挑选或恢复失败后清除音序器状态。

--abort
Run Code Online (Sandbox Code Playgroud)

取消操作并返回前序状态。


到目前为止,我一直在使用--abort,而且效果很好。什么--quit是不同/优选的用例?

git git-cherry-pick

5
推荐指数
2
解决办法
735
查看次数

我可以删除我从中选择了 Git Cherry 的分支吗

我从我不再需要的分支中精心挑选了一个提交。

如果我精心挑选了一个在删除分支后将不再存在的提交,这是否是不好的形式/是否会出现任何问题?

git github cherry-pick git-cherry-pick

5
推荐指数
1
解决办法
2823
查看次数

为什么git cherry-pick产生的冲突少于git rebase?

我经常变本加厉。有时,这rebase特别有问题(很多合并冲突),在这种情况下,我的解决方案是cherry-pick将单个提交提交到master分支上。我这样做是因为几乎每次我所做的冲突数量都大大减少了。

我的问题是为什么会这样。

为什么合并时的合并冲突cherry-pick比合并时的冲突少rebase

在我的心理模型中,a rebase和a cherry-pick在做同样的事情。

变基示例

A-B-C (master)
   \
    D-E (next)

git checkout next
git rebase master
Run Code Online (Sandbox Code Playgroud)

产生

A-B-C (master)
     \
      D`-E` (next)
Run Code Online (Sandbox Code Playgroud)

然后

git checkout master
git merge next
Run Code Online (Sandbox Code Playgroud)

产生

A-B-C-D`-E` (master)
Run Code Online (Sandbox Code Playgroud)

樱桃精选示例

A-B-C (master)
   \
    D-E (next)

git checkout master 
git cherry-pick D E
Run Code Online (Sandbox Code Playgroud)

产生

A-B-C-D`-E` (master)
Run Code Online (Sandbox Code Playgroud)

根据我的理解,最终结果是相同的。(D和E现在掌握了干净的(直线)提交历史记录。)

为什么后者(樱桃采摘)产生的合并冲突会比前者(变基)产生的合并冲突少?

更新更新更新

我终于能够重现此问题,现在我意识到我可能已经简化了上面的示例。这就是我能够复制的方式...

说我有以下内容(请注意额外的分支)

A-B-C (master)
   \
    D-E (next)
       \
        F-G (other-next)
Run Code Online (Sandbox Code Playgroud)

然后我执行以下操作

git checkout next
git rebase master …
Run Code Online (Sandbox Code Playgroud)

git git-rebase git-cherry-pick

4
推荐指数
1
解决办法
292
查看次数

git cherry-pick 不获取远程分支

我在这里遇到了一些问题,我想从我的系统本地不存在的 git 存储库中挑选一个提交。

例如:https : //github.com/DespairFactor/N6/commit/ecea4ab6d3d8bb4122522398200f1cd2a06af6d5

通常的樱桃采摘程序包括做

1) git remote add <RepoName> <repoURL>

2)git fetch <RepoName>它会下载一个副本,但不会合并到您自己的本地存储库中。

3)git cherry-pick <commit SHA>樱桃挑选完成。

我的下载速度非常慢(1 mbps),而且我没有足够的时间为 1 次提交下载整个 repo。对不起,如果这个问题已经被问过并回答过。

git github cherry-pick git-cherry-pick

4
推荐指数
1
解决办法
1083
查看次数

Git 樱桃选择创建重复提交

在从一个分支到另一个分支挑选一些提交之后,我仍然会在稍后创建拉取请求时看到提交。

比如说,有一个 git 项目,它有两个分支: Dev , Release 。

并且提交历史按以下顺序排列。

DEV : a1, a2, a3, a4, a5, a6

释放:a1,a2

现在,如果我单独从 Dev 到 Release 挑选提交 a3 和 a5。现在提交历史将如下所示。精选的提交将具有新的 SHA(b1 和 b2)。

释放:a1、a2、b1、b2。

稍后,如果我尝试创建从 Dev 到 Release 分支的拉取请求,我仍然会看到提交 a3 和 a5。

但是在这种情况下,我如何才能找到这两个分支之间提交的差异?

我看到一些文章说“rebase”,但无法理解其背后的逻辑。

git github git-cherry-pick

4
推荐指数
1
解决办法
3517
查看次数

标签 统计

git ×10

git-cherry-pick ×10

cherry-pick ×4

github ×3

git-rebase ×1

git-tag ×1