1.1 修改預設編輯器
預設使用vim編輯器,當然可以使用core.editor修改
git config --global core.editor emacs
1.2 修改log分頁
預設使用less,可以使用core.pager來設定為more或則其他,也可以使用空字串,關閉分頁,一次性載入所有內容
git config --global core.pager ''
1.3 git 中的著色git config --global color.ui false
其實如果想具體到某些特定命令,都是有true、false 或 always可以設定的,比如以下
color.branch
color.diff
color.interactive
color.status
以上每個配置項都有子選項,它們可以被用來覆蓋其父設定,以達到為輸出的各個部分著色的目的。例如,為了讓 diff 的輸出資訊以藍色前景、黑色背景和粗體顯示,你可以執行
git config --global color.diff.meta "blue black bold"
你能設定的顏色有:normal、black、red、green、yellow、blue、magenta、cyan 或 white。正如以 上例子設定的粗體屬性,想要設定字型屬性的話,可以選擇包括:bold、dim、ul(下劃線)、blink 、reverse(交換前景色和背景色)。
git branch -v
該命令顯示本地分支最後一次提交說明
* dev cdc7241a fixbug
master f586f6b5 ****
如果需要顯示本地和遠端,加上-a即git branch -v -a
* dev cdc7241a fixbug
master f586f6b5 ****
remotes/origin/head -> origin/master
remotes/origin/dev cdc7241a fixbug
remotes/origin/master f586f6b5 ****
remotes/origin/oldim 97d131bb 2.5.1 封版
git branch -vv
除了具有git branch -v
命令的作用,還可以顯示出每乙個分支正在跟蹤哪個遠端分支,以及本地分支與遠端分支是否是領先、落後。同樣,如果想看遠端加上-a
,也就是all(所有),反正我就是這麼記憶的
* dev 6512ef90 [origin/dev: ahead 1] test
master 78b4b30a [origin/master] 171227122 2.12.2 封版
實用舉例1![](https://pic.w3help.cc/1ab/7251854a24263a5dcd89553228943.jpeg)
其實在git當中整合兩個分支的方式除了merge,還有一種方式,那就是rebase。如上圖,現在要合併c3和c4,如果使用merge合併是這樣子的。它會把兩個分支的最新快照(c3 和 c4)以及二者最近的共同祖先(c2)進行三方合併,合併的結果是生成乙個新的快照(並提交)。
此時,c4' 指向的快照就和上面使用merge命令的例子中 c5 指向的快照一模一樣了。這兩種整合方法的最終結果沒有任何區別,但是變基使得提交歷史更加整潔。你在檢視乙個經過變基的分支的歷史記錄時會發現,儘管實際的開發工作是並行的,但它們看上去就像是先後序列的一樣,提交歷史是一條直線沒有分叉。
實用舉例2
直接看下圖,現在我有這樣的需求,就是將c8,c9提交到主分支,但是不要c3,你如何做?
其實辦法總是有的,在前篇文章中,有講到git stash命令,其實,我們可以在client分支找到c3的雜湊值直接執行git reset 雜湊值(c3)
然後把c8,c9的修改直接git stash 貯存起來,切換到master分支,來個git stash pop
搞定,不過這樣相當於重新提交,如果commit比較多,會丟失commit日誌,比如這裡這樣操作就會把c8,c9的commit提交資訊丟失。現在我們使用變基來操作,感受下變基的魔性。
現在可以快進合併 master 分支了。
實用舉例3
再舉乙個例子,也是關於git rebase --onto的使用
h---i---j topicb
/e---f---g topica
/a---b---c---d master
git rebase --onto master topica topicb
h'--i'--j' topicb
/| e---f---g topica
|/a---b---c---d master
this is useful when topicb does not depend on topica.
這樣的例子好多,感興趣可以使用git rebase --help
檢視。
注意事項
這點一定要看,不要對在你的倉庫外還有副本的分支執行變基。也就是說,乙個人開發隨便搞,多人開發有原則的搞。如果你不遵循這個原則,多人開發出現問題別來找我。
為什麼呢?假如有個人在本地使用了merge合併分支後,push到了遠端伺服器,後來他感覺不爽,想通過變基處理,恰是這個時候你pull了伺服器的**,那就會出現問題。問題就是,以後看記錄會出現相同的提交,本來張三想丟棄的東西被你保留了。如果想看詳細舉例,推薦檢視pro git這本書中關於git變基一節。
總之,只要是你的**和你建立的分支,還沒有執行push之前,隨意搞,push後就不要再想著使用變基了,避免出問題。如果你更喜歡merge,喜歡看git實際發生的事,那就使用merge吧。反之,你更喜歡流水線一樣的記錄,從前到後,沒有一堆堆複雜的合併,那就用rebase。
github desktop
tortoisegit
gitup
......
我比較喜歡gitup,簡潔些。但是我仍舊在使用命令列,就當為了給電腦省空間吧。
開發那些事
記錄下想法。對於軟體開發,絕大多數情況下,乙個優秀的專案,離不開乙個優秀的團隊。軟體開發的流程會很大程度上決定開發的效率。很大一部分也和企業文化 團隊氣氛有關。我說下自己的體會。嚴謹的開發流程,詳細文件還有積極的溝通是至關重要的。1.專案管理工具。團隊需要乙個內部wiki或者專案管理工具開記錄工作報...
iOS開發那些事 Git在Xcode中的配置與使用
很多git命令都是在命令列下執行的,命令列下管理git有很多優點不用多說。但最大的缺點是要求使用者記住這些命令。因此git圖形介面還是很受一 些使用者歡迎的,其中xcode作為整合開發環境工具,也提供了一定git圖形介面功能。但是要想在xcode中使用git管理工程 還想需要進行一些配 置,然後才能...
iOS開發關於 框架 的那些事
在 ios 8 之前,ios 只支援以靜態庫的方式來使用第三方的 與靜態相對應的當然是動態。我們每天使用的 ios 系統的框架是以 framework 結尾的,它們就是動態框架。ios 8 之前也有一些第三方庫提供 framework 檔案,但是它們實質上都是靜態庫,只不過通過一些方法進行了包裝,相...