天天看點

vscode 終端運作git_vscode中使用git終端指令行

名詞解釋

1.工作區(Working Directory) : 就是你在電腦裡能看到的目錄,比如我的GitHub檔案夾目錄

2.版本庫(Repository): 在工作區有一個隐藏目錄.git,這個就是Git的版本庫

3.暫存區: 在版本庫中存在一個成為Stage的暫存區,它是專門存儲修改和添加的區域。一旦送出後,如果你又沒有對工作區做任何修改,那麼暫存區就是幹淨的

管理修改(需要案例證明)

為什麼Git比其他版本控制系統設計得優秀,因為Git跟蹤并管理的是修改,而非檔案。你會問,什麼是修改?比如你新增了一行,這就是一個修改,删除了一行,也是一個修改,更改了某些字元,也是一個修改,删了一些又加了一些,也是一個修改,甚至建立一個新檔案,也算一個修改。

Git不會送出沒有放到暫存區的修改

這裡我畫了一個圖友善大家了解;

vscode 終端運作git_vscode中使用git終端指令行

git流程.png

vscode 終端運作git_vscode中使用git終端指令行

bg2015120901.png

Workspace:工作區

Index / Stage:暫存區

Repository:倉庫區(或本地倉庫)

Remote:遠端倉庫

vscode 終端運作git_vscode中使用git終端指令行

git_three_rigon.png

工作區(working diretory) 用于修改檔案

緩存區(stage) 是用來暫時存放工作區中修改的内容

送出曆史(commit history) 送出代碼的曆史記錄

1.安裝:GitLens

2.快捷鍵打開終端:ctrl+`

3.cd 項目檔案下;如cd gitlab/learngit

4.指令行:建立版本庫,版本送出,版本回退,管理修改,撤銷修改,删除檔案

0、建立版本庫(選擇一個合适的地方,建立一個空目錄gitlab/learngit。進入gitlab/learngit檔案夾中)

$ cd gitlab/learngit

$ git init // 通過git init指令把這個目錄變成Git可以管理的倉庫

或者直接拉取克隆版本庫項目

$ git clone 連結,類似[email protected]:yourname/test.git的

1、版本送出

git add 檔案名或檔案夾名稱或者.代表所有

git commit -m "這次的送出描述備注"

git status 檢視送出修改的檔案

git branch 檢視目前分支

git branch 建立分支

git checkout 切換分支

git merge (不是目前的分支)合并某分支到目前分支

git branch -d 删除分支

$ git push origin master 上傳本地指定分支到遠端倉庫

$ git pull [branch] 取回遠端倉庫的變化,并與本地分支合并

2、版本回退

回退到上一個版本(可以多次使用)

$ git reset --hard HEAD^

回退到上兩個版本

$ git reset --hard HEAD^^

git log檢視送出曆史,然後git reset 回退到指定版本 。這也是每次commit -m" "中寫内容的重要性,說不定什麼時候就拯救了你寫了好幾天的代碼。hard後面跟的版本号沒必要全部寫出來,git會自動去補全比對。

$ git log

$ git reset --hard

3、管理修改

我們來一個操作,第一次修改 -> git add -> 第二次修改 -> git commit

然後git status檢視狀态,咦,怎麼第二次的修改沒有被送出?

Git管理的是修改,當你用git add指令後,在工作區的第一次修改被放入暫存區,準備送出,但是,在工作區的第二次修改并沒有放入暫存區,是以,git commit隻負責把暫存區的修改送出了,也就是第一次的修改被送出了,第二次的修改不會被送出。

送出後,用git diff HEAD -- readme.txt指令可以檢視工作區和版本庫裡面最新版本的差別。

那怎麼送出第二次修改呢?你可以繼續git add再git commit,也可以别着急送出第一次修改,先git add第二次修改,再git commit,就相當于把兩次修改合并後一塊送出了:

第一次修改 -> git add -> 第二次修改 -> git add -> git commit

4、撤銷修改

$ git checkout -- readme.txt

令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:

一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀态;

一種是readme.txt已經添加到暫存區後,又作了修改,現在,撤銷修改就回到添加到暫存區後的狀态。

總之,就是讓這個檔案回到最近一次git commit或git add時的狀态。

git checkout -- file指令中的--很重要,沒有--,就變成了“切換到另一個分支”的指令。

5、删除檔案

$ git rm test.txt

$ git commit -m "remove test.txt"

**bug分支**

情景:undong.txt 工作還沒做完(暫存區有很多add檔案,這時還沒有commit),這時接收到一個必須在兩小時内完成的bug檔案(和之前的工作無關)

1 這時就要儲存工作現場 git stash

2 添加新分支 git branch fixbug

3 切換到這個分支 git checkout fixbug

4 git add bug檔案

5 送出 git commit

6 删除該分支(一般情況應該合并)

檢視分支現場 git

7 修複之前的分支 git stash pop