【问题标题】:Specifying branch arguments to git fetch, merge, and push为 git fetch、merge 和 push 指定分支参数
【发布时间】:2013-08-04 11:33:10
【问题描述】:

如果我正在处理 repo 的一个分支,比如devel,那么以下命令之间有什么区别?在这种情况下,我已经添加了一个upstream 遥控器:

$ git fetch upstream devel
From github.com:meteor/meteor
 * branch            devel      -> FETCH_HEAD

$ git fetch upstream 
remote: Counting objects: 500, done.
remote: Compressing objects: 100% (230/230), done.
remote: Total 326 (delta 227), reused 187 (delta 90)
Receiving objects: 100% (326/326), 46.61 KiB, done.
Resolving deltas: 100% (227/227), completed with 87 local objects.
From github.com:meteor/meteor
 * [new branch]      appconfig  -> upstream/appconfig
 * [new branch]      check-path -> upstream/check-path
   248ff08..4d44a4d  ctl-migrate -> upstream/ctl-migrate
   2c356d2..bfb8fd3  devel      -> upstream/devel
 * [new branch]      release-0.6.5 -> upstream/release-0.6.5
   64b95a4..c0014df  shark      -> upstream/shark
From github.com:meteor/meteor
 * [new tag]         release/0.6.5-rc11 -> release/0.6.5-rc11
 * [new tag]         release/0.6.5-rc12 -> release/0.6.5-rc12

如果没有指定分支,fetch 如何知道要获取什么?

另外,为什么merge命令是

$ git merge upstream/devel

但如果我想将更改推送到我的 fork,我需要说

$ git push origin devel 

为什么在一种情况下有斜线而在另一种情况下没有?

【问题讨论】:

    标签: git branch fetch git-merge git-fetch


    【解决方案1】:

    git fetch upstream devel 等同于:

     git fetch upstream refs/heads/devel
    

    您没有在 refspec 中提供目的地,因此 fetch 更新 FETCH_HEAD,如“In git, how do I check out a remote repository's remote branches?”中所述。
    这是一个短暂的 ref,如果您执行拉取(提取 + 合并),则使用它。

    git fetch upstream 获取所有内容,因此没有要更新的单个引用。


    git merge 必须指定合并的,在您的情况下是远程分支develupstream/devel 因为上游是您更新的远程的名称,在获取后更新)git merge devel 会将本地分支 devel 合并到当前分支上...如果您已经在 devel 上,则会导致无操作。

    git push 也指定源,这里是本地分支devel,远程目标origin(“upstream repo”)和目标取决于push policy .
    如果devel 正在跟踪一个远程分支,而您当前在devel 上,那么一个简单的git push 就足够了。更多信息请参见“Why do I need to explicitly push a new branch?”。

    【讨论】:

    • git fetch upstream devel 不是更像get fetch upstream refs/heads/devel(注意头像)吗?远程引用也应该在远程名称下,所以它应该是refs/remote/upstream/devel,如果它是正确的引用。
    • +1 感谢您的全面解释和指点。我相信这对其他人也很有价值,因为到目前为止我只是随机输入分支参数并祈祷它做正确的事情:)
    猜你喜欢
    • 2012-07-19
    • 2017-04-08
    • 2011-02-05
    • 2010-10-31
    • 2018-03-05
    • 2017-08-13
    • 1970-01-01
    • 2020-01-31
    相关资源
    最近更新 更多