在我将要讲解的Git教程中,Git提交用于存储您所做的更改。

git push是用来做什么的?


当前回答

Git提交只是正式保存我们的更改。对于每次提交,我们都会给出commit消息 一旦我们完成了提交,我们可以将它推到远程,以全局查看我们的更改。

这意味着我们可以在推送到远程之前进行多次提交(我们可以看到发生的提交列表和消息)。 Git用提交id保存每次提交,这是一个40位的代码。

只有当我想在远程查看我的更改时,我才使用Git push(之后我会检查我的代码是否在Jenkins中工作)。

其他回答

Git提交将您的更改记录到本地存储库。

Git用本地更改推送更新远程存储库。

提交:快照|变更集|版本|历史记录|存储库“另存为”。Git仓库=一系列的提交(树)。

本地存储库:计算机上的存储库。

远程存储库:服务器上的存储库(GitHub)。

git commit:追加一个新的提交(最后一次提交+阶段性修改)到本地存储库。(提交文件存储在/.git文件夹中。)

git push, git pull:同步本地存储库和其关联的远程存储库。推—从本地应用更改到远程,拉—从远程应用更改到本地。

由于Git是一个分布式版本控制系统,不同之处在于commit会将更改提交到本地存储库,而push会将更改提交到远程存储库。

如果您想象在GitHub的存储库中维护一个日志文件,那么就更容易理解Git命令add和commit的使用。

对于我来说,一个典型的项目日志文件可能是这样的:

---------------- Day 1 --------------------
Message: Completed Task A
Index of files changed: File1, File2

Message: Completed Task B
Index of files changed: File2, File3
-------------------------------------------

---------------- Day 2 --------------------
Message: Corrected typos
Index of files changed: File3, File1
-------------------------------------------
...
...
...and so on

我的一天通常以git pull请求开始,以git push请求结束。所以一天记录里的每件事都与他们之间发生的事情相对应。每天,我都要完成一个或多个逻辑任务,这些任务需要修改一些文件。在该任务期间编辑的文件列在一个索引中。

每个子任务(这里的任务A和任务B)都是单独的提交。git add命令将文件添加到“已更改文件索引”列表中。这个过程也称为暂存,在现实中记录更改的文件和执行的更改。git commit命令记录/完成更改和相应的索引列表,以及一个自定义消息,以供以后引用。

请记住,您仍然只更改存储库的本地副本,而不是GitHub上的副本。在此之后,只有当你执行git推送时,才能将所有这些记录的更改以及每次提交的索引文件记录到主存储库(GitHub)上。

作为一个例子,为了获得那个虚构日志文件中的第二个条目,我将做:

git pull

# Make changes to File3 and File4
git add File3 File4

# Verify changes, run tests etc..
git commit -m 'Corrected typos'
git push

简而言之,git add和git commit让您可以将对主存储库的更改分解为系统的逻辑子更改。正如其他的回答和评论所指出的,它们当然还有更多的用途。然而,这是最常见的用法之一,也是Git作为多阶段修订控制系统的驱动原则,而不像其他流行的版本控制系统(如SVN)。

基本上,git提交“将更改记录到存储库”,而git推送“更新远程引用和相关对象”。因此,第一个用于连接本地存储库,而后一个用于与远程存储库交互。

下面是Oliver Steele的一张漂亮的图片,解释了Git模型和命令:

阅读更多关于git push和git pull的内容:push和pull(我首先提到的文章)。