创建版本库先在文件夹下下面创建一个目录$ mkdir personanlity $ cd personanlity $ pwd /home/wangguangyi/personanlity第一步通过 git init命令创建一个版本库wangguangyiado:~/personanlity$ git init Initialized empty Git repository in /home/wangguangyi/personanlity/.git/然后我们可以创建一个readme文件然后写入echo Git is a version control system. Git is free software. readme.txt然后我们通过git add 将我们的文件添加到仓库wangguangyiado:~/personanlity$ git add readme.txt接着直接commit就可以了wangguangyiado:~/personanlity$ git commit -m write a readme txt在这里如果有小伙伴没有配置自己的仓库账户可能会提示配置信息Author identity unknown *** Please tell me who you are. Run git config --global user.email youexample.com git config --global user.name Your Name to set your accounts default identity. Omit --global to set the identity only in this repository. fatal: empty ident name (for wangguangyiado.localdomain) not allowed遇到这个就是你自己取gitee或者github中复制自己的仓库账户就可以了然后直接登录提交成功就是这样的界面wangguangyiado:~/personanlity$ git commit -m write a readme txt [master (root-commit) d136ca6] write a readme txt 1 file changed, 3 insertions() create mode 100644 readme.txt时光穿梭机修改提交到版本库我么接着修改readme中的内容Git is a distributed version control system. Git is free software.然后查看状态wangguangyiado:~/personanlity$ git status On branch master Changes not staged for commit: (use git add file... to update what will be committed) (use git restore file... to discard changes in working directory) modified: readme.txt no changes added to commit (use git add and/or git commit -a)这里显示modified 证明我们修改成功这里我们可以查看我们修改的内容wangguangyiado:~/personanlity$ git diff readme.txt diff --git a/readme.txt b/readme.txt index 37c18bc..b6cc2a7 100644 --- a/readme.txt b/readme.txt -1,3 1,4 -Git is a version control system. Git is a distributed version control system.^M Git is free software. 接着就是前面同样的操作wangguangyiado:~/personanlity$ git add readme.txt wangguangyiado:~/personanlity$ git status On branch master Changes to be committed: (use git restore --staged file... to unstage) modified: readme.txt wangguangyiado:~/personanlity$ git commit -m add distributed [master efe602e] add distributed 1 file changed, 2 insertions(), 1 deletion(-) wangguangyiado:~/personanlity$ git status On branch master nothing to commit, working tree clean版本回退现在我们在修改文件Git is a distributed version control system. Git is free software distributed under the GPL.然后接着继续提交修改$ git add readme.txt $ git commit -m append GPL [master 1094adb] append GPL 1 file changed, 1 insertion(), 1 deletion(-)ok那么我们一起回顾一下我们到底提交了几个版本#版本一 Git is a version control system. Git is free software. #版本二 Git is a distributed version control system. Git is free software. #版本三 Git is a distributed version control system. Git is free software distributed under the GPL.一共这有这三个版本我们可以使用git log 打印出日志看看wangguangyiado:~/personanlity$ git log --prettyoneline 7fb43c055e2c10a7cc5854eb74529b54be9f04c2 (HEAD - master) append GPL efe602ee6288991be987c3ad0734b8b78847807a add distributed d136ca60af24c2b175791f72023054ddababaf03 write a readme txt这里使用 log --prettyoneline简单的看当然也可以直接使用 git logwangguangyiado:~/personanlity$ git reset --hard HEAD^ HEAD is now at efe602e add distributed--hard参数有啥意义--hard会回退到上个版本的已提交状态而--soft会回退到上个版本的未提交状态--mixed会回退到上个版本已添加但未提交的状态。现在先放心使用--hard。看看readme.txt的内容是不是版本add distributedwangguangyiado:~/personanlity$ cat readme.txt Git is a distributed version control system. Git is free software.可以看到版本确实回退了然后我们在接着看一下logwangguangyiado:~/personanlity$ git log --prettyoneline efe602ee6288991be987c3ad0734b8b78847807a (HEAD - master) add distributed d136ca60af24c2b175791f72023054ddababaf03 write a readme txt确实最新的版本已经不见了但是我们还是有办法还原的只要窗口交互的信息还在我们就还可以恢复wangguangyiado:~/personanlity$ git reset --hard 7fb4 HEAD is now at 7fb43c0 append GPL wangguangyiado:~/personanlity$ git log --prettyoneline 7fb43c055e2c10a7cc5854eb74529b54be9f04c2 (HEAD - master) append GPL efe602ee6288991be987c3ad0734b8b78847807a add distributed d136ca60af24c2b175791f72023054ddababaf03 write a readme txt这里的7fb4就是前面我们对应的那一大串key的开头我们拿到即可但是我们在操作的时候还是会遇到以外的比如窗口关闭了找不到对应id怎么办也就是说在Git中总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add distributed版本时再想恢复到append GPL就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令wangguangyiado:~/personanlity$ git reflog 7fb43c0 (HEAD - master) HEAD{0}: reset: moving to 7fb4 efe602e HEAD{1}: reset: moving to HEAD^ 7fb43c0 (HEAD - master) HEAD{2}: commit: append GPL efe602e HEAD{3}: commit: add distributed d136ca6 HEAD{4}: commit (initial): write a readme txtrelog可以查看当前账户的提交历史这样我们就不用怕了未完待续....