首页 > 程序开发 > 综合编程 > 其他综合 >

Git常用命令总结

2017-06-30

Git是一种分布式版本控制系统,既然提到了分布式,那肯定也有集中式版本控制系统了,常见的集中式版本控制系统有:CVS和SVN。

Git是一种分布式版本控制系统,既然提到了分布式,那肯定也有集中式版本控制系统了,常见的集中式版本控制系统有:CVS和SVN。

对于集中式版本控制系统,版本库是放在中央服务器的,如果我们要对版本库中的文件进行操作,必须首先联网,取得服务器中的最新版本,然后在本地电脑操作完毕之后,再将自己的操作内容推到服务器上。中央服务器类似于图书馆,当小明借了图书A(图书A唯一)后,小红必须等到小明归还图书A后,才能借这本书(是不是感觉像编程语言中的同步模式。。)。

对于分布式版本控制系统,并没有中央服务器,在每个人的电脑上都可以有一份完整的版本库,因此,用户并不需要联网,并且彼此的操作是独立的。分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

在总结Git的常用命令之前,首先在github上创建一个仓库,用来测试Git的常用命令。

本地一个仓库用来对应于github上的仓库。

mkdir git-practice //首先在本地创建一个目录

cd git-practice // 进入创建的目录中

git init //这个命令主要是将当前目录变为Git可以管理的仓库,在当前目录中会生成一个.git目录,这个目录是用来跟踪管理仓库的,非常重要,不要乱改。。

echo "# git-practice" >> README.md //创建一个文件

git add README.md //将创建的文件添加到本地仓库中(注:其实这个命令是将所做的修改提交到暂存区中,暂存区概念之后会说)

git commit -m "first commit" //将暂存区中的内容提交到仓库中,-m 可以认为对于提交的内容添加一个注释

git remote add origin git@github.com:jiangxr/git-practice.git//用于关联本地仓库和github的远程仓库,让我们本地的修改能够提交到远程仓库中

git push origin master //将本的修改内容提交到上一个命令关联的远程仓库的master分支上

上面介绍的是最基本的一般性操作,能够将我们修改的内容提交到远程的仓库中。。

工作区和暂存区

这里写图片描述

Git和SVN的一个重要区别是,Git中有暂存区的概念。我们在电脑上直接可以操作的目录就是工作区。而其中的隐藏目录.git其实就相当于版本库。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

常用的命令git add其实就是将所做的修改提交到暂存区中,而git commit其实是将暂存区的所有内容提交到当前分支。上面的一幅图需要理解透彻,大部分命令都是基于这个结构来实现不同的操作。

Git常用命令

添加远程仓库(git remote add)
git remote add origin git@github.com:jiangxr/git-practice.git

从远程仓库克隆(git clone)
git clone git@github.com:jiangxr/git-practice.git

显示工作树的状态(git status)

这里写图片描述
在图片的显示中,bb.txt文件新创建的,已经使用git add命令提交到暂存区中;README.md文件是之前已经有过提交的记录,现在仅仅进行了修改,没有其他操作;aa.txt文件新创建了,没有其他的任何操作。显示了三种文件的不同状态。<喎"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxzdHJvbmc+z9TKvtfuvfy1vdfu1La1xMzhvbvI1da+PC9zdHJvbmc+KGdpdCBsb2cpPGJyIC8+DQo8aW1nIGFsdD0="这里写图片描述" src="http://www.2cto.com/uploadfile/Collfiles/20170630/20170630092726275.png" title="\" />

回退版本(git reset [&ndash;hard"soft|mixed|merge|keep] [< commit > 或 HEAD])

&ndash;hard:
替换引用的指向.引用指向新的提交ID;
替换暂存区.替换后,暂存区的内容和引用指向的目录树一致;
替换工作区.替换后,工作区的内容变得和暂存区一致,也和HEAD所指向的目录树内容相同. &ndash;soft:
替换引用的指向.引用指向新的提交ID,即只更改引用的指向,不该编暂存区和工作区. &ndash;mixed:
替换引用的指向.引用指向新的提交ID;
替换暂存区.替换后,暂存区的内容和引用指向的目录树一致;
即更改引用的指向及重置暂存区,但是工作区不变.

取消工作区的修改(git checkout &ndash; filename)
这个命令的实质是用暂存区的内容覆盖工作区对应文件的额内容。

隐藏当前工作现场(git stash)
如果现在正在branch1分支上进行作业,但是作业进行到一半,有一个急需的bug需要修复,但是完成一半的作业还不能进行提交,可以使用git stash命令将完成一半的作业隐藏起来,然后再创建一个分支修复bug。
git stash list // 显示隐藏的修改内容
git stash pop //恢复隐藏的修改内容,stash内容删除
git stash apply //回复隐藏的内容,stash内容不进行删除

标签操作(git tag)

git tag < name >  //新建一个标签,可以指定commit id。
git tag //查看所有标签信息
git tag push < tagname> //推送一个本地标签
git tag push --tags //推送本地所有未推送的标签
git tag push origin < tagname> //推送标签到远程
git tag -d < tagname> //删除本地的一个标签
git tag push :refs/tags/< tagname> //删除远程的标签

显示尚未暂存的目录更新的内容(git diff)
其实就是比较工作目录和暂存区的区别

上面主要简要的介绍一些比较常用的命令,算是平常用的比较多的了

相关文章
最新文章
热点推荐