在我将要讲解的Git教程中,Git提交用于存储您所做的更改。
git push是用来做什么的?
在我将要讲解的Git教程中,Git提交用于存储您所做的更改。
git push是用来做什么的?
当前回答
由于Git是一个分布式版本控制系统,不同之处在于commit会将更改提交到本地存储库,而push会将更改提交到远程存储库。
其他回答
提交更改时,将更改保存为本地存储库中的单个逻辑集。你可以多次这样做而不用推。在它们被推送之前,它们不会离开您的本地存储库,这意味着远程存储库还没有这些更改集,因此当其他人从远程存储库中进行拉取时,您的提交不会被拉取。
当您推送时,您在本地存储库中所做的所有提交将被传输到远程存储库,因此当共享此远程存储库的其他开发人员进行拉取时,他们将把您的更改传输到他们的本地存储库。 查看Git命令和备忘单。
有三件事需要注意:
Working directory — folder where our code files are present Local repository — This is inside our system. When we do the commit command the first time, then this local repository is created in the same place where our working directory is. Checkit (.git) file get created. After that whenever we do commit, this will store the changes we make in the file of the working directory to the local repository (.git). Remote repository — This is situated outside our system like on servers located any where in the world, like GitHub. When we make a push command then code from our local repository gets stored at this remote repository.
基本上,git提交“将更改记录到存储库”,而git推送“更新远程引用和相关对象”。因此,第一个用于连接本地存储库,而后一个用于与远程存储库交互。
下面是Oliver Steele的一张漂亮的图片,解释了Git模型和命令:
阅读更多关于git push和git pull的内容:push和pull(我首先提到的文章)。
只想补充以下几点:
在你提交之前你不能推送,因为我们使用git push来将你本地分支上的提交推送到远程存储库。
git push命令有两个参数:
远程名称,例如origin 分支名称,例如master
例如:
git push <REMOTENAME> <BRANCHNAME>
git push origin master
如果您想象在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)。