GitHub for Windows 的“同步”有啥作用?

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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命令:***.com/questions/21083933/… GitHub Desktop 是否已设置此别名?如果是这样,这个配置在哪里?我在全局 .gitconfig 中没有看到这个别名。或者这只是你自己的覆盖?

以上是关于GitHub for Windows 的“同步”有啥作用?的主要内容,如果未能解决你的问题,请参考以下文章

Github for Windows shell 中的颜色是啥意思?

Github for Windows安装

Github Windows '无法同步这个分支'

git入门学习:github for windows上传本地项目到github

windows系统git使用ssh方式和gitee/github进行同步

GitGitHub for Windows使用 GitHub Flow的使用