gpt4 book ai didi

linux - 使用 git pull 和 git push 命令的 origin master 和 origin/master 之间的区别

转载 作者:IT王子 更新时间:2023-10-29 00:33:53 27 4
gpt4 key购买 nike

我是 git 的新手,我对 git pull 和 git push 命令几乎没有疑问。

示例:
假设我在本地机器“master”和“newbranch”(本地分支)中有两个分支。

$ git checkout newbranch

$ 分支

  *newbranch           //Assume this is local branch only 
master

现在下面的命令到底做了什么?

git pull origin master -> 它将把远程“master”的更改 pull 到“newbranch”(当前 checkout 本地分支)。

git pull origin/master -> 它将“本地”“master”中的最新更改 pull 到“newbranch”(当前 checkout 本地分支)。

git push origin master -> 它将把“newbranch”(当前 checkout 本地分支)中的新更改推送到“远程”“master”。

git push origin/master -> ??这个到底是做什么的?

谁能澄清一下这个疑问。

                                                         Thanks in advance 

最佳答案

一般来说,这个命令的语法是:

git push <remote> [refspec]

如果省略 refspec,则简化为:

git push <remote>

它的行为取决于 git config push.default 变量中的设置。 git 消息说:

When push.default is set to 'matching', git will push local branches to the remote branches that already exist with the same name.

In Git 2.0, Git will default to the more conservative 'simple' behavior, which only pushes the current branch to the corresponding remote branch that 'git pull' uses to update the current branch.

设置“匹配”模式:

git config --global push.default matching

并设置“简单”模式:

git config --global push.default simple

让我们回到您的具体案例。将提交推送到名为“origin/master”的远程将失败,因为不存在“origin/master”远程(默认远程称为“origin”)。要使其正常工作,您必须手动添加此类 Remote ,例如通过调用:

git remote add origin/master <git-repository-url>

但是请注意,这样的操作会让你本地的git非常困惑,你将不得不处理这样的错误:

$ git push origin/master
Counting objects: 5, done.
Writing objects: 100% (3/3), 253 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:sarxos/test.git
820474f..3706ea9 master -> master
error: unable to resolve reference refs/remotes/origin/master/master: Not a directory
error: Cannot lock the ref 'refs/remotes/origin/master/master'.

还有一些:

$ git fetch origin/master
error: unable to resolve reference refs/remotes/origin/master/master: Not a directory
From github.com:sarxos/test
! [new branch] master -> origin/master/master (unable to update local ref)
error: some local refs could not be updated; try running
'git remote prune origin/master' to remove any old, conflicting branches

所以我不推荐使用它。

如果你想推送到 origin/master(远程名为“origin”和远程分支名为“master”)你应该这样做:

git push origin master

关于linux - 使用 git pull 和 git push 命令的 origin master 和 origin/master 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590638/

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