Git:添加,推送,提交


115

是什么混帐之间的差异addpush以及commit

SVN有点混乱,其中“更新”将“添加”内容,提交则进行“推送”并也会“添加”

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


Answers:


163
  1. git add将您修改后的文件添加到队列中,以便稍后提交。文件未提交

  2. git commit提交已添加的文件并使用日志创建新修订...如果不添加任何文件,则git将不提交任何内容。您可以将两个动作与git commit -a

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

这从图这个混帐小抄给出了工作流程的一个好主意

在此处输入图片说明

git add并未在图中显示,因为建议的提交方式是combined git commit -a,但是您可以在脑海中添加一个git add到change块以了解流程。

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


那么,是否先在本地推送提交,然后再推送到远程服务器,还是必须先提交然后再推送才能使工作到达远程存储库?
Andrew S

2
您首先必须提交(“ git commit”)来更新本地存储库(又名在本地计算机上),然后必须推送到服务器(“ git push”)来更新远程存储库(例如在github服务器上)。 )
罗曼(Romain

我希望在Git中添加一个“心理添加”功能!
Junchen Liu

1
建议不仅要经常承诺,而且要经常推动。当硬盘驱动器崩溃时,这可以保护您的工作。
CCC

86

git add 选择变化

git commit 本地记录更改

git push 股份变动


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

为了了解Git,您不仅需要浏览文档,还需要付出更多的努力,但这绝对是值得的。只是不要尝试将Git命令直接映射到Subversion,因为大多数命令没有直接对应的命令。


有人应该解释本地和远程github之间的区别。您在本地和remte中拥有的东西。这是您需要找到的钥匙
Mehdi Amrollahi

12

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

“事实证明,Git与运行git add命令时的文件完全一样。如果现在提交,则上次运行git add命令时的beta.benchmarks.rb版本将如何进入提交,而不是运行git commit时在工作目录中显示的文件版本。如果您在运行git add之后修改文件,则必须再次运行git add来暂存文件的最新版本:”

摘录:查康·斯科特。“ Pro Git。” 斯普林格,2009-08-19T00:00:00 + 00:00。iBooks。该材料可能受版权保护。


7

add告诉git开始跟踪文件。

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

push会将您的本地存储库推向上游。



5

关于许多GIT机密的非常好pdf

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

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


2
现在我必须去查找svn add和commit。我最担心的是:他们的文档将把我引到git add和commit。lord_t是上述文档的作者。
eric

问题作者已经了解SVN,因此我假设他知道svn的命令。
lord_t

0

add -in git用来告诉git我们要提交的文件,它将文件放入暂存区

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

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

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

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

将文件推送到Github git push origin master

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.