關(guān)于Git的介紹有很多,我們還是簡(jiǎn)單的說下,還是有很多朋友沒有從svn轉(zhuǎn)到git上。
git介紹
git是一款開源的分布式管理版本控制軟件,用于高效的支持大中小項(xiàng)目的開發(fā),提供版本內(nèi)容的控制,查詢,搜索等內(nèi)容。
git中主要有三個(gè)工作區(qū):
- 版本庫(kù):在每一個(gè)git工程中都會(huì)存在一個(gè).git的文件夾,該文件里面具有g(shù)it版本控制的信息。
- 工作區(qū):就是我們?cè)谖募夸浵驴吹降奈募A。
- 暫存區(qū):暫存區(qū)是存儲(chǔ)在.git文件下的,所以我們一般稱為index區(qū)域或者stage區(qū)域,也可以稱為索引。
主要是理解三個(gè)工具區(qū)的作用,理解三個(gè)區(qū)域能幫助我們理解git操作針對(duì)區(qū)域的操作。
git的使用
我個(gè)人擦走哦偏愛命令行操作,所以講解流程是在命令行的操作下。偏愛圖形化操作的朋友可以對(duì)照著執(zhí)行。
git的安裝
ubuntu的系統(tǒng)安裝
sudo apt-get install git
git --version
ubuntu@VM-0-16-ubuntu:~/Desktop/test/JAVA8ShiZhanYuanMa$ git --version
git version 2.17.1
centos 的安裝
yum install git
git的基礎(chǔ)命令講解
-
clone
目的是用來拷貝在某個(gè)地址的源代碼,或者是數(shù)據(jù)倉(cāng)庫(kù)地址。如果后面跟著一個(gè)另外的名稱是用來另命名。
git clone https://gitee.com/*/*.git qiqi 重新命名本地項(xiàng)目名字
- init
init 是用來初始化一個(gè)地址的,或者初始化一個(gè)本地倉(cāng)庫(kù)
ubuntu@VM-0-16-ubuntu:~/Desktop/test/test$ git init
Initialized empty Git repository in /home/ubuntu/Desktop/test/test/.git/
ubuntu@VM-0-16-ubuntu:~/Desktop/test/test$ ll
total 12
drwxrwxr-x 3 ubuntu ubuntu 4096 Dec 17 23:26 ./
drwxrwxr-x 5 ubuntu ubuntu 4096 Dec 17 23:26 ../
drwxrwxr-x 7 ubuntu ubuntu 4096 Dec 17 23:26 .git/
- add
目的是用來將工作區(qū)下的目錄下某個(gè)文件或者是所有文件添加到暫存區(qū)中。
存在不同的區(qū)別
- add . :監(jiān)控工作區(qū)的狀態(tài)樹,所有變化到暫存區(qū),不包含刪除文件。
- add -u :僅監(jiān)控add的文件,將修改的文件提交到暫存區(qū),不提交新文件。
- add -a : 修改文件內(nèi)容,新文件,刪除的文件。都提交
- status
查看上次的提交有沒有修改。顯示的是修改或者寫入緩存的改動(dòng)。
git status 幫助展示修改后的文件如果不想看詳細(xì)信息
git status -s 只輸出改變的文件
- dit diff
這個(gè)命令也是我們經(jīng)常用到的命令,用來查看status詳細(xì)的信息。
根據(jù)工作目錄中的文件與暫存區(qū)快照的之間的差異。顯示的是修改或者緩存一行行的具體修改內(nèi)容。
- git diff :尚未緩存的改動(dòng),緩存說的是這個(gè)文件還沒有被執(zhí)行add操作。
- git diff --cached : 已緩存的改動(dòng) ,代表已經(jīng)執(zhí)行了add操作中
- gid diff HEAD:已緩存的與未緩存的所有改動(dòng)
- git diff --stat:顯示整個(gè)摘要 ,具體信息
ubuntu@VM-0-16-ubuntu:~/Desktop/test/qiqi/studyJava8$ git status -s
M src/test/Test.java
ubuntu@VM-0-16-ubuntu:~/Desktop/test/qiqi/studyJava8$ git diff
diff --git a/studyJava8/src/test/Test.java b/studyJava8/src/test/Test.java
index 1c7eaa0..477a891 100644
--- a/studyJava8/src/test/Test.java
+++ b/studyJava8/src/test/Test.java
@@ -27,7 +27,7 @@ public class Test {
}
};
t1.start();
- Thread.sleep(2000);
+ Thread.sleep(300);^M
t1.interrupt();
}
###這里執(zhí)行 git add操作之后
ubuntu@VM-0-16-ubuntu:~/Desktop/test/qiqi/studyJava8$ git diff
這里不顯示文本信息
ubuntu@VM-0-16-ubuntu:~/Desktop/test/qiqi/studyJava8$ git diff --cached
diff --git a/studyJava8/src/test/Test.java b/studyJava8/src/test/Test.java
index 1c7eaa0..477a891 100644
--- a/studyJava8/src/test/Test.java
+++ b/studyJava8/src/test/Test.java
@@ -27,7 +27,7 @@ public class Test {
}
};
t1.start();
- Thread.sleep(2000);
+ Thread.sleep(300);^M
t1.interrupt();
}
- commit
add之后我們將數(shù)據(jù)內(nèi)容寫入到了緩存區(qū),其實(shí)也是暫存區(qū)。我們使用commit將內(nèi)容添加到倉(cāng)庫(kù)中去。
commit -m “摘要信息”
commit -a //將所有的unstaged(未申明的),不建議這么使用。相當(dāng)于 git add的操作
commit -am 上面兩步操作
-
commit --amend 增補(bǔ)提交,將本次提交內(nèi)容與當(dāng)前提交節(jié)點(diǎn)相同的父節(jié)點(diǎn)進(jìn)行一次新的提交,舊的提交會(huì)被取消。
從這個(gè)上面我們經(jīng)常使用的操作提交時(shí)commit -m “摘要信息” ,commit --amend "用來合并提交,將前后兩個(gè)提交合并為一個(gè)提交"
- stash
將當(dāng)前的目錄與index改動(dòng)內(nèi)容壓入一個(gè)棧中,保證一個(gè)完整的工作目錄。再次進(jìn)行操作,
git stash list // 顯示這個(gè)棧的使用內(nèi)容
git stash pop // 進(jìn)行出棧,提取出來保存到工作區(qū)上
git stash // 就是代表的進(jìn)棧。
今天給搭建講解了9個(gè)基礎(chǔ)命令,這些都是平常常用到的,當(dāng)然也有部分的嗎,命令不是操作用的。下篇文章也會(huì)進(jìn)行介紹剩余的,并且還結(jié)合一篇實(shí)戰(zhàn)操作。幫助理解git。
理解了整個(gè)流程,git用起來還是很簡(jiǎn)答,方便的。
最后建議大家在使用git的時(shí)候,多多使用命令行來操作,這樣能幫助學(xué)習(xí)到很多內(nèi)容。