程式導師實驗計畫 [第一週] Git 進階指令
上一篇的Git超新手入門
紀錄完基本的指令,接著要紀錄比較進階的用法,以學會如何在多人協作的情形下進行開發。
合併分支
假設我們從master
分支中開了一個名為feature
的新分支開發某個功能,並且完成commit
提交了,接下來就是準備將feature
合併進master
之中。
先從feature
切換到master
1 | git checkout master |
git merge
: 合併分支
1 | git merge feature |
這樣就成功將分支的功能合併的master
主分支之中了。
解決衝突
首先要先知道麽怎樣的狀況會產生衝突?
假如今天從master
創建兩個分支feature1
跟feature2
,當我們的兩個分支都改到同一支檔案的時候
merge feature1
的時候還沒事
1 | folder git:(master) git merge feature1 |
但是merge feature2
的時候,因為改動是同一隻檔案,git
就會給你提示說有檔案發生衝突
1 | folder git:(master) git merge feature2 |
簡單來說就是兩個版本都改了同一隻檔案,它不知道你要用的到底是哪個版本,所以就會給你提示叫你決定一個版本。
這時候就將這段code
決定一個你要的版本,就可以解決衝突拉~
GitHub : 全球最大工程師交友平台上線拉
前面都是在學Git
,知道了Git
是一種可以幫你做版本控制的程式,那GitHub
呢?
Git
與GitHub
的差異在於一個是一種工具,另一個是一個網站。
GitHub
的本體是一個全球最大的Git Server
,秉持著開放原始碼的精神,可以提供存放使用Git
專案倉庫(Repository)的服務,因為所有東西都是公開的,你可以看到很多很猛的開發者的專案,可以幫忙貢獻其他開發者的專案,其他開發者也可以回饋你的專案,建立起一個讓大家越來越強的良性循環。
同時GitHub
也會是開發者很棒的履歷,因為曾經開發過什麼專案、做過哪些貢獻、寫過哪些程式碼,上面都公開透明供面試官參考。
Git
狀況劇
我commit
了但想改commit message
git commit --amend
先用git log
查看目前的commit message
1 | git log --oneline |
1 | 5b08e21 (HEAD -> master) WTF |
覺得那位WTF
不太行,想修改最後一次的commit message
使用commit --amend
修改commit message
1 | git commit --amend -m "Welcome To FaceBook" |
再查看一次,就會發現commit message
已經被修改
1 | 9e3c120 (HEAD -> master) Welcome To FaceBook |
需要知道的是,commit --amend
只能修改最後一次的commit message
如果想要修改的是更之前的commit message
,可以參考【狀況題】修改歷史訊息
我commit
了可是我又不想commit
了
git reset HEAD^
如果你只用git log --oneline
查看紀錄你會看到最新的當前版本都會有一個HEAD
1 | 6e17f24 (HEAD -> master) init |
HEAD
指的就是最新的這個版本,^
指的是上一個,所以git reset HEAD^
指的就是回到上一個commit
,也可以直接使用<版本號>進行回復。
我還沒commit
,但我改的東西我不想要了
git checkout --
git checkout -- <file name>
:想針對某個檔案去捨棄變更
1 | git checkout -- <file name> |
git checkout -- .
:想捨棄所有變更就改成.
1 | git checkout -- . |
我還想改 branch 名稱
git branch -m <name> <new name>
使用git branch -m
後面加上原本的名稱跟想要的新名稱
1 | git branch -m name newname |
怎麼拉下遠端的branch
git checkout <branch>
用git checkout
後面接上想要的遠端分支
1 | git checkout branch |
Git Hooks
Git Hooks
是一些自訂的腳本,用於控制Git
工作的流程,分為客戶端
及服務端
可以設定在某些情況下觸發自己設定的腳本做某些事情。
總結
git merge <branch>
來合併分支- 如果在
git merge
之後產生了衝突,決定該段 code 之中修改成一個最終版本來解決衝突。 - 了解
Git
與GitHub
兩者的差別 - 知道了一些在
Git
的使用上的小技巧
為你自己學 Git
受益良多的大補帖,推推!!
以上就是這篇的筆記內容