廖雪峰Git教程學習總結

2021-09-10 14:46:22 字數 4470 閱讀 6503

1.安裝git

$ sudo apt-get install git

$ git config --global user.name "your name"

$ git config --global user.email "[email protected]"   --global引數表示這台機器上所有的git倉庫都會使用這個配置

2.建立版本庫repository(乙個使用git進行管理的目錄)

$ mkdir learngit & cd learngit

$ git init    (使用ls -ah檢視隱藏檔案.git)

3.新增檔案到倉庫

$ git add

$ git commit -m

4.檢視倉庫當前的狀態

$ git status   如果git status告訴你檔案被修改過,可以檢視具體的修改內容  $ git diff,只能在修改檔案這一步後檢視

第一次添的加檔案且沒有進行提交過:untracked files(並且用git diff檢視不到)

修改完檔案:no changes added to commit (use "git add" and/or "git commit -a")

執行完add:changes to be committed

執行完commit:nothing to commit, working directory clean

5.檢視最近到最遠的提交日誌

$ git log --pretty=oneline    其中一大串的數字是git的版本號(commit id)

6.版本回退

head表示當前版本,head^表示上乙個版本,head^^表示上上個版本,head~100表示往上100個版本

$ git reset --hard head^    退回上乙個版本     $ cat readme.txt檢視檔案內容   $ echo 'abc'>>readme.txt新建簡單的文字

$ git reset --hard 1094a      回到未來的commit id為1094a的版本

$ git reflog      記錄每一次的命令(如果想回到未來的版本但是找不到版本號);重回過去,用 $ git log檢視提交歷史,確定要回退到哪個版本,重返未來,用$ git reflog檢視歷史命令,確定要回到未來的版本

git的版本回退速度很快,是因為git內部有個指向當前版本的head指標,當回退版本的時候,git僅僅把head指向回退的版本

7.工作區(working directory):learngit資料夾版本庫(repository):.git目錄

git的版本庫里最重要的是稱為stage(index)的暫存區,還有git自動為我們建立的第乙個分支master,以及指向master的指標head

暫存區與版本庫的區別:第一次修改 -> git add -> 第二次修改 -> git commit。當你用git add命令後,在工作區的第一次修改被放入暫存區,準備提交,但是,在工作區的第二次修改並沒有放入暫存區,所以,git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提交

8.檢視工作區和版本庫里最新版本的區別

$ git diff head -- readme.txt

9.git checkout命令

命令$ git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有兩種情況:一種是readme.txt修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。總之,就是讓這個檔案回到最近一次git commit或git add時的狀態

10.git reset命令

命令$ git reset head readme.txt可以把暫存區的修改撤銷掉,重新放回工作區,再用$ git checkout -- readme.txt命令丟棄工作區的修改

場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file

場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head ,就回到了場景1,第二步按場景1操作

11.從版本庫中刪除該檔案rm ***

刪對了,那就用命令git rm刪掉,並且使用git commit;刪錯了,可以很輕鬆地把誤刪的檔案恢復到最新版本:$ git checkout -- test.txt,但是如果執行git rm ***刪除檔案用checkout就找不回了

12.新增遠端倉庫

(1)建立ssh key,cd到使用者主目錄的.ss**件夾下,檢視有沒有id_rsa(私鑰)和id_rsa.pub(公鑰),有的話直接跳過,沒有的話$ ssh-keygen -t rsa -c "email address",然後一路使用預設值

(2)在github的ssh key選項中新增id_rsa.pub中的內容

(3)在github上面建立repository(建立乙個新的git倉庫)

(4)在本地關聯倉庫中輸入git remote add origin 用來關聯遠端庫,遠端庫的名字就叫origin。關聯後,使用命令git push -u origin master第一次推送master分支的所有內容;此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改

13.轉殖遠端庫

$ git clone

14.git建立分支

head指向當前分支,master指向最新提交的分支

$ git checkout -b dev      建立並轉換分支(相當於建立分支$ git branch dev & 切換分支$ git checkout dev),接下來在分支上進行操作後使用$git add & $ git commit提交給分支

$ git branch      檢視當前分支

$ git checkout master      返回master分支

$ git merge dev      將dev分支的工作合併到master上(fast-forward)

$ git branch -d dev      刪除dev分支

$ git branch -d 強力刪除沒有合併的branch

衝突解決:在分支上修改檔案並執行git add和git commit後,切換到master,在master上修改檔案並執行git add和git commit後,執行merge時會發生衝突。在master分支中使用git status檢視衝突的檔案,檢視並修改衝突的檔案後,重新使用git add和git commit提交,最後刪除剛才操作的分支

命令$ git log --graph --pretty=oneline --abbrev-commit檢視分支的合併情況

$ git merge --no-ff -m "merge with no-ff" dev      不使用fast forward模式合併,保留分支的資訊。使用ff模式只會顯示最終的修改結果,不保留分支資訊

15.分支管理原則

master只發布穩定的新版本,在dev上面幹活,每個人擁有自己的分支,不斷地向dev分支上合併就可以了。新增新功能時,不希望實驗性質的**搞亂主分支,因此新增的新功能最好在feature分支上開發、合併,最後刪除feature分支。

16.bug分支

修復bug可以通過新建臨時分支(issue-number),修復後合併分支,然後刪除臨時分支

如果是未曾提交過的檔案,需要通過命令$ git add ***將未儲存的檔案提交到暫存區,讓git能夠追蹤這個檔案

$ git stash      將工作現場出藏起來等恢復現場後繼續工作(當前在dev分支)

$ git checkout master      切換回master

$ git checkout -b issue-101

修復完bug後通過命令$ git add & $ git commit命令提交,然後切換回master分支,通過命令 $ git merge --no-ff -m 'merged bug fix 101' issue-101,最後刪除分支

$ git checkout dev 切換回dev分支

$ git stash list      檢視剛才的工作現場

方法二:$ git stash pop      恢復的同時刪除了stash內容

《廖雪峰 Git 教程》學習總結

基本上,git就是以下面的命令順序學習的。文中筆記是從廖雪峰老師的 git教程 中總結出來的,方面查閱命令。找回刪除的檔案 git reset head filename1撤銷add,回到工作區 git rm filename1刪除檔案 git remote add origin將本地庫關聯到git...

廖雪峰Git教程學習筆記

git1 通過git init命令把這個目錄變成git可以管理的倉庫 git init 2 用命令git add告訴git,把檔案新增到倉庫 git add readme.txt 3 用命令git commit告訴git,把檔案提交到倉庫 git commit m 這是備註 4 已經記不清上次怎麼修...

廖雪峰git教程學習筆記

對git來說,沒有訊息就是最好的訊息 使用 git init 把當前目錄變為git倉庫 要在倉庫裡加入檔案,先在倉庫目錄新建這個檔案後,比如新建乙個檔案xiaobai.txt,內容為 在命令列裡輸入 git status,出現提示xiaobai為untracked file,即沒有加入倉庫 git的...