天天看點

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

下載下傳一個項目和它的整個代碼曆史

git clone [**.git]

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

比較目前檔案和暫存區檔案差異

git diff

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

将工作檔案修改送出到本地暫存區

git add -A

git add

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

顯示有變更的檔案

git status

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

送出暫存區到倉庫區

git commit -a -m “[comments]”

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

檢視該檔案每次送出記錄

git log

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

本地代碼更新(取回遠端倉庫的變化,并與本地分支合并)

git pull origin [branchName]

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

本地代碼送出(上傳本地指定分支到遠端倉庫)

git push origin [branchName]

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

建立分支

git checkout -b [newBranchName]

git checkout -b [newBranchName] master 在master分支上建立分支并切換到newBranchName分支上

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

切換指定分支

git checkout [branchName]

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

檢視所有分支

git branch -a

git branch 沒有參數,則顯示本地庫中所有本地分支的名稱,目前分支前面會有分号

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

合并分支

git merge origin [branchName]

git merge –no-ff [branchName]

–no-ff指的是強行關閉fast-forward方式。

fast-forward方式就是當條件允許的時候,git直接把HEAD指針指向合并分支的頭,完成合并。屬于“快進方式”,不過這種情況如果删除分支,則會丢失分支資訊。因為在這個過程中沒有建立commit

git merge –squash 是用來把一些不必要commit進行壓縮,比如說,你的feature在開發的時候寫的commit很亂,那麼我們合并的時候不希望把這些曆史commit帶過來,于是使用–squash進行合并,此時檔案已經同合并後一樣了,但不移動HEAD,不送出。需要進行一次額外的commit來“總結”一下,然後完成最終的合并。

–squash:使用squash方式合并,把多次分支commit曆史壓縮為一次。

git中三種狀态分别為:modified, new file, untracked

下面詳細示範下三種狀态

初始狀态

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

編輯檔案file1.txt

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

添加檔案file3.txt

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

使用git add 将檔案添加到待送出清單

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

比如master分支在進行合并子分支branchName時,如果采用git merge –no-ff [branchName]的方式,會顯示出沖突的地方,比如:

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

類似上面這種情況,說明發生了沖突,遇到這種情況不用擔心。這時候需要手動删除。

首選打開編輯沖突的檔案,類似以下這種情形:

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突

介于<<<<<<<(包括======以及>>>>>>都是七個) HEAD和=======的内容是master分支原有的内容:“master file1.txt”。

介于=======和>>>>>>> branchName的内容是branchName原有的内容: “file1 has changed”。

這樣将子分支branchName的内容整合到master的過程中,上述标記的2塊内容會發送沖突,解決辦法就是我們手動編輯去掉沖突,即先編輯沖突,然後使用gitt commit送出。

Git使用筆記1. 常用指令2. git中三種狀态3. 合并分支沖突
對于git來說,編輯沖突和平時的修改代碼沒什麼差異。修改完成後,都是要把修改添加到緩存,然後支援commit.

持續更新中…..