【问题标题】:What does GitHub for Windows' "sync" do?GitHub for Windows 的“同步”有什么作用?
【发布时间】:2012-08-19 17:30:24
【问题描述】:

使用 GitHub for Windows,您可以“发布”一个分支,然后将该分支“同步”到 GitHub。

同步基本上是git pullgit push?或者还有更多?如果我想从命令行执行与“同步”完全相同的步骤,我应该怎么做?

(它不是开源的,或者我只是读过。)

【问题讨论】:

    标签: git github-for-windows


    【解决方案1】:

    同步执行git pull --rebase,然后如果有本地更改,则执行git push

    从这里:http://haacked.com/archive/2012/05/21/introducing-github-for-windows.aspx#87318

    【讨论】:

    • 如果在 rebase 步骤中发生冲突怎么办?
    • @Svante 它只是失败了,并提供打开一个外壳供您整理混乱。这就是我到达此页面的方式:-)
    • 这仍然是真的吗?我刚刚进行了同步并最终进行了合并提交,如果流程是: git pull --rebase; 则永远不会发生这种情况: git推送
    • 对@Michas Caldwell 的评论有何解释,我相信他是对的?
    • 可以确认点击Sync刚才做了一个git pull而不是git pull --rebase,因此创建了一个额外的合并分支'master' ... 提交。
    【解决方案2】:

    由于上述答案是两年多前的,因此对该问题的更新答案是:由于 rebase 的一些错误,“同步”按钮不再执行 git pull --rebase。相反,它会执行 git pull,如果存在冲突,它将执行 merge,根据此 release notes(请参阅版本 1.3.0)。

    以上链接暂时不可用。这里是the new release notes

    【讨论】:

    • 实际上,这并不完全正确。只有当变基不起作用时,它才会尝试进行合并。
    • 发行说明链接已损坏。
    • @JorisMeys 我不确定你的说法是否属实。根据我的经验,如果在我的远程之前有 any 提交,它会创建一个合并提交,即使它可以做一个 rebase。
    • @JeradRose 当我写我的评论时,我们在 Github Desktop v. 2.x 上,我们现在是 3.3 :-) 但你是对的,我注意到了同样的情况。
    【解决方案3】:

    “同步”是使本地分支与远程分支匹配所需的任何操作。如果您的本地分支提交了远程分支没有的提交,那么“同步”将推送您的分支。如果远程分支在本地分支之前,那么“同步”将首先拉取(具体来说,git pull --rebase,就像 Phil Haack 的 explained 一样)。 “同步”只是让本地和远程相互镜像的捷径。

    来自GitHub site

    The sync button turns the complex workflow of pulling and pushing into a single operation. It notifies you when there are new changes to pull down and lets you quickly share local changes.

    【讨论】:

    • 它不只是拉动 - 它还有“git pull --rebase”,这是一个至关重要的区别。另外,你的顺序不对,先拉再推。
    • @Andiih 我的语言是通用的,而不是操作的有序列表。该命令是隐含的 - 请注意我说“如果远程分支 在您的本地分支之前”?我的描述也是来自 GitHub 网站的直接引用。无论如何,Matt Rix 的答案更详细,值得标记为答案。我做了一些小的修改,以澄清我的答案中的任何混淆。
    • 除了来源之外,github 同步是否还获取上游更改。 IE。我已经 f9rked 一个 repo,并且有一个 fork 的本地克隆,我真正想要的是来自上游的更改,而不仅仅是 origin
    • @AaronLS GitHub for Windows 目前仅适用于一个遥控器,即origin。要使用多个遥控器,您必须使用命令行。相关信息可以在“多个 Git 遥控器和非 GitHub 遥控器”下找到 here
    【解决方案4】:

    要添加到@ethanyang 的answer

    根据gitconfig中配置的别名,

    [alias]
    ...
    sync = !git pull && git push
    

    【讨论】:

    • 只是出于好奇, !上面一行的意思是什么?
    • @ScottRomack 这意味着它被视为一个shell命令:stackoverflow.com/questions/21083933/…
    • GitHub Desktop 是否已设置此别名?如果是这样,这个配置在哪里?我在全局 .gitconfig 中没有看到这个别名。或者这只是你自己的覆盖?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 2012-07-29
    • 1970-01-01
    • 2013-03-21
    • 2019-11-03
    • 2013-05-19
    • 2018-01-20
    相关资源
    最近更新 更多