一、介紹
Git 是一個開源的分佈式版本控制系統,用於敏捷高效地處理任何或小或大的項目。
二、下載安裝配置
2.1 下載地址
2.2 配置
//配置個人名字和郵箱地址
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
三、Git使用
3.1 創建本地版本庫(倉庫)
進入所需要設置爲版本庫的目錄路徑,使用命令git init
。生成的.git文件是用於跟蹤管理版本庫,一般不要去修改。
//新建文件夾learnGit
PS H:\> mkdir learnGit
PS H:\> cd .\learnGit\
//將該文件夾設置爲Git版本庫
PS H:\learnGit> git init
Initialized empty Git repository in H:/learnGit/.git/
3.2 通過Git進行版本管理
在項目開發過程中,當項目功能完成的時候我們都可以更新到版本庫中。如下圖所示,我們放在文件中的項目或文件是在工作區中。當執行git add <file>
時,將工作區的項目/文件加入到stage暫存區中 (注意此時添加的文件並沒有進入版本庫管理)。當進行git commit -m 'xx'
纔是將暫存區的內容提交當前分支中。
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-O7OIotu0-1587006367893)(//stopping.top:8081/view/5e9714575fcf542bec0752ad ‘‘圖片title’’)]
下面介紹基礎的內容提交到分支的基本流程:
(1)在工作區中新建文本文件測試
PS H:\learnGit> cat .\test.txt
Hello Git!
(2) 將內容添加到暫存區中 git add <file>
PS H:\learnGit> git add .\test.txt
(3) 查看版本庫的狀態 git status
PS H:\learnGit> git status
On branch master//主分支
//存在新文件test.txt 還沒有提交
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test.txt
(4) 將暫存區的內容提交到版本庫進行管理 git commit -m 'msg'
PS H:\learnGit> git commit -m 'first commit'
[master (root-commit) 5c92697] first commit
1 file changed, 1 insertion(+)
create mode 100644 test.txt
查看提交內容的區別
有時候因爲某些原因在下一次提交內容的時候忘記了我們修改了什麼內容,可以通過git diff <filename>
對比與上一次commit的內容的區別。
(1)再次修改test.txt
文件
PS H:\learnGit> cat .\test.txt
Hello Git!
test git diff//新增內容
(2)使用命令 git diff
PS H:\learnGit> git diff
diff --git a/test.txt b/test.txt
index a8b73e0..9a7947a 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
-Hello Git<A3><A1>
\ No newline at end of file
+Hello Git<A3><A1>
+test git diff
\ No newline at end of file
版本回溯
在Git版本管理的過程中,難免會出現需要退回到之前版本的情況。
(1)通過git log --pretty=oneline
查看版本庫commit id(從上到下按最近更新到最遠的id排序)。HEAD指針指向的版本就是當前定位的版本。
PS H:\learnGit> git log --pretty=oneline
661f835daaa09c9f2d1f772fd8b6d8dae0560540 (HEAD -> master) test diff//第二次提交的id HEAD->master 當前指向的版本
5c92697cb13b9fb09d444efb1a58749f0539c8a8 first commit //第一次提交的id
(2)例如退回到第一次commit的版本內容 git reset --hard HEAD^
- git reset --hard HEAD^(
^
的數量表示退回到上幾個版本) - git reset --hard HEAD~2 退回到上2個版本(數字表示上n個版本)
PS H:\learnGit> git reset --hard HEAD^
HEAD is now at 5c92697 first commit
(3)再次打印修改日誌可以發現,HEAD指針已經指向到commit的第一個版本了,從上面提示觀察也知道HEAD的指針指向了id爲5c92697,即使第一次提交的版本
PS H:\learnGit> git log --pretty=oneline
5c92697cb13b9fb09d444efb1a58749f0539c8a8 (HEAD -> master) first commit
(4)查看test.txt的內容,確實回到第一個版本的內容。
PS H:\learnGit> cat .\test.txt
Hello Git!
(5)那麼,若又想退回去剛剛的版本怎麼處理了呢?git reset --hard HEAD^
也就只能退回到上n個版本,從log打印知道現在只有第一次commit的信息了。這個時候我們就可以從步驟一打印的commit id
進行版本回溯了。即commit id = 661f835da
.
//通過commit id 回溯版本
PS H:\learnGit> git reset --hard 661f835da
HEAD is now at 661f835 test diff
//打印日誌情況
PS H:\learnGit> git log --pretty=oneline
661f835daaa09c9f2d1f772fd8b6d8dae0560540 (HEAD -> master) test diff
5c92697cb13b9fb09d444efb1a58749f0539c8a8 first commit
//內容已經恢復
PS H:\learnGit> cat .\test.txt
Hello Git!
test git diff
PS H:\learnGit>
撤銷修改 -git checkout --file的使用
該命令主要是將內容撤銷到最近commit或add到版本庫之前的內容。大概就是寫了一堆bug心煩意亂的時候直接重新開始的狀態吧。
PS H:\learnGit> cat .\test.txt
Hello Git!
test git diff
test checkout
PS H:\learnGit> git checkout -- .\test.txt
//已經撤銷了內容
PS H:\learnGit> cat .\test.txt
Hello Git!
test git diff
PS H:\learnGit> notepad.exe .\test.txt
如果是已經添加或者提交到版本庫就沒有辦法通過這個命令撤銷內容了。
PS H:\learnGit> cat .\test.txt
Hello Git!
test git diff
testadd checkout
PS H:\learnGit> git add .\test.txt
PS H:\learnGit> git checkout -- .\test.txt
PS H:\learnGit> cat .\test.txt
Hello Git!
test git diff
testadd checkout
PS H:\learnGit>