“git commit”和“git push”有什么区别?

时间:2010-04-30 14:17:12

标签: git push git-commit git-push git-index

在我正在进行的Git教程中,git commit用于存储您所做的更改。

当时使用的git push是什么?

15 个答案:

答案 0 :(得分:1510)

基本上git commit记录对存储库的更改”而git push更新远程引用及相关对象”。所以第一个用于本地存储库,而后一个用于与远程存储库交互。

这是来自Oliver Steele的精彩图片,它解释了git模型和命令:

Git data transport commands

详细了解GitReady.com上的git pushgit pull(我先提到的文章)

答案 1 :(得分:191)

提交:向本地存储库添加更改

推送:将最后一次提交转移到远程服务器

答案 2 :(得分:54)

好吧,基本上git commit会将您的更改放入您的本地仓库,而git push会将您的更改发送到远程位置。

答案 3 :(得分:25)

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

答案 4 :(得分:24)

git push用于将您在本地存储库上完成的提交添加到远程存储库 - 与git pull一起,它允许人们进行协作。

答案 5 :(得分:13)

git commit将您的更改记录到本地存储库。

使用您的本地更改

git push 更新 远程存储库。

答案 6 :(得分:12)

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

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

远程存储库:服务器上的存储库(例如 Github.com )。

git commit:向本地提交(最后提交 + 暂存修改) >存储库。

git pushgit pull:将本地存储库与其关联的远程存储库同步。 push - 将本地中的更改应用于远程pull - 将更改从远程应用到本地< /强>

答案 7 :(得分:5)

只想添加以下几点:

Yon无法推送,直到您提交,因为我们使用git push将您本地分支上的提交推送到远程存储库。

git push命令有两个参数:

远程名称,例如origin 分支名称,例如master

例如:

git push  <REMOTENAME> <BRANCHNAME> 
git push  origin       master

答案 8 :(得分:5)

需要注意三点:

1)工作目录 -----我们的代码文件存在的文件夹

2)本地存储库 ------这是我们的系统内部。当我们第一次做                           COMMIT命令然后创建此本地存储库。                           在我们的工作目录所在的同一地方,
                               Checkit(.git)文件被创建                           在那之后,当我们提交时,这将存储                           我们在工作目录的文件中所做的更改                           本地存储库(.git)

3)远程存储库 -----它位于我们的系统之外,就像在服务器上一样                           位于世界的任何地方。像github。                           当我们发出PUSH命令然后从我们的本地编码                           存储库存储到此远程存储库

答案 9 :(得分:3)

一个非常粗略的比喻:如果我们将git commit与保存已编辑的文件进行比较,那么git push会将该文件复制到另一个位置。

请不要在此上下文中进行类比 - 提交和推送与保存已编辑的文件并复制它完全不同。也就是说,它只能用于比较。

答案 10 :(得分:0)

git commit只是正式保存我们的更改,对于我们提交的每个提交提交消息, 一旦我们完成提交,我们可以将其推送到远程以查看我们的全局变化

这意味着我们可以在推送到远程之前进行多次提交(我们可以看到提交的列表和消息) git使用提交ID保存每个提交,提交ID为40位代码

我只在我想在远程看到我的变化时使用git push(之后我将检查我的代码是否在jenkins中运行)

答案 11 :(得分:0)

如果您想象在Github上的存储库中维护日志文件,则更容易理解git命令addcommit的使用。 我的典型项目日志文件可能如下所示:

---------------- 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 push所有这些记录的更改以及每个提交的索引文件时,才会登录主存储库(在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 addgit commit允许您将对主存储库的更改分解为系统逻辑子更改。正如其他答案和评论所指出的那样,它们有更多的用途。然而,这是最常见的用法之一,也是Git背后的驱动原则,它是一个多阶段的修订控制系统,不像其他流行的像Svn。

答案 12 :(得分:-1)

以外行术语来说,git commitgit push之前的步骤,您按顺序运行它们以成功将文件git gitub发送到github。

答案 13 :(得分:-2)

好吧,基本上git commit会将您的更改放入您的本地仓库,而git push会将您的更改发送到远程位置。由于git是一个分布式版本控制系统,不同之处在于commit会将更改提交到本地存储库,而push会将更改推送到远程repo

来源 Google

http://gitref.org/basic/此链接也非常有用

https://git-scm.com/docs/git-commit

答案 14 :(得分:-3)

git commit用于提交在本地存储库中暂存的文件。 git push是快速合并本地端的主分支与远程主分支。但合并并不总是成功。如果出现拒绝,您必须pull才能成功git push