gpt4 book ai didi

git - "git merge origin/branch"中忘记斜杠的后果

转载 作者:太空狗 更新时间:2023-10-29 13:39:03 33 4
gpt4 key购买 nike

根据 this article ,我试图让自己养成在更新我的工作副本时明确获取和 merge 的习惯。但是,今天我在发出命令时打错了:

$ git fetch origin
$ git merge origin asdf

请注意,我在 merge 命令中使用了空格而不是正斜杠。因为它似乎无论如何都达到了预期的效果,所以直到我已经推送时我才注意到它在日志中添加了一个措辞奇怪的提交:

commit 65f0037bed926c338cb95e7437e7f7f407028d9f
Author: Me <my_email@example.com>
Date: Mon May 14 09:36:44 2012 -0700

Merge branch 'asdf', remote-tracking branch 'origin' into asdf

现在我想知道这是否真的有任何负面影响。它似乎将参数视为两个单独的分支规范以 merge 到当前分支中,并且“origin”会隐式扩展为“origin/asdf”——这正是我的实际意图。那时,我不知道为什么它甚至会允许“将分支‘asdf’ merge 到 asdf”。

这只是一个令人尴尬的空操作吗?或者我是否在我的存储库历史记录中引入了一个可能有问题的结构?

编辑:git cat-file commit 65f0037b 的输出

tree 74ed9ead4b82e4e56bd5656ee10375f8f0fcb60d
parent 3bc2a37031a4a391aa4da64c22e3f55148cd23e2
author Me <my_email@example.com> 1337013404 -0700
committer Me <my_email@example.com> 1337013404 -0700

Merge branch 'asdf', remote-tracking branch 'origin' into asdf

最佳答案

让我们从merge 命令的手册页开始:

   git merge [-n] [--stat] [--no-commit] [--squash]
[-s <strategy>] [-X <strategy-option>]
[--[no-]rerere-autoupdate] [-m <msg>] [<commit>...]

因此,在没有所有选项的情况下,merge 接受提交列表。如果您已经在分支 asdf 上并键入:

git merge asdf

...这是空操作:将分支与其自身 merge 意味着无事可做。如果你输入:

git merge origin

然后 git 将查找与名为 origin 的远程关联的默认分支。在 branch -a 的输出中:

* master
remotes/origin/HEAD -> origin/master
remotes/origin/master

remotes/origin/HEAD 指向默认分支,所以:

git merge origin

相当于:

git merge origin/master

因此假设您 Remote 上的默认分支是 master,当您键入:

git merge origin asdf

你得到了:

git merge origin/master

如果默认分支是asdf,你得到:

git merge origin/asdf

关于git - "git merge origin/branch"中忘记斜杠的后果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10588633/

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