Git:添加vs push vs commit

问题描述 投票:95回答:7

git addpushcommit有什么区别?

只是有点困惑来自SVN,其中“更新”将“添加”东西,并且提交执行“推送”并且还将“添加”

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

git repository push commit add
7个回答
144
投票
  1. git add将修改后的文件添加到队列中以便稍后提交。文件未提交
  2. git commit提交已添加的文件并使用日志创建新版本...如果您不添加任何文件,git将不会提交任何内容。你可以将这两个动作与git commit -a结合起来
  3. git push将您的更改推送到远程存储库。

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

git add不在图上,因为建议的提交方式是组合的git commit -a,但你可以在心理上添加一个git add到更改块来理解流程。

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


76
投票

git add选择变化

git commit记录了局部变化

git push股票变动


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

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


11
投票

我对'添加'真的有什么困惑感到困惑。我刚刚从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的。本资料可能受版权保护。


6
投票

add tell git开始跟踪文件。

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

push推动你上游的本地回购。


4
投票

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

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

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


1
投票

我发现这个图像非常有意义:

enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.