Home » Posts tagged "vcs"

把 git log 用得很開心...?

看到「git log – the Good Parts」這篇文章,裡面研究了 Gitgit log 的各種好用的功能,然後整理出來... (所以是 good parts XD)

作者用的參數是一個一個加上去,所以可以一個階段一個階段了解用途。除了可以用作者推薦的 repository 測試外,我建議大家拿個自己比較熟悉的 open source 專案來測 (有用到比較複雜的架構):

git log
git log --oneline
git log --oneline --decorate
git log --oneline --decorate --all
git log --oneline --decorate --all --graph

看到喜歡的部份可以在 ~/.gitconfig 裡設 alias 使用,像是用 git l 之類的?保留 git log 本身可以避免一些 script 用到這個指令時因為輸出格式跟預期不一樣而爛掉 XD

新書廣告「為你自己學Git」

Disclosure:我跑去找作者簽名,然後被戳說要介紹廣告一下 XDDD

這是本講 Git 的書,翻內容後的感覺... 定位差不多在入門使用者與中階使用者。先引用作者在 Twitter 的 tweet:

天瓏掛第一,然後出版社通知要二刷了,應該是賣的還不錯 XDDD

書的章節可以參考「天瓏網路書店-為你自己學Git」這邊,內容是以 Command Line 為主,對於真的要把 Git 用好蠻有幫助的。除此之外,實務上常見的問題都有提到 (像是搞爛東西後可能的解法),也講了不少冷知識,對於理解 Git 內怎麼運作會有幫助...

唯一覺得奇怪的地方應該是在最後兩章,講 GitHub 與 Git Flow (也就是「A successful Git branching model」這邊提出來的方法),反而不是 GitHub Flow... 雖然在 GitHub 上也可以走 Git Flow 啦。

Git 2.8 的平行下載 submodule 加速

Git 推出新版的時候,幾家 Git Hosting 都會撰文寫一些重要的進展,像是 GitHub 這次的內容:「Git 2.8 has been released」。

GitHub 這次說明平行下載的範例直接清楚表示出來功能:

git fetch --recurse-submodules --jobs=4

用 Google 找了一個 .gitmodules 裡面有很多筆的 repository 測了一下,的確是快了不少...

diff-so-fancy 工具

Hacker News Daily 上看到的工具:「diff-so-fancy」。

光是從 screenshot 仔細看,會發現漏掉了一些 minus 與 plus 的資訊 (中間有一段應該要顯示 -document 與 +this.element, false 的部份,只顯示了 plus 的部份),有可能是 bug 也有可能是 feature。

另外對於已經讀習慣 diff 輸出結果的人,反而要另外學習,至於這個 learning curve 值不值得就見仁見智了...

Git 上各種 Undo 的技巧

GitHub 的「How to undo (almost) anything with Git」這篇文章介紹了 Git 上各種 undo 的方式。

主要先分成「已經 push 出去」與「還沒 push 出去」兩種,然後針對 branch 再說一次。

這份沒有 cover 到所有的方式,但常用的都在裡面提到了,可以先 bookmark 下來,需要用的時候練個幾次就會背起來了。

Git commit 不好看的問題

在「Git pretty」給了一張流程圖告訴你要怎麼辦,裡面包括了各類密技,像是 hard reset + force commit 這類合作時幾乎是禁用的指令 XD:

Facebook 的主程式碼放在 Git?

在一月時,Facebook 官方的 Engineering Blog 上提到 Facebook 使用 Mercurial 遇到的問題,以及所作的努力「Scaling Mercurial at Facebook」:

Facebook's main source repository is enormous--many times larger than even the Linux kernel, which checked in at 17 million lines of code and 44,000 files in 2013.

...

Instead, we chose to improve Mercurial. Mercurial is a distributed source control system similar to Git, with many equivalent features.

當時的解讀是 Facebook 把 main source repository 放到 Mercurial 上。

以 Facebook 的規模以及遇到的問題,是有能力直接改變世界的,用 Mercurial 或是 Git 都算是合理的選擇。

不過這幾天在 Twitter 上看到:

這讓人錯亂了啊 XDDD

把 Git commit 切開

在「Split a commit in two with Git」這邊看到有趣的方法:

git rebase -i <oldsha1>
# mark the expected commit as `edit` (replace pick in front of the line), save a close
git reset HEAD^
git add ...
git commit -m "First part"
git add ...
git commit -m "Second part"
git rebase --continue

squash 是把多個 commit 合起來,這個方法是拆開。還沒有 push 出去,需要整理時應該會用到...

Archives