一個用Git互動視覺化教學的專案

滾雪球的哈士奇發表於2018-11-29

Learn git branching Git的視覺化教學專案

這是個能夠讓新手快速上手Git的教程

一個用Git互動視覺化教學的專案

這兩天花時間把 Learn Git Branching Main部分的做了一遍。 對理解git分支的使用很有幫助,另外發現git的幫助文件和github的幫助文件都很詳細,應該好好讀一遍。

使用命令檢視 答案
$ show solution
複製程式碼

答案記錄在下面

基礎篇

循序漸進地介紹 Git 主要命令

1.1 Introduction to Git Commits

將當前對檔案的修改 建立一個提交記錄
git commit <-m "提交說明">
複製程式碼

1.2 Branching in Git

建立一個分支
git branch bugFix

切換到 bugFix分支
git checkout bugFix
複製程式碼

1.3 Merging in Git

建立一個分支 並切換為該分支
git checkout -b bugFix
git commit
git checkout master
git commit

將bugFix 合併到當前分支
git merge bugFix
複製程式碼

1.4 Rebase Introduction

Rebase 實際上就是取出一系列的提交記錄,“複製”它們,
然後在另外一個地方逐個的放下去。
即將某個分支的提交 移動到另一個分支上 使提交歷史呈現一條直線
eg.
    git rebase [branchName]   將當前的分支移動到指定的分支上
    git rebase [base] [from]  將form 移動到base上 
        (base/from可以是版本號 分支名)

git checkout -b bugFix
git commit
git checkout master
git commit
git checkout bugFix
git rebase master
複製程式碼

高階篇

要開始介紹 Git 的超棒特性了,快來吧!

相對引用
    1. 使用 ^ 向上移動 1 個提交記錄
    2. 使用 ~<num> 向上移動多個提交記錄,如 ~3
eg.
    HEAD^       即當前分支的上一個提交
    master~3    master 往前 第3個提交 
複製程式碼

2.1 Detach yo’ HEAD

git checkout C4
複製程式碼

2.2 Relative refs (^)

git checkout C4^
複製程式碼

2.3 Relative refs #2 (~)

git branch -f master C6
git branch -f bugFix C0
git checkout C1
複製程式碼

2.4 Reversing Changes in Git

git reset local~1
git checkout pushed
git revert pushed
複製程式碼

移動提交記錄

自由修改提交樹

git cherry-pick <提交號>...
將一些提交複製到當前所在的位置(HEAD)下面的話,
Cherry-pick 是最直接的方式了。個人非常喜歡 cherry-pick,因為它特別簡單。
複製程式碼

3.1 Cherry-pick Intro

git cherry-pick C3 C4 C7
複製程式碼

3.2 Interactive Rebase Intro

互動式rebase  加上-i 選項 
將提供視覺化操作的方式讓你 
按自定義方式 重新組合排序多個提交
git rebase -i master~4 --aboveAll
複製程式碼

雜項

Git 技術、技巧與貼士大集合

4.1 Grabbing Just 1 Commit

git checkout master
git cherry-pick C4
複製程式碼

4.2 Juggling Commits

git rebase -i caption~2 --aboveAll
git commit --amend
git rebase -i caption~2 --aboveAll
git branch -f master caption
複製程式碼

4.3 Juggling Commits #2

git checkout master
git cherry-pick C2
git commit --amend
git cherry-pick C3
複製程式碼

4.4 Git Tags

git tag v0 C1
git tag v1 C2
git checkout C2
複製程式碼

4.5 Git Describe

git commit
複製程式碼

高階話題

只為真正的勇士!

5.1 Rebasing over 9000 times

git rebase master bugFix
git rebase bugFix side
git rebase side another
git rebase another master
複製程式碼

5.2 Multiple parents

git branch bugWork master~^2~
複製程式碼

5.3 Branch Spaghetti

git checkout one
git cherry-pick C4 C3 C2
git checkout two
git cherry-pick C5 C4 C3 C2
git branch -f three C2
複製程式碼

Push & Pull —— Git 遠端倉庫!

是時候分享你的程式碼了,讓編碼變得社交化吧

6.1 Git Clone

git clone 
複製程式碼

6.2 遠端分支

git commit
git checkout o/master
git commit
複製程式碼

6.2 Git Fetch 拉取遠端提交 不合並

git fetch
複製程式碼

6.3 Git Pull 拉取遠端提交 進行合併

git pull
複製程式碼

6.4 Git 模擬團隊提交

git fakeTeamwork 2
git commit 
git pull
複製程式碼

6.5 Git remote5

git clone 
git fakeTeamwork 2
git commit 
git pull
複製程式碼

6.5 Git Push

程式碼推送
git push 負責將你的變更上傳到指定的遠端倉庫,
並在遠端倉庫上合併你的新提交記錄。
一旦 git push 完成, 你的朋友們就可以從這個遠端倉庫下載你分享的成果了!
複製程式碼

6.6 偏離的工作

在git push時,若遠端倉庫存在新的提交 Git將拒絕push請求 
需要遠端程式碼拉取到本地 進行合併後才能進行push

git clone
git fakeTeamwork
git commit 
git pull --rebase
git push
複製程式碼

關於 origin 和它的周邊 —— Git 遠端倉庫高階操作

做一名仁慈的獨裁者一定會很有趣……

7.1 推送主分支

方案1:
git fetch
git rebase o/master side1
git rebase side1 side2
git rebase side2 side3
git rebase side3 master
git push

方案二:
git fetch
git rebase o/master side1
git cherry-pick C2 C3 C4 C5 C6 C7
git push
複製程式碼

7.2 合併遠端分支

git checkout master 
git pull
git merge side1
git merge side2
git merge side3
git push
複製程式碼

7.3 遠端追蹤


git chekout -b side o/master
git commit
git pull --rebase
git push
複製程式碼

7.4 Git Push 的引數

引數詳解 git push origin <source>:<destination>
git push origin master
git push origin foo
複製程式碼

7.5 Git Push 的引數 2

引數詳解 git push origin <source>:<destination>
git push origin master^:foo
git push origin foo:master 
複製程式碼

7.6 Git fetch 的引數

git fetch origin master~1:foo
git fetch origin foo:master
git checkout foo
git merge master
複製程式碼

7.7 沒有 source 的 source

刪除遠端的分支 (即推送空值到指定分支)
git push origin :foo
在本地建立一個新分支
git fetch origin :bar
複製程式碼

7.8: Git pull 的引數

git pull origin bar:foo
git pull origin master:side
複製程式碼

當你完成所有的關卡時 將會看到下面的提示資訊

完成所有的關卡

相關文章