Git:添加vs push vs commit

时间:2011-05-26 18:23:24

标签: git repository push commit add

git addpushcommit有什么区别?

来自SVN的一点点困惑,其中"更新"将添加'东西,并提交做"推"并且会添加'以及

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

8 个答案:

答案 0 :(得分:143)

  1. git add将修改后的文件添加到队列以便稍后提交。文件未提交
  2. git commit提交已添加的文件并使用日志创建新版本...如果您不添加任何文件,git将不会提交任何内容。您可以将这两项操作与git commit -a

  3. 结合使用
  4. git push将您的更改推送到远程存储库。

  5. this git cheat sheet的这个数字很好地说明了工作流程

    enter image description here

    git add不在图中,因为建议的提交方式是合并的git commit -a,但您可以在心理上向更改块添加git add以了解流程。< / p>

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

答案 1 :(得分:76)

git add选择更改

git commit本地记录更改

git push分享变化

答案 2 :(得分:21)

  • git add将文件添加到Git索引,这是准备提交的对象的临时区域。
  • git commit将索引中的文件提交到存储库,git commit -a是一种将所有已修改的跟踪文件首先添加到索引的快捷方式。
  • git push将所有挂起的更改发送到您的分支所映射到的远程存储库(例如,在GitHub上)。

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

答案 3 :(得分:11)

我对于添加&#39;真的。我刚刚从Git Pro一书中读到了一篇非常有启发性的段落,我想在此添加,因为它澄清了事情

“事实证明,当你运行git add命令时,Git会完全按照它的方式调度文件。如果你现在提交,就像你上次运行git add命令时的benchmarks.rb的版本是它将如何进入提交,而不是你在运行git commit时在工作目录中查找的文件版本。如果在运行git add之后修改文件,则必须再次运行git add以暂存文件的最新版本:“

摘录自:Chacon,Scott。 “Pro Git。”Springer,2009-08-19T00:00:00 + 00:00。 iBooks的。 本资料可能受版权保护。

答案 4 :(得分:6)

添加tell git以开始跟踪文件。

commit在本地存储库中提交您当前的更改

push推送你上游的本地仓库。

答案 5 :(得分:4)

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

添加与svn的添加相同(有时用于标记已解决的文件)。

提交也与svn相同,但它会将更改提交到本地存储库。

答案 6 :(得分:1)

我觉得这张图片非常有意义:

enter image description here

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

答案 7 :(得分:0)

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

commit- in git用于将文件保存到本地计算机上,这样,即使我们进行了任何更改甚至删除文件,我们仍然可以恢复已提交的文件

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

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

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

将文件推送到Github git push origin master