git基本指令使用,git status,git stash,git merge

git log

查看項目歷史的信息javascript

git status

git status命令用於顯示工做目錄和暫存區的狀態。使用此命令能看到哪些修改被暫存到了, 哪些沒有, 哪些文件沒有被Git tracked到。git status不顯示已經commit到項目歷史中去的信息。html

git stash

應用場景java

  • 有部分代碼是多餘的,想保留之後查看,可是又不想提交到遠程分支
  • 在進行多分支開發時,好比你在A分支上開發,可是忽然發現B分支上有個bug須要修復,之前每每會把A分支上開發一半的功能本地commit,切換到B分支修復bug,而後再切換回A分支繼續開發,這樣每每log上會有大量沒必要要的記錄。如今可使用git stash將你當前未提交到本地(和服務器)的代碼推入到Git的棧中,放心切換到B分支修復代碼,完事兒後切換回A分支使用git stash apply將之前一半的工做應用回來;
git stash(A分支)
git pull(B分支)
git stash apply (A分支)
複製代碼

PS:git stash 命令能夠將在當前分支修改的內容放到緩存區中,並會自動創建一個緩存的list集合,方便管理,git stash list 能夠看到list下的全部緩存。git

git stash list
複製代碼

git stash lish
實際應用中推薦給每一個stash加一個message,用於記錄版本,即 git stash save取代 git stash。如:

git stash save "添加console.log"
複製代碼

git stash save
查看全部的緩存

git stash list
複製代碼

使用save的stash list
若是想將修改的內容從新釋放出來, git stash applygit stash pop 均可以將修改的內容從新釋放出來。 使用 git stash apply stash@{x} ,能夠將編號x的緩存釋放出來,可是該緩存還存在於list中 而 git stash apply,會將當前分支的最後一次緩存的內容釋放出來,可是剛纔的記錄還存在list中 而 git stash pop,也會將當前分支的最後一次緩存的內容釋放出來,可是剛纔的記錄會被刪除,不存在list中
git stash示例

  • 若是你實在實在不想要本地的更改了,能夠清除使用以下命令清除全部的stash棧
git stash
git stash clear
複製代碼

固然也可使用git stash drop移除指定的stash棧緩存

git stash drop stash@{1}
複製代碼

查看指定stash的提diff

git stash show
複製代碼

運行後 服務器

stash show
git stash show -pgit stash show --patch查看指定stash的所有diff

git rebase 衝突

  • step 1. 使用git status命令,查看有哪些文件衝突,而後逐個解決app

  • step 2. 打開衝突文件,找到衝突的位置,好比修改用戶信息後發送事件 <<<<<<< HEAD b789 ======= b45678910 >>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc 衝突標記<<<<<<< (7個<)與=======之間的內容是本地修改, =======與>>>>>>>之間的內容是別人的修改。學習

  • step 3. 最簡單的方式:刪除這些衝突標記,而後查看是否有相同的代碼,刪除便可。spa

  • step 4. git add . git commit -m 「fix conflict」3d

  • step 5. git rebase --continue

  • step 6. 若是仍是有衝突,重複step2-step5

  • step 7. 完成

分支管理

git branch test   			// 新建分支(test)
git branch -d test 			// 刪除分支(test)
git branch -D test			// 強制刪除分支(test)
git checkout test			// 切換到test分支(test)
git branch				    // 查看本地分支
git branch -r 				// 查看服務器遠程分支 
git branch -a				// 查看本地和遠程分支
git branch -b develop
複製代碼

新建分支後先提交到遠程服務器才能pull代碼,

git push origin test 		 // 提交到遠程服務器(test)
複製代碼

git merge git cherry-pick

git merge: 合併兩個分支,全部內容 git merge master,將master上全部內容合併到當前分支 git cherry-pick: 選擇合併一個或者多個commit,好比要從A分支合併某個commit到B分支,A—>B,步驟以下

  • step 1: A分支下,git log獲取某個commit-id
  • step 2: 切換到B分支,git checkout B(執行該命令前必定要保證A分支沒有未提交的改動,或未stash的改動)
  • step 3: B分支下,執行 git cherry-pick {commit-id}
  • step 4: 執行git pull git push 將改動提交到遠程分支 示例:我在A分支修改了某個文件,須要同時提交到A分支和B分支,操做以下 A分支下
git add .
git commit -m 「{commit comment}」
git pull -—rebase origin A
git push origin A
git log
git status
git checkout B
複製代碼

已經切換到B分支 切換到B分支後,首先要去遠程B分支獲取到最新內容

git pull —-rebase origin B
git cherry-pick {commit-id}
git pull —-rebase origin B
git push origin B
複製代碼

git tag(標籤)

建議只在主分支打tag,並且每次打tag都以版本發佈以後爲節點

Gitlab Flow上游優先(學習文檔)

www.ruanyifeng.com/blog/2015/1… www.cnblogs.com/cnblogsfans…

小tips

  1. git commit --amend -「修改commit的描述」
  2. 執行git pull 命令的時候,若是本地有改動沒有commit,就會提示錯誤 「error: Cannot pull with rebase: You have unstated changes.
相關文章
相關標籤/搜索