gpt4 book ai didi

git - checkout 和 cherry-pick 有什么区别?

转载 作者:太空狗 更新时间:2023-10-29 14:31:14 27 4
gpt4 key购买 nike

我已经从远程存储库中获取了一个特定的错误修复。现在我有两个选择:

  1. git checkout FETCH_HEAD
  2. git cherry-pick FETCH_HEAD

而且我不确定在这两种情况下发生了什么。我已经尝试了第一个版本,在我看来,通过这种方式我将更改从远程存储库获取到我的本地存储库,但我的本地更改似乎丢失了(我没有在代码中看到它们)。然而,第二个选项似乎可以满足我的需要(我在代码中看到了我的更改和来自远程存储库的更改)。

虽然看起来我得到了我需要的东西,但我仍然想更好地了解这两种情况下发生的情况。

我看过this问题和答案,但我不明白答案,因为我不知道以下短语的意思:

  1. “工作目录反射(reflect)了 X”
  2. “X 获取 Y”

最佳答案

您是对的 - 在第一个命令中,您只是切换到远程更改,而在最后一个命令中,您将远程更改应用到当前分支。

除了用于不同的任务之外,最显着的区别是 git-cherry-pick 更改分支的历史,而 git checkout 仅用于跳转到分支历史中的特定时间点(特定提交),而不更改它。

Switch branches or restore working tree files

git-checkout 用于遍历您的分支历史记录,将 HEAD 变量指向特定的提交。也用于分支之间的切换

Apply the changes introduced by some existing commits

git-cherrypick 在另一种方式上用于将来自另一个分支的单个提交放置在您的分支历史记录之上。

例如,假设您有以下分支:

master:
-------
commit1 1ae4d13257425e6a0d67f35fa13e9d76c4e6987b
Date: Thu Feb 1 15:59:15 2018 +0200


commit2 cbc7776d5542f59e1e6c7c8a22add729b
Date: Thu Feb 1 15:44:41 2018 +0200

branch:
-------
commit1 c591438ff5abbcebcbf9c06f47de7aa840
Date: Thu Feb 1 15:45:24 2018 +0200

你可以切换到 branch 分支使用:

git checkout branch

并且从 branch 您可以执行以下操作:

git cherry-pick 1ae4d132

在分支的 commit1 之上播放 master 的 commit1,使其成为:

branch:
-------
commit1 1ae4d13257425e6a0d67f35fa13e9d76c4e6987b
Date: Thu Feb 1 15:59:15 2018 +0200

commit1 c591438ff5abbcebcbf9c06f47de7aa840
Date: Thu Feb 1 15:45:24 2018 +0200

您可以使用遍历您的历史记录并使用checkout 查看它的单一状态:

 git checkout c591438ff5

这将指向 HEAD 以提交 c591438ff5,向您展示在您选择之前分支的状态(但它不会改变历史)

关于git - checkout 和 cherry-pick 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48619813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com