提交,提交和推送,提交和同步之间的差异


149

我正在使用Visual Studio 2013,并且在提交C#代码时面临3个选项。我需要解释每个选项之间的差异,这些差异涉及本地存储库和GitHub存储库之间的差异。

  • 选项1表示提交
  • 选项2说“提交并推送”
  • 选项3说“提交并同步”

我不太了解最后2个选项之间的区别。什么时候应该使用“提交和同步”而不是“提交和推送”?

Answers:


216
  1. Commit只会记录您在本地计算机上所做的更改。它不会标记远程存储库中的更改。
  2. Commit and Push将执行上述操作并将其推送到远程存储库。这意味着您所做的任何更改也将保存到远程存储库中。
  3. 提交和同步执行三件事。首先,它将提交。其次,它将执行拉取(从远程存储库中获取更新的信息)。最后,它将推动。

在此处查看来自Microsoft的更多信息


我真的没有得到“提交并同步”,它会提交。其次,它将执行拉动。最后,它将推动。当代码更改已提交到远程存储库时,为什么要在此处要求推送(没有要推送的更改)。
Bhuwan Pandey

6
@BhuwanPandey执行“提交”不包含“推送”。他们是分开的。只有“推送”会更新对远程存储库的提交。看到另一个答案中的图像即可看到。“提交”从索引到本地存储库,而“推送”通过从本地存储库到远程存储库完成
camiblanch

当多个用户同时在应用程序中工作时,同步操作是否会引起冲突?
Murali Dhar Darshan

我正在使用Visual Studio 2017,并且``提交和同步''命令无法完全推送您的更改。我说这是因为通过执行Sync,我的更改将显示在Visual Studio的“历史记录”选项卡中,但是在Github站点上却没有出现。在Commig和Sync之后,我必须执行一个Push命令,然后我的更改出现在Github站点中。
法比亚诺

我认为混淆来自于认为Commit将文件发送到远程存储库。实际上,Commit仅将您的编辑记录在本地存储库中。如果没有Push,它将永远不会命中服务器。
艾伦·巴尔吉

72

添加到camieblanch的答案。我从tanascius(这里)找到了这个有用的图片/帖子。“这是奥利弗·斯蒂尔(Oliver Steele)的一张漂亮的照片,它解释了git模型和命令:” 在此处输入图片说明


1
但是这张图片中的“同步”在哪里?
艾伦·巴尔吉

2
图片中不存在。如果您参考“ camiblanch”的答案。它提交到您的本地存储库,拉动以将远程存储库与本地存储库同步(合并),然后将合并的本地存储库推送到远程存储库。
A.sharif

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.