提交、提交和推送、提交和同步之间的区别

184

我正在使用Visual Studio 2013,提交C#代码时面临3个选项。我需要解释每个选项之间的区别,包括本地代码库和GitHub代码库发生了什么。

  • 选项1:提交(Commit)
  • 选项2:提交并推送(Commit and Push)
  • 选项3:提交并同步(Commit and Sync)

我不太理解最后两个选项之间的区别。什么情况下应该使用"Commit and Sync"而不是"Commit and Push"?

4个回答

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

更多信息请参见Microsoft在这里


我真的不理解“提交和同步”的含义。首先,它会进行提交。其次,它会执行拉取操作。最后,它会推送。为什么在代码更改已经提交到远程存储库时还需要推送呢(没有更改需要推送)? - Bhuwan Pandey
7
执行“commit”不包括“push”,它们是分开的。只有“push”才会将您的提交更新到远程存储库。请参见另一个回答中的图像。 “commit”从索引到本地存储库,而“push”则通过从本地存储库到远程存储库完成。 - camiblanch
多个用户同时在应用程序中工作时,同步操作会导致冲突吗? - Murali Dhar Darshan
1
我正在使用Visual Studio 2017,但“提交并同步”命令不能完全推送您的更改。这是因为在执行同步操作后,我的更改会在Visual Studio的历史记录选项卡中显示,但在Github网站上却没有出现。我不得不在"提交并同步"之后执行Push命令,然后我的更改才出现在Github网站上。 - Fabiano
我认为混淆是因为认为 Commit 会将文件发送到远程仓库。实际上,Commit 只是在本地仓库记录您的编辑。如果没有 Push,它永远不会到达服务器。 - Alan Baljeu
2
@Fabiano 同意。如果我执行提交操作,然后再同步,系统会提示我将提交内容推送到远程服务器。这似乎与此处的答案不符。 - Robbie Dee

88

除了camieblanch的回答外,我还从tanascius (这里) 上找到了这张有用的图片/帖子。 "以下是Oliver Steele的一张很好的图片,它解释了git模型和命令:" 输入图像描述


1
但在这张图片中,同步在哪里呢? - Alan Baljeu
3
它在图片中不存在。如果您回顾“camiblanch”的答案,它会提交到您的本地仓库,拉取以同步(合并)远程仓库和本地仓库,然后将合并的本地仓库推送到远程仓库。 - A.sharif

5
在GitHub中,“commit”动作将您的更改保存到本地存储库,而“push”动作则将这些更改发送到远程存储库。“commit and push”将这两个操作组合成一个,允许您在本地保存更改,然后使用单个命令将它们推送到远程存储库。
“Commit and sync”是类似的概念,但它还会拉取自上次提交以来对远程存储库所做的任何更改。这样可以使您的本地存储库与其他贡献者最新的更改保持同步。
最后,“commit and create pull request”将提交和推送操作与创建新的pull request结合在一起。这样可以向项目中的其他贡献者提议对您所做的更改进行审查,并开始讨论。
总之,这些选项之间的区别是: “Commit”:将您的更改保存到本地存储库 “Commit and push”:将您的更改保存到本地存储库并将其推送到远程存储库 “Commit and sync”:将您的更改保存到本地存储库,获取远程存储库的任何新更改,并将其合并到您的本地存储库中 “Commit and create pull request”:将您的更改保存到本地存储库,将其推送到远程存储库,并创建一个新的pull request以供审查。

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接