Git checkout tree-ish ,帮我看看合并是否发生
Git checkout tree-ish , help me figure out if merge happens
我对 git checkout [<tree-ish>] [--] <pathspec>…..
所做的事情非常困惑
我的回购。包含文件夹,我有一个旧分支,我们称之为 old_branch。我想将 old_branch 中的一个文件夹合并到我的 dev
我像这样切换到我的开发人员:
git checkout dev
然后我想将一个文件夹从我的旧分支合并到 dev
git checkout <old_branch> --myfolder
问题:它是否与我的 dev 合并,或者只是替换我的 old_branch 中的代码并将其标记为 "merged"
自从我尝试做 git checkout -b new_branch
、提交然后做 git merge dev
之后,它告诉我没有任何变化(最新)。
检查代码时,我看到很多不应该发生的删除。
更新 1
我想合并(合并更改)我当前树 (dev) 中的一个子文件夹的内容与我在树中的一个子文件夹的内容 (old_branch)
更新 2
看来我问错了问题。真正的问题应该是如何在单一回购设置中合并子文件夹。我不认为有一种自动化的方法可以做到这一点。我最终手工完成了。
Does it do a merge with my dev , or simply replaces code from my old_branch and marks it as "merged"
git checkout
两者都不做。
I wanted to merge one folder from my old branch to dev
你走在正确的轨道上,但语法有些混乱。 git merge
通常用于 合并 来自两个或多个提交的更改到一个新的提交中(除非它是 fast-forward,但这在这里并不重要)。如果我理解正确,您想 replace 一次提交中存在的文件夹的一个版本(即分支 dev
上的最新提交)与同一文件夹的一个版本不同的提交(即 old_branch)。这是您需要执行此操作的命令序列,并附有解释:
- 首先,确保我们在分支
dev
上 git checkout dev
- 将暂存区和工作区中我的文件夹的版本替换为old_branch中的版本:
git checkout old_branch -- myfolder
。请注意,这不会修改存储库中的已提交版本。在 git-speak 中,我们说 HEAD
仍然指向相同的提交。
现在我们需要 "save" 将我们对工作区中的 myfolder 所做的更改提交到分支 dev
。因为 checkout
自动将 checked-out files/folders 添加到暂存区,所以我们只需要提交更改:
git commit -m 'change myfolder to version on branch old_branch'
您可以通过 运行 git log
在分支 dev
上看到您的新提交。顶级提交应该具有上面的提交消息。
[编辑 1]:
@JavaHead This post 您可能会感兴趣。如果 old_branch
上的 myfolder
的文件不存在于 dev
上的同一文件夹中,并且您希望将它们添加到 dev
,只需检出您想要的文件从 old_branch
到 myfolder
on dev
然后提交,就像上面的流程一样。如果您的意思是每个分支都有 相同 文件的不同版本,那么您可能需要 git checkout -p old_branch -- <file-to-combine>
。这将向您显示每个分支中文件更改的差异,并让您根据个人情况选择要进行的更改。
我对 git checkout [<tree-ish>] [--] <pathspec>…..
所做的事情非常困惑
我的回购。包含文件夹,我有一个旧分支,我们称之为 old_branch。我想将 old_branch 中的一个文件夹合并到我的 dev
我像这样切换到我的开发人员:
git checkout dev
然后我想将一个文件夹从我的旧分支合并到 dev
git checkout <old_branch> --myfolder
问题:它是否与我的 dev 合并,或者只是替换我的 old_branch 中的代码并将其标记为 "merged"
自从我尝试做 git checkout -b new_branch
、提交然后做 git merge dev
之后,它告诉我没有任何变化(最新)。
检查代码时,我看到很多不应该发生的删除。
更新 1 我想合并(合并更改)我当前树 (dev) 中的一个子文件夹的内容与我在树中的一个子文件夹的内容 (old_branch)
更新 2 看来我问错了问题。真正的问题应该是如何在单一回购设置中合并子文件夹。我不认为有一种自动化的方法可以做到这一点。我最终手工完成了。
Does it do a merge with my dev , or simply replaces code from my old_branch and marks it as "merged"
git checkout
两者都不做。
I wanted to merge one folder from my old branch to dev
你走在正确的轨道上,但语法有些混乱。 git merge
通常用于 合并 来自两个或多个提交的更改到一个新的提交中(除非它是 fast-forward,但这在这里并不重要)。如果我理解正确,您想 replace 一次提交中存在的文件夹的一个版本(即分支 dev
上的最新提交)与同一文件夹的一个版本不同的提交(即 old_branch)。这是您需要执行此操作的命令序列,并附有解释:
- 首先,确保我们在分支
dev
上git checkout dev
- 将暂存区和工作区中我的文件夹的版本替换为old_branch中的版本:
git checkout old_branch -- myfolder
。请注意,这不会修改存储库中的已提交版本。在 git-speak 中,我们说HEAD
仍然指向相同的提交。 现在我们需要 "save" 将我们对工作区中的 myfolder 所做的更改提交到分支
dev
。因为checkout
自动将 checked-out files/folders 添加到暂存区,所以我们只需要提交更改:git commit -m 'change myfolder to version on branch old_branch'
您可以通过 运行
git log
在分支dev
上看到您的新提交。顶级提交应该具有上面的提交消息。
[编辑 1]:
@JavaHead This post 您可能会感兴趣。如果 old_branch
上的 myfolder
的文件不存在于 dev
上的同一文件夹中,并且您希望将它们添加到 dev
,只需检出您想要的文件从 old_branch
到 myfolder
on dev
然后提交,就像上面的流程一样。如果您的意思是每个分支都有 相同 文件的不同版本,那么您可能需要 git checkout -p old_branch -- <file-to-combine>
。这将向您显示每个分支中文件更改的差异,并让您根据个人情况选择要进行的更改。