安装(Linux)
1 | $ sudo pacman -S git |
安装完之后设置用户和邮箱1
2$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
以上的 --global
指定了, 本系统所有的仓库都会使用这个配置。
新建一个版本库
1 | $ mkdir mygit |
添加文件
假如你在本目录下添加了一个叫readme.txt
的文件
1 | $ git add readme.txt |
commit -m
后面的参数为此次修改的提交说明.
提交修改后的文件
查看状态
如果你修改了redme.txt
运行git status
1 | $ git status |
它告诉你, redme.txt
已经被修改过了, 但是还没有准备提交的修改.
比较修改前和修改后的不同
如果你已经忘记了你修改的内容, 运行git diff
比较不同.
1 | $ git diff readme.txt |
可以看到, 我把Git is free software distributed ubder the GPL.
换成了Git is free software distributed ubder the f.
.
提交修改
$ git add reame.txt $ git commit -m "change GPL to f"
版本退回
查询修改记录
通过git log
$ git log commit eea876296f438267c5a2983b2f31792067558b40 (HEAD -> master) Author: ffshine <ffshine9@gmail.com> Date: Wed Jan 31 20:17:13 2018 +0800 change GPL to f commit 4c7884d8021d9b333651c11eb9746d2ada23cf4a Author: ffshine <ffshine9@gmail.com> Date: Wed Jan 31 19:29:55 2018 +0800 add GPL commit d79a6a5e90fa4ef7d2a1fb2c788b98307f411311 Author: ffshine <ffshine9@gmail.com> Date: Wed Jan 31 19:28:25 2018 +0800 add distributed commit 340d6f6d36da7f551db7ca6e78e529088732f21d Author: ffshine <ffshine9@gmail.com> Date: Wed Jan 31 19:25:17 2018 +0800 wrote a readme file
如果记录过多不好查阅的话, 添加--pretty=oneline
参数, 所有的log都会在一行显示出来.
回滚
在git中,有个HEAD
指针, 它指向当前的记录,HEAD^
指向前一个记录,HEAD^^
再往前一个, 以此类推. 当然,前一百个不会让你写一百个^,你可以这样写HEAD~100
.
$ git raset --hard HEAD^
后悔了
回滚了后悔了怎么办, git每条修改记录创建时, 都会有一个对应的ID. 比如说, 上一条我运行git commit -m "change GPL to f"
后, 返回的是:
[master eea8762] change GPL to f
如果要回到这一条记录, 只需要运行:
$ git reset --hard eea8762
但是,如果回滚之后, 关闭了窗口, 找不到这条记录了怎么办. 没关系, git已经悄悄记录了你执行的每一条命令,只需要通过git reflog
就能查询出来.
$ git reflog eea8762 (HEAD -> master) HEAD@{0}: commit: change GPL to f 4c7884d HEAD@{1}: reset: moving to 4c7884d d79a6a5 HEAD@{2}: reset: moving to HEAD^ 4c7884d HEAD@{3}: commit: add GPL d79a6a5 HEAD@{4}: commit: add distributed 340d6f6 HEAD@{5}: commit (initial): wrote a readme file