Git:添加 vs 推送 vs 提交

Posted

技术标签:

【中文标题】Git:添加 vs 推送 vs 提交【英文标题】:Git: add vs push vs commit 【发布时间】:2011-09-02 20:26:01 【问题描述】:

gitaddpushcommit有什么区别?

来自 SVN 有点困惑,“更新”会“添加”东西,而提交会“推送”并且也会“添加”

git 中有各种不同的功能。希望从您的经验中得到一些解释。

【问题讨论】:

好book about git 【参考方案1】:

    git add 将您修改的文件添加到队列中稍后提交。文件未提交

    git commit 提交已添加的文件并创建带有日志的新修订版...如果您不添加任何文件,git 将不会提交任何内容。您可以将这两个操作与git commit -a 结合使用

    git push 将您的更改推送到远程存储库。

this git cheat sheet 的这张图很好地说明了工作流程

git add 不在图中,因为建议的提交方式是组合 git commit -a,但您可以在脑海中将 git add 添加到更改块以了解流程。

最后,push 之所以是一个单独的命令,是因为git 的理念。 git 是一个分布式版本控制系统,您的本地工作目录就是您的存储库!您提交的所有更改都会立即反映和记录。 push 仅用于在您完成您正在处理的任何事情时更新远程存储库(您可能与他人共享)。这是一种在本地工作和保存更改(没有网络开销)并仅在您需要时更新它的好方法,而不是在每次提交时更新。这间接导致更容易提交/分支等(为什么不呢,对吧?你要花多少钱?)这会导致更多的保存点,而不会弄乱存储库。

【讨论】:

那么是在本地推送提交然后推送到远程服务器还是必须先提交然后推送才能将工作推送到远程存储库? 您首先必须提交 ("git commit") 更新本地存储库(也就是本地计算机上),然后您必须推送到更新远程存储库的服务器 ("git push") (例如在 github 服务器上) 我喜欢 Git 中的“心理添加”功能! 建议不仅要经常提交,还要经常推送。这可以在您的硬盘崩溃时保护您的工作。【参考方案2】:

git add 选择更改

git commit 记录本地更改

git push分享变化

【讨论】:

【参考方案3】: git add 将文件添加到 Git 索引,这是准备提交的对象的暂存区。 git commit 将索引中的文件提交到存储库,git commit -a 是一种快捷方式,可以先将所有修改后的跟踪文件添加到索引中。 git push 将所有待处理的更改发送到您的分支映射到的远程存储库(例如,在 GitHub 上)。

为了理解 Git,您需要投入更多的精力,而不仅仅是浏览文档,但这绝对是值得的。只是不要尝试将 Git 命令直接映射到 Subversion,因为它们中的大多数都没有直接对应项。

【讨论】:

应该有人解释一下本地和远程github的区别。你在本地和远程拥有什么。这是您需要找到的关键【参考方案4】:

我觉得这张图片很有意义:

(来自:Oliver Steele -My Git Workflow (2008))

【讨论】:

【参考方案5】:

我对“添加”的真正作用感到困惑。我刚刚阅读了 Git Pro 一书中的一段非常有启发性的段落,我想在这里添加,因为它澄清了一些事情

事实证明,Git 完全按照运行时的状态暂存文件 git 添加命令。如果您现在提交,则为 benchmarks.rb 的版本 是你上次运行 git add 命令时它会如何进入 提交,而不是文件在您工作中的版本 运行 git commit 时的目录。如果在运行后修改文件 git add,你必须再次运行 git add 来暂存最新版本的 文件

摘自:Chacon,Scott。 “专业的 Git。”施普林格,2009-08-19T00:00:00+00:00。电子书。 此材料可能受版权保护。

【讨论】:

【参考方案6】:

add 告诉 git 开始跟踪文件。

commit 将您当前的更改提交到本地存储库

push 将你的本地 repo 推送到上游。

【讨论】:

【参考方案7】:

非常好 pdf 关于许多 GIT 秘密。

Add 与 svn 的 add 相同(但有时它用于标记文件已解析)。

Commit 也和 svn 一样,但它会将更改提交到您的本地存储库中。

【讨论】:

现在我必须去查找 svn add 和 commit。我最大的恐惧:他们的文档然后会将我推荐给 git add 和 commit。 lord_t 是上述文档的作者。 问题作者了解过SVN,所以我假设他知道svn的命令。【参考方案8】:

add -in git 用来告诉git我们要提交哪些文件,它把文件放到暂存区

commit- 在 git 中用于将文件保存到本地机器,这样如果我们进行任何更改甚至删除文件,我们仍然可以恢复我们提交的文件

push - 如果我们在本地机器上提交我们的文件,如果我们的本地机器丢失、损坏等,它们仍然很容易丢失,以保证我们的文件安全或共享我们的文件通常我们希望保留我们的文件在像 Github 这样的远程存储库上。为了节省远程存储库,我们使用 push

示例 暂存名为 index.html 的文件 git add index.html

提交暂存的文件 git commit -m '你的提交名称'

将文件推送到 Github git push origin master

【讨论】:

以上是关于Git:添加 vs 推送 vs 提交的主要内容,如果未能解决你的问题,请参考以下文章

git vs sourcetree

使用VS Code推送代码到GitHub

vs2019添加git文件提交到github

终端 Git 跟踪与 VS Code git 跟踪不同步

一文吃透 VS Code+Git 操作(vs code中git的相关配置与使用)

使用cordova VS工具如何添加预处理器指令,如“DISABLE_PUSH_NOTIFICATIONS”