一、简介
二、安装
yum install git
apt-get install git
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。
注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
三、使用
1.使用git init初始化。
先创建一个目录,用于存放版本库。
mkdir /learngit
进入learngit文件夹,执行git init
[root@node6 ~]# mkdir /learngit
[root@node6 ~]# cd /learngit/
[root@node6 learngit]# git init
Initialized empty Git repository in /learngit/.git/
2.新增一个文件到版本库。
使用git add file增加一个文件。
使用git commit -m “add file” 提交,-m参数表示对提交文件的说明。
[root@node6 learngit]# vim readme.txt
[root@node6 learngit]# git add readme.txt
[root@node6 learngit]# git commit -m "wrote a readme file"
[master (root-commit) fcfb6a9] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
备注:可以进行多次add增加文件,最后统一进行commit提交。
3.状态查看
使用git status 查看工作区状态。
[root@node6 learngit]# git status
# On branch master
nothing to commit, working directory clean
对readme.txt新增一条”hello world!”内容,使用git status查看状态
[root@node6 learngit]# vim readme.txt
[root@node6 learngit]# git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: readme.txt
#
no changes added to commit (use "git add" and/or "git commit -a")
上面的命令告诉我们,readme.txt被修改过了,但还没有准备提交的修改.
可以使用git diff查看被修改了什么。
[root@node6 learngit]# git diff
diff --git a/readme.txt b/readme.txt
index 46d49bf..dc0cf6d 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
Git is a version control system.
Git is free software.
+hello world!
[root@node6 learngit]#
使用git add 和git commit进行提交。
[root@node6 learngit]# git add readme.txt
[root@node6 learngit]# git commit -m "add hello world"
[master edee36a] add hello world
1 file changed, 1 insertion(+)
4.记录查看
使用git log进行记录查看。
[root@node6 learngit]# git log
commit edee36a91bbc5927c881811bcdc6859dd3477c7c
Author: caoqinghua <caoqinghua@elion.com.cn>
Date: Fri Feb 17 10:18:16 2017 +0800
add hello world
commit fcfb6a9817424f0ae93c3aec225c049ba925c0b0
Author: caoqinghua <caoqinghua@elion.com.cn>
Date: Fri Feb 17 09:44:49 2017 +0800
wrote a readme file
可以使用–pretty=oneline命令进行简化输出。
[root@node6 learngit]# git log --pretty=oneline
edee36a91bbc5927c881811bcdc6859dd3477c7c add hello world
fcfb6a9817424f0ae93c3aec225c049ba925c0b0 wrote a readme file
5.版本回退
使用git reset命令进行版本回退
[root@node6 learngit]# git reset --hard HEAD^
HEAD is now at fcfb6a9 wrote a readme file
[root@node6 learngit]# git log --pretty=oneline
fcfb6a9817424f0ae93c3aec225c049ba925c0b0 wrote a readme file
HEAD表示当前版本,HEAD^表示上一个版本,HEAD^^表示上上一个版本。HEAD~10回退往上10个版本。
回退之后如果后悔了,只要知道id,还是可以恢复的。
[root@node6 learngit]# git reset --hard edee36a91
HEAD is now at edee36a add hello world
[root@node6 learngit]# git log --pretty=oneline
edee36a91bbc5927c881811bcdc6859dd3477c7c add hello world
fcfb6a9817424f0ae93c3aec225c049ba925c0b0 wrote a readme file
发现已经恢复到hello world版本了。
如果找不到想要恢复的id,可以使用git reflog命令查看历史记录。
[root@node6 learngit]# git reflog
edee36a HEAD@{0}: reset: moving to edee36a91
fcfb6a9 HEAD@{1}: reset: moving to HEAD^
edee36a HEAD@{2}: commit: add hello world
fcfb6a9 HEAD@{3}: commit (initial): wrote a readme file