Let's enjoy in GIT -- 工具用得好,上班沒煩惱

寫在前面 -- 寫這篇文章的契機

GIT:是一個天天都會用到的工具。天天都用不等於用得好,這篇文章將會記錄更新git中遇到的問題git

場景1

背景:項目環境複雜,項目分爲新區和舊區,舊區代碼爲基礎代碼,新區代碼是從舊區拆分出來的,通常狀況下,若是新舊區都上線,須要從舊區拉取分支markdown

問題:同一個問題在新舊區都有,迭代須要同時發佈,本應該舊區拉分支,可是開發時重新區拉了分支,如今想合到舊區,新區代碼沒法向前合併到舊區,怎麼辦。。。app

小白思惟:舊區拉一個分支,從新修改相關問題。浪費時間,迭代發版之際從新修改代碼,容易出錯,不科學ide

GIT高級思惟:工具

1.git log

image.png

a.git log branch1 ^branch2:查看branch1中有的commit,而branch2中沒有的commitui

image.png

b.git log branch1..branch2:查看branch2的log比branch1的log多提交了哪些內容lua

image.png

c.git log branch1..branch2:查看branch2的log比branch1的log區別,並不知道哪一個分支提交的多url

image.png

d.git log --left-right branch1..branch2:查看branch2的log比branch1的log區別,能夠查看提交的分支, <表示branch1,>表示branch2spa

image.png

2. git diff:比較文件之間的不一樣

a.git diff commit1 commit2 commitId能夠取前六位 image.png b.git diff --name-only commit1 commit23d

image.png

c.差別文件打包:git diff --name-only commit1 commit2 | xargs tar -zcvf 文件名稱.tar.gz

image.png

d.git diff commit1 commit2 -w 忽略全部空格

e.簡略寫法

HEAD:當前提交;

HEAD^:上一次提交

HEAD~X;

HEAD~0:當前提交;

HEAD~1:上一次提交

。。。依次類推

3.git show

查看某次commit的具體提交內容

a.git show commitID

b.git show HEAD:查看HEAD標籤當前指向提交的完整信息

c.git show branchxx:查看branchxx分支最新一次提交的完整信息

d.git show branchxx^;git show branchxx~1:查看branchxx分支最新一次以前一次提交的完整信息 。。。依次類推

4.git cheery-pick

對於多分支的代碼庫,將代碼從一個分支轉移到另外一個分支,正常咱們用git merge 可是若是咱們只須要部分代碼變更(某幾個提交),就可使用cherry pick

a.git cherry-pick commitID:某個commitID轉移到當前分支,通常放在最後

b.git cherry-pick branch:某個分支的最新提交轉移到當前分支

c.git cherry-pink commitID1 commitID2一次轉移多個提交

d.git cherry-pick A..B 轉移A到B的全部提交,A的提交必須早於B,而且不包含提交A

e.git cherry-pick A^..B 轉移A到B的全部提交,A的提交必須早於B,而且包含提交A

cherry-pick時代碼衝突的解決辦法

a. git cherry-pink --continue

解決代碼衝突以後,第一步 git add .,而後使用git cherry-pink --continue,讓cherry-pick繼續執行

b.git cherry-pick --abort:放棄合併,回到操做前的樣子

c.git cherry-pick --quit:退出cherry-pick,不回到操做前的樣子

5.git stash

使用場景:在A分支上寫代碼,此時B分支須要緊急修復bug,此時A分支的代碼不提交,就能夠放在暫存區,git stash存起來,而後去B分支進行bug修復,修復工做完成後,回到A分支拿出暫存的文件內容

git stash以前的status

image.png

git stash

image.png

git stash以後的status

image.png

git stash list

image.png

恢復暫存的狀態的命令:

a.git stash pop:不會在git stash list保存記錄

git stash pop以前

image.png

image.png

git stash pop以後

image.png

b.git stash apply:會在git stash list保存記錄

image.png

image.png

image.png

6.git tag

每次合併分支發版以前給即將合併的主分支打tag標籤,給當前版本作個標記,以便回退到此版本。若是使用commit-sha1,你們記不住sha1碼,因此用tag標籤記錄

相關文章
相關標籤/搜索