Git是一种非常优秀的免费开源分布式版本控制系统。本文将对常用的命令进行集中记录,以方便查阅。
需要注意的是,这里我只简要记录指令功能,对于新人学习来说还是推荐廖雪峰老师的教程,非常浅显易懂。
本篇文章是关于Git的基本操作指令,接下来的文章会逐步总结Github远程仓库、分支管理与标签管理的各种相关操作指令。
1.安装完成后设置:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
其中- -global 这个参数表示这台机器上所有的Git仓库都会使用这个配置
2.创建版本库:
$ mkdir learngit
$ cd learngit
$ pwd
创建空目录,pwd命令用于显示当前目录。
$ git init
把目录变成仓库。
$ ls -ah
查看隐藏的.git目录。
3.添加文件到版本库:
$ git add readme.txt
$ git commit -m "wrote a readme file"
创建文件(例如:readme.txt)后,把文件添加到仓库,命令git add 可反复多次使用,添加多个文件。
-m后面输入的是本次提交的说明.commit可以一次提交很多文件。
每次修改,如果不add到暂存区,那就不会加入到commit中。
4.状态及修改查看:
$ git status
查看工作区状态。
$ git diff
查看修改内容。
$ git diff HEAD -- readme.txt
上一版commit提交之后再修改出新一版还未提交时,查看当前工作区和版本库里面最新版本的区别。
5.版本回退:
$ git log
查看提交历史,以便确定要回退到哪个版本。如果嫌输出信息太多,可以加上 - -pretty=oneline参数。
显示内容里commit后的数字是commit id(版本号)。从新版本退回旧版本时新版本号不会再显示,若要重回新版本,请参考下文的git reflog命令。
$ git reflog
查看命令历史,以便确定要回到未来的哪个版本。
$ git reset --hard commit_id
在各版本之间穿梭。用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^。要退回上一版本commit_id可以用HEAD^。
$ cat readme.txt
在Git控制台显示文本内容,适合小文本快速查看。
$ git checkout -- file
命令中的- -很重要,没有- -,就变成了“切换到另一个分支”的命令。
命令git checkout - - readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在撤销修改就回到和版本库一模一样的状态,即最近一次commit的版本;
一种是readme.txt已经add添加到暂存区后,又作了修改,现在撤销修改就回到添加到暂存区后的状态,即放弃文件添加到暂存区之后在工作区又做的修改,不是放弃暂存区文件。
若是已经add添加到暂存区后,想放弃暂存区的内容,请参考下文的git reset HEAD file。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
$ git reset HEAD file
把暂存区的修改撤销掉(unstage),重新放回工作区。执行命令后暂存区空,工作区有修改,若再想将工作区的修改撤销,请参考上文git checkout - - file。
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。用HEAD表示最新的版本。
$ git rm readme.txt
删除readme.txt文件,需要再commit提交后才会修改版本库。若发现错删,但还未提交版本库,请使用git checkout回撤。
若文件修改后已经commit提交到了版本库,再想撤销修改请参考上文git reset - -hard commit_id。