961

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

那有什么git push用呢?

4

16 回答 16

1733

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

这是Oliver Steele的一张漂亮图片,它解释了 git 模型和命令:

Git 数据传输命令

阅读有关GitReady.comgit push更多信息(我首先提到的文章)git pull

于 2010-04-30T14:20:17.653 回答
242

commit:将更改添加到本地存储库

push:将最后一次提交传输到远程服务器

于 2010-04-30T14:20:40.283 回答
71

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

于 2010-04-30T14:21:32.457 回答
30

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

于 2010-04-30T14:20:37.250 回答
27

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

于 2010-04-30T14:20:55.057 回答
26

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

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

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

git commit: 向本地存储库追加一个新提交(最后一次提交+分阶段修改)。(提交存储在)/.git

git push, : 将本地存储库与其关联的 远程git pull存储库同步。- 将更改从本地应用到远程,- 将更改从远程应用到本地pushpull

于 2016-08-04T15:59:05.903 回答
12

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

git push 使用本地更改更新远程存储库。

于 2013-08-11T06:20:04.497 回答
10

需要注意的三点:

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

2) Local Repository ------ 这是在我们的系统内部。当我们第一次执行 COMMIT 命令时,就会创建这个本地存储库。在我们的工作目录所在的同一位置,
创建 Checkit (.git) 文件。
之后,当我们提交时,这会将我们在工作目录文件中所做的更改存储到本地存储库(.git)

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

于 2018-05-16T16:08:11.527 回答
7

只想补充以下几点:

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

git push命令有两个参数:

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

例如:

git push  <REMOTENAME> <BRANCHNAME> 
git push  origin       master
于 2016-11-27T19:52:27.887 回答
5

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

请不要把这个类比从这个上下文中拿出来——提交和推送并不像保存一个编辑过的文件并复制它。也就是说,为了比较,它应该成立。

于 2016-08-04T18:34:24.437 回答
1

如果您想象在 Github 的存储库中维护一个日志文件add,那么更容易理解 git 命令的使用。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 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 等其他流行的系统。

于 2018-01-15T06:13:34.577 回答
0

git commit 只不过是正式保存我们的更改,对于每次提交,我们都会给出提交消息,一旦我们完成提交,我们可以将其推送到远程以在全局范围内查看我们的更改

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

并且仅当我想在远程查看更改时才使用 git push (之后我将检查我的代码是否在 jenkins 中工作)

于 2017-12-20T07:49:19.873 回答
0

提交更改时,将更改保存为本地存储库中的单个逻辑集。您可以多次执行此操作而无需推动。在它们被推送之前,它们不会离开您的本地存储库,这意味着远程存储库还没有这些更改集,因此当其他人从远程存储库中拉取时,您的提交将不会被拉取。

当您推送时,您在本地存储库中所做的所有提交都将转移到远程存储库,因此当共享此远程存储库的其他开发人员拉取时,他们会将您的更改转移到他们的本地存储库检查 Git 命令和备忘单在这里

于 2021-08-14T06:39:39.660 回答
-3

git commit是提交在本地仓库中暂存的文件。git push就是快进合并本地的master分支和远程的master分支。但合并并不总是成功。如果出现拒绝,您必须pull这样做才能成功git push

于 2014-08-12T08:56:26.963 回答
-4

用外行的话来说,git commit是按git push顺序运行它们以成功将文件 git 到 github 之前的步骤。

于 2017-06-17T21:38:22.410 回答
-4

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

来源谷歌

http://gitref.org/basic/这个链接也将非常有用

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

于 2016-08-01T11:51:23.260 回答