在我正在阅读的 Git 教程git commit
中,用于存储您所做的更改。
那有什么git push
用呢?
基本上git commit
“记录对存储库的更改”,而git push
“更新远程引用以及关联的对象”。所以第一个用于与您的本地存储库连接,而后一个用于与远程存储库交互。
这是Oliver Steele的一张漂亮图片,它解释了 git 模型和命令:
阅读有关GitReady.com的git push
更多信息(我首先提到的文章)git pull
commit:将更改添加到本地存储库
push:将最后一次提交传输到远程服务器
好吧,基本上 git commit 将您的更改放入本地存储库,而 git push 将您的更改发送到远程位置。
git push
用于将您在本地存储库中所做的提交添加到远程存储库 - 与 一起git pull
,它允许人们进行协作。
由于 git 是一个分布式版本控制系统,不同之处在于 commit 会将更改提交到本地存储库,而 push 会将更改推送到远程存储库。
提交:快照 | 变更集 | 版本 | 历史记录 | 存储库的“另存为”。Git 存储库 =提交系列(树)。
本地存储库:您计算机上的存储库。
远程存储库:服务器上的存储库(Github)。
git commit
: 向本地存储库追加一个新提交(最后一次提交+分阶段修改)。(提交存储在)/.git
git push
, : 将本地存储库与其关联的 远程git pull
存储库同步。- 将更改从本地应用到远程,- 将更改从远程应用到本地。push
pull
git commit
记录您对本地存储库的更改。
git push
使用本地更改更新远程存储库。
需要注意的三点:
1)工作目录-----我们的代码文件所在的文件夹
2) Local Repository ------ 这是在我们的系统内部。当我们第一次执行 COMMIT 命令时,就会创建这个本地存储库。在我们的工作目录所在的同一位置,
创建 Checkit (.git) 文件。
之后,当我们提交时,这会将我们在工作目录文件中所做的更改存储到本地存储库(.git)
3)远程存储库-----它位于我们系统之外,就像位于世界任何地方的服务器上一样。像github。当我们发出 PUSH 命令时,本地存储库中的代码将存储到此远程存储库
只想补充以下几点:
在您提交之前,您无法推送,因为我们使用git push
将本地分支上的提交推送到远程存储库。
该git push
命令有两个参数:
远程名称,例如,origin
分支名称,例如,master
例如:
git push <REMOTENAME> <BRANCHNAME>
git push origin master
一个非常粗略的类比:如果我们将git commit
其与保存已编辑的文件进行比较,那么git push
就是将该文件复制到另一个位置。
请不要把这个类比从这个上下文中拿出来——提交和推送并不像保存一个编辑过的文件并复制它。也就是说,为了比较,它应该成立。
如果您想象在 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 add
让git commit
您将对主存储库的更改分解为系统的逻辑子更改。正如其他答案和评论所指出的那样,它们当然还有更多用途。然而,这是最常见的用法之一,也是 Git 背后的驱动原理,它是一个多阶段的修订控制系统,不像 Svn 等其他流行的系统。
git commit 只不过是正式保存我们的更改,对于每次提交,我们都会给出提交消息,一旦我们完成提交,我们可以将其推送到远程以在全局范围内查看我们的更改
这意味着我们可以在推送到远程之前进行多次提交(我们可以看到发生的提交列表和消息) git 使用提交 id 保存每个提交,这是一个 40 位数的代码
并且仅当我想在远程查看更改时才使用 git push (之后我将检查我的代码是否在 jenkins 中工作)
提交更改时,将更改保存为本地存储库中的单个逻辑集。您可以多次执行此操作而无需推动。在它们被推送之前,它们不会离开您的本地存储库,这意味着远程存储库还没有这些更改集,因此当其他人从远程存储库中拉取时,您的提交将不会被拉取。
当您推送时,您在本地存储库中所做的所有提交都将转移到远程存储库,因此当共享此远程存储库的其他开发人员拉取时,他们会将您的更改转移到他们的本地存储库检查 Git 命令和备忘单在这里
git commit
是提交在本地仓库中暂存的文件。git push
就是快进合并本地的master分支和远程的master分支。但合并并不总是成功。如果出现拒绝,您必须pull
这样做才能成功git push
。
用外行的话来说,git commit
是按git push
顺序运行它们以成功将文件 git 到 github 之前的步骤。
好吧,基本上 git commit 将您的更改放入本地存储库,而 git push 将您的更改发送到远程位置。由于 git 是一个分布式版本控制系统,不同之处在于 commit 会将更改提交到本地存储库,而 push 会将更改推送到远程存储库
来源谷歌
http://gitref.org/basic/这个链接也将非常有用