首页 > 代码库 > Git 详细命令集
Git 详细命令集
初始化一个Git仓库,使用git init命令。添加文件到Git仓库,分两步:第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;第二步,使用命令git commit,完成。
git status 命令可以让我们时刻掌握仓库当前的状态
git diff 顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到修改地方。
git log 命令显示从最近到最远的提交日志,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上?--pretty=oneline参数,相当于只看commit id:
如下:
$ git log --pretty=oneline 3628164fb26d48395383f8f31179f24e0882e1e0 append GPL ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
(一个SHA1计算出来的一个非常大的数字,用十六进制表示,就是你看到的commit id
)
$ git reset --hard HEAD^ 在Git中,用HEAD
表示当前版本,也就是最新的提交3628164...882e1e0
,上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
--hard
参数有啥意义?这个后面再讲,现在你先放心使用。
$ git reflog 在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^
回退到“上一个”版本时,再想恢复到“新版本”,就必须找到“新版本的commit id。Git提供了一个命令git reflog
用来记录你的每一次命令:
$ git reflog ea34578 HEAD@{0}: reset: moving to HEAD^ 3628164 HEAD@{1}: commit: append GPL ea34578 HEAD@{2}: commit: add distributed cb926e7 HEAD@{3}: commit (initial): wrote a readme file
现在,你又可以乘坐时光机回到未来了
名词解释:
工作区(Working Directory):就是你在电脑里能看到的目录,就是一个工作区:
版本库(Repository):工作区有一个隐藏目录.git
,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master
,以及指向master
的一个指针叫HEAD
。
分支和HEAD
的概念我们以后再讲。
前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改。
你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
Git是跟踪修改的,每次修改,如果不add
到暂存区,那就不会加入到commit
中。
git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt
自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit
或git add
时的状态
git checkout -- file
命令中的--
很重要,没有--
,就变成了“创建一个新分支”的命令,我们在后面的分支管理中会再次遇到git checkout
命令。
Git同样告诉我们,用命令git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回工作区:
$ git reset HEAD readme.txt Unstaged changes after reset: M readme.txt
git reset
命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD
时,表示最新的版本。
git rm 用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
使用时:一是确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
:
$ git rm test.txt rm ‘test.txt‘ $ git commit -m "remove test.txt" [master d17efd8] remove test.txt 1 file changed, 1 deletion(-) delete mode 100644 test.txt
另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- test.txt
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
git checkout 命令加上-b参数表示创建并切换,相当于以下两条命令:
$ git branch dev $ git checkout dev Switched to branch ‘dev‘
git branch
命令查看当前分支:
$ git branch * dev master
Git 详细命令集