1、安装git仓库
[root@a ~]# yum install -y git
安装完成后,还需要最后一步设置,在命令行输入:
[root@a ~]# git config --global user.name "Your Name"
[root@a ~]# git config --global user.email "email@example.com"
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2、创建版本库(repository)
选择合适位置,创建一个空目录
[root@a ~]# mkdir /soft/learngit&&cd learngit
通过命令将该目录变成git库
[root@a learngit]# git init
[root@a learngit]# ls -ah
. .. .git
[root@a learngit]#vim readme.txt
把文件添加到仓库
[root@a learngit]#git add readme.txt
把文件提交到仓库
[root@a learngit]#git commit -m "this is a readme.file"
   多次添加,一次提交。因为commit可以一次提交很多文件,所以你可以多次add不同的文件git add命令实际上就是把要提交的所有修改放到暂存区(Stage),然后,执行git commit就可以一次性把暂存区的所有修改提交到分支
也不一定必须在空目录下创建Git仓库,选择一个已经有东西的目录也是可以的
3、版本修改、回退等操作
[root@a learngit]# vim readme.txt 
[root@a 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")
命令git status告诉我们当前仓库状态。这里是指readme.txt被修改过了,但还没有准备提交的修改
[root@a learngit]# git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..5a93dd9 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,4 @@
 Git is a version control system.
 Git is free software.
+Git is a distrebuted version control system.
+Git is free software.
命令git diff能查看具体修改了什么内容,这里是增加了后两行。知道了修改内容,再使用git add 和git commit就放心多了。
git版本控制系统可以告诉我们历史记录,使用git log命令查看
[root@a learngit]# git log
commit 02bf7cf77fc019aee262060a11c17b278e4c2e33
Author: feng <abc@abc.com>
Date:   Sat Jun 1 11:20:07 2019 +0800
append GPL
commit a5b274ffa6b771afcab33a74aa686695b0338263
Author: feng <abc@abc.com>
Date:   Sat Jun 1 11:05:30 2019 +0800
add two GIT colum
commit f7b8f9dc3387a55fe9f0d9bea8c569a689a59332
Author: feng <abc@abc.com>
Date:   Sat Jun 1 10:23:14 2019 +0800
wrote a readme file
其中--pretty=oneline参数简化输出信息 
[root@a learngit]# git log --pretty=oneline
02bf7cf77fc019aee262060a11c17b278e4c2e33 append GPL
a5b274ffa6b771afcab33a74aa686695b0338263 add  two GIT colum
f7b8f9dc3387a55fe9f0d9bea8c569a689a59332 wrote a readme file
 需要友情提示的是,你看到的一大串类似1094adb...的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示,而且你看到的commit id和我的肯定不一样,以你自己的为准。为什么commit id需要用这么一大串数字表示呢?因为Git是分布式的版本控制系统,后面我们还要研究多人在同一个版本库里工作,如果大家都用1,2,3……作为版本号,那肯定就冲突了每提交一个新版本,实际上Git就会把它们自动串成一条时间线。如果使用可视化工具查看Git历史,就可以更清楚地看到提交历史的时间线
可以使用git reset命令回退到上一个版本
[root@a learngit]# git reset --hard HEAD^
HEAD is now at a5b274f add  two GIT colum
[root@a learngit]# cat readme.txt 
Git is a version control system.
Git is free software.
Git is a distrebuted version control system.
Git is free software.
重新回到最新的版本
[root@a learngit]# git reset --hard 02bf7cf77fc019aee262060a11c17b278e4c2e33
HEAD is now at 02bf7cf append GPL
[root@a learngit]# git log
commit 02bf7cf77fc019aee262060a11c17b278e4c2e33
Author: feng <abc@abc.com>
Date:   Sat Jun 1 11:20:07 2019 +0800
append GPL
commit a5b274ffa6b771afcab33a74aa686695b0338263
Author: feng <abc@abc.com>
Date:   Sat Jun 1 11:05:30 2019 +0800
add two GIT colum
commit f7b8f9dc3387a55fe9f0d9bea8c569a689a59332
Author: feng <abc@abc.com>
Date:   Sat Jun 1 10:23:14 2019 +0800
wrote a readme file
Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向append GPL:
┌────┐
│HEAD│
└────┘
   │
   └──> ○ append GPL
        │
        ○ add two GIT colum
        │
        ○ wrote a readme file
在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add two GIT colum版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:
[root@a learngit]# git reflog
a5b274f HEAD@{1}: reset: moving to HEAD^
02bf7cf HEAD@{2}: commit: append GPL
a5b274f HEAD@{3}: commit: add two GIT colum
f7b8f9d HEAD@{4}: commit (initial): wrote a readme file
终于舒了口气,从输出可知,append GPL的commit id是1094adb,现在,你又可以乘坐时光机回到未来了
现在版本库变成了这样,暂存区就没有任何内容了:
stage(或者叫index)的暂存区,在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区。Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
git比较第一次和第二次修改的变化
[root@a learngit]# git diff HEAD -- readme.txt
diff --git a/readme.txt b/readme.txt
index 3e8895f..2157c06 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,4 +4,4 @@ Git is a distrebuted version control system.
 Git is free software.
 Git is free software under the GPL
 Git has a mutable index called stage.
-
+   sid
二次提交后,再比较两次修改的变化
[root@a learngit]# git add readme.txt 
[root@a learngit]# git commit -m "sid"
[master 9bfb1ec] sid
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@a learngit]# git diff HEAD -- read.txt
[root@a learngit]# 
内容待续……
 
 
                    
                     
                    
                 
                    
                 
                
 
 
         
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号