git 操作說明

你笑的像一條狗發表於2018-12-22

1 新建倉庫

         初始化 一個git倉庫:    使用命令   ***git init **
複製程式碼

2 提交檔案

分兩步執行

2.1 新增到暫存區

      使用命令見檔案新增到快取區: **git add ( fileName )** 

      多個檔案用逗號隔開 : **git add   檔名1 , 檔名2  **

       直接新增所有 :   **git add  .**   	
複製程式碼

2.2 提交到本地倉庫

使用命令 : git  commit -m "提交說明"

多次修改本地檔案 然後 git add  . 會將多次提交的檔案變化一次性提交到本地倉庫
複製程式碼

3 檢視提交檔案

3.1 檢視當前倉庫狀態

git status

如果沒有提交的檔案,會顯示  working tree clean , 表示工作目錄是乾淨的!
複製程式碼

3.2 檢視當前檔案修改詳情

git diff 檔名

    diff  : difference  
複製程式碼

3.3 檢視版本歷史記錄

git log

git log命令顯示從最近到最遠的提交日誌記錄。

     如果嫌輸出資訊太多,看得眼花繚亂的,試試這個命令:  git log --pretty=oneline 
複製程式碼

3.4 退回版本

3.4.1 退回版本時候必須得知道當前版本

HEAD表示當前版本

HEAD^ 表示上一個版本

HEAD^^表示上上一個版本

    以此類推.....

    表示第100個版本我門可以用 HEAD~100
複製程式碼

3.4.2 退回到上一個版本

git reset --hard HEAD^

3.4.3 不想退回上一個版本,想回到之氣前版本

git reset --hard 版本號(也就是一串很長的版本id)

        如果在恢復到最新版本,但是又忘記 commit id 了, 可以試試這個命令會記錄每一次你使用的每一次命令!
複製程式碼

gti reflog

3.5 撤銷修改

丟棄工作區區的修改(也可以手動刪除)

$ git checkout -- 檔名
複製程式碼

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

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

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

`

3.6 刪除檔案

git rm 檔名

3.7 恢復檔案

git checkout -- test.txt
複製程式碼

3.8 分支管理

新建分支

git branch 分支名

切換分支

git checkout 分支名

檢視分支

git branch

當前分支會顯示帶 *

合併分支

git merge 命令用於合併指定分支到當前分支(切換後的分支)

git merge 分支名

git log --graph`命令可以看到分支合併圖。

刪除分支

git branch -d 分支名

3.9 bug分支

修復bug時,我們會通過建立新的bug分支進行修復,然後合併,最後刪除;

當手頭工作沒有完成時,先把工作現場git stash(會將本地工作區修改的檔案變化隱藏起來,git status命令是無法看到的)一下,然後去修復bug,修復後,再git stash pop,回到工作現場。

檢視bug分支 git stash list

3.10 新功能分支feature

開發一個新功能分支

開發一個新feature,最好新建一個分支;

如果要丟棄一個沒有被合併過的分支,可以通過git branch -D <name>強行刪除。

3.11 多人協作

  • 檢視遠端庫資訊,使用git remote -v
  • 本地新建的分支如果不推送到遠端,對其他人就是不可見的;
  • 從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠端的新提交;
  • 在本地建立和遠端分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠端分支的名稱最好一致;
  • 建立本地分支和遠端分支的關聯,使用git branch --set-upstream branch-name origin/branch-name
  • 從遠端抓取分支,使用git pull,如果有衝突,要先處理衝突。

重要的總結

  • HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
  • 穿梭前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。
  • 要重返未來,用git reflog檢視命令歷史,以便確定要回到未來的哪個版本。

git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用HEAD`時,表示最新的版本。

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

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

檢視工作目錄和暫存區去的差別

git diff

工作目錄和本地倉庫差別

git diff HEAD

暫存區和本地倉庫差別

git diff --cached

詳細請檢視 原文

相關文章