首页 > 代码库 > 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 commitgit 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 详细命令集