git add
,push
和commit
有什么区别?
来自SVN的一点点困惑,其中"更新"将添加'东西,并提交做"推"并且会添加'以及
git中有各种不同的功能。希望从您的经验中得到一些解释。
答案 0 :(得分:143)
git add
将修改后的文件添加到队列以便稍后提交。文件未提交 git commit
提交已添加的文件并使用日志创建新版本...如果您不添加任何文件,git将不会提交任何内容。您可以将这两项操作与git commit -a
git push
将您的更改推送到远程存储库。
this git cheat sheet的这个数字很好地说明了工作流程
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)
答案 6 :(得分:1)
答案 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