gpt4 book ai didi

git - 为什么 `git merge origin` 有时会起作用?

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

我喜欢git merge origin,而不是git merge origin/branch。省略分支名称会使自动化和创建别名更简单一些。

但是 git merge origin 只适用于某些存储库:

$ git branch --set-upstream-to=origin/master
$ git pull origin
Already up-to-date.
$ git merge origin
Already up-to-date.

对于其他 repos 有一个错误:

$ git branch --set-upstream-to=origin/master
$ git pull origin
Already up-to-date.
$ git merge origin
merge: origin - not something we can merge

请注意,声明 git pull origin 适用于两个存储库。


两个存储库或在同一系统上(因此运行相同版本的 git)。我已经检查了 .git/config,这两个 repos 看起来很相似。

它适用于

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@github.jasny/obfuscated-repo-1.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

它不适用于

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@github.com:legalthings/iam.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master

为什么这在某些情况下有效而在其他情况下无效?


对于它不起作用的 repo,git rev-parse origin 给出了一个错误:

git rev-parse origin
origin
fatal: ambiguous argument 'origin': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]

对于另一个存储库,我得到了一个提交哈希。

最佳答案

当你运行 git merge origin 时,你是在隐式地说 git merge origin/HEAD,其中 origin/HEAD 是你的默认分支偏僻的。 HEAD 引用将在您运行 git clone $repo 时设置。

如果您的远程没有 HEAD 引用,您在本地创建了存储库并将其推送到远程,在这种情况下 Git 将不知道默认分支是什么(并且 git fetch origin 不会设置它)。您可以通过以下方式手动设置 Remote 的 HEAD ref: [1]

git remote set-head origin $branch

其中 $branch 是您要设置为该远程默认分支的分支的名称。

关于git - 为什么 `git merge origin` 有时会起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34033306/

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