网站推广.NET

网站推广.NET

git下commit和push的区别是什么

来源:互联网

本教程操作环境:Windows7系统、Git2.30.0版、Dell G3电脑。

“git commit”和“git push”的区别

git commit是"记录对存储库的更改",是将本地修改过的文件提交到本地库中;而git push是"更新远程引用和相关对象",是将本地库中的最新信息发送给远程库。

因此,git commit用于连接本地存储库,操作的是本地库;而git push用于与远程存储库交互,操作的是远程库。

下面是奥利弗·斯蒂尔的一张很好的图片,它解释了Git模型和命令:

Git commit

git commit 主要是将暂存区里的改动给提交到本地的版本库。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,

 commit-id 在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里.

1、git commit -m ‘message’

-m 参数表示可以直接输入后面的“message”,如果不加 -m参数,那么是不能直接输入message的,而是会调用一个编辑器一般是vim来让你输入这个message,

message即是我们用来简要说明这次提交的语句。

2、git commit -am ‘message’ -am等同于-a -m

-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区,

注意: 新加的文件(即没有被git系统管理的文件)是不能被提交到本地仓库的。

Git push

在使用git commit命令将修改从暂存区提交到本地版本库后,只剩下最后一步将本地版本库的分支推送到远程服务器上对应的分支了,如果不清楚版本库的构成,可以查看我的另一篇,git 仓库的基本结构。

 git push的一般形式为 git push ,例如 git push origin master:refs/for/master ,即是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名。第一个master是本地分支名,第二个master是远程分支名。

1、git push origin master

如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建

2、git push origin :refs/for/master

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin –delete master

3、git push origin

如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支

4、git push

如果当前分支只有一个远程分支,那么主机名都可以省略,形如 git push,可以使用git branch -r ,查看远程的分支名

推荐学习:《Git教程》

git