我們可以使用 Git 以及 GitHub 做哪些事情?

新接觸到git github,感覺十分強大,自己不是專業的程序員(只能偶爾改一改html和css的那種),所以在使用git及github之餘也在考慮做其他更多的事情。

目前我了解到能使用git和github實現的事情有:

  1. 使用github作為靜態博客的託管,比如jekyll、hexo等

  2. 使用git來管理自己的工作文檔(使用純文本文件markdown,word之流的不適用)

  3. 使用github來向開源程序的作者提問題(比email更方便一些,且能得到更多的人的幫助)

  4. 使用git做網站維護(每次先將網站的伺服器上的程序程序下載到本地,修改過commit到git後再覆蓋到網站的伺服器上)

  5. 使用git做程序代碼收集器,使用分支和標籤的功能來管理同一套的程序各種主題、插件等內容,參考我的另外一個提問:我這樣使用git合理嗎?

目前感覺git真是神器啊,還能夠如何的使用git及github,請教各位資深達人!


要想回答git/github/任何工具可以做哪些事情,一個有系統性的思路是先看它有哪些feature,然後從這些feature極其組合出發看看有那些可能的應用。

1. 時光機器=&>調參數神器。對於文本文件,git可以高效地保存歷史,方便回滾到以前的狀態。作為一個科研狗,最不爽的事情莫過於一個演算法好不容易把效果調得比較好了,在試圖把它調的更好的過程中發現效果越來越差。。一定是開門的方式不對。這時候如果每個參數設定都搞一個commit,在commit message裡面寫上定量的效果如何,就方便回滾到最好的參數。

2. 分支管理=&>寫文檔神器。不論是科研狗,產品狗還是攻城獅,寫文檔一般都有好幾個版本在進行。一個比較成型但不少新想法還沒加進去的給老闆看的版本,不成熟的新想法版本1,不成熟的新想法版本2等等。如何在不同版本間自如切換就要用到git branch和git rebase了。用git相比於拷貝粘貼的好處體現在——有些更改是會影響到所有版本的。這時候用git的分支管理直接rebase就可以把一段更改同時應用到所有版本里。同時新想法也會逐漸併到給老闆看的穩定版本里,用git也十分方便。

3. git hook=&>自動化神器。git有個比較高階一點的功能是git hook。大概的說就是每次執行git push的時候,客戶的git會向一個遠程伺服器比如github發起push請求,內容是我做了這些更改有這些commits等等。伺服器在接受完數據以後可以直接掛斷,也可以執行一個用戶指定的小程序。比如你可以(用某種方法,方法是什麼下面講)告訴伺服器這個「制定的小程序」就是ls,那麼伺服器在你的git push執行完以後就會執行一下ls,然後把執行的結果(當前repo下面的文件列表)發給你。你的git收到以後會把這個列印在屏幕上。

具體怎麼指定這個「特定的小程序」,不同的平台不一樣。如果git伺服器是你自己管理的,那麼可以看一下git post-receive hook (git post-receive hook),如果是github可以看一下webhook: Creating Webhooks · GitHub Help

這個應用非常靈活。舉幾個栗子:1) 我的blog (Computing Life) 是用git管理的,每次push以後會自動調用pelican生成/更新靜態頁面,不用自己ssh到伺服器上面日了。2) 結合github的web hook可以實現代碼更新郵件提醒等功能 ,這裡有介紹:Automatic Email Notification on Github Pushes。 3) 代碼的自動連續部署和測試,這裡有介紹:Self-Updating Node.js Web App。

拋磚引玉。未來會再更新。


我有特殊的 Github 運用技巧

(我的博文原文地址:Aaron Liu - Welcome to my blog!)

現在開源項目放到了Github上面,包括Ruby源代碼、Linux源代碼等。

當我使用開源項目開發時碰到一個巨難的bug,比如Ruby本身的內存泄露、解釋器錯誤,簡直毫無頭緒,根本無法調試,我該怎麼辦呢?

這時候就有一招:你去Ruby這個項目的源碼中,找到那段有問題的代碼的contributor,或者找那些提交最勤快的contributors,去他們的Github中、博客、博客的評論中找:他們用過哪些調試工具,如何調試代碼、他們怎麼去面對類似的問題的,解鈴還須繫鈴人嘛。靠這個方法我剛剛就找到一種CPU性能的調試工具。

按這個節奏就能理出真正的頭緒,並且非常非常節約你的時間。這招我剛悟到不久,非常奏效。

不知道這算不算一種「人肉數據挖掘」。。。。。


寫代碼,寫博客,寫書。

雖然我一個都沒寫完。


GitHub不只是程序員的生產力增倍器。

之前 @李楠君在他的一個答案中提到過,日本的憲法被人掛在了GitHub上。。。

地址:日本國憲法

可以Pull Request哦~

更新:

劉閩晟同學掛出了我國憲法:notcome/Constitution.PRC · GitHub

本人只是搬運,謝絕查水


Linux的/etc目錄。。。

。。。以保證不被Linux玩。


Solidot | 新任台北市長寫了一本GitBook

無黨派候選人柯文哲上周在台北市長選舉中打敗了國民黨候選人連勝文,當選為下一任台北市長。在選舉前為展現公開透明,柯文哲博士及其團隊發布了一本GitBook的市政白皮書,詳細談論了他的施政綱領。這本白皮書大獲成功,短短數天就吸引了25萬讀者,在Facebook上獲得了數萬個贊,頁面瀏覽量超過百萬次。


曾經用github來進行SL大法。。。

饑荒不能存檔才出此下策的嘛ヾ( ̄▽ ̄)


不局限於code,發揮你的想像,可以利用github做更多的事情。

比如我在github建立了一個程序員健康計劃。

hoosin/EveryDaySport · GitHub

用issue管理健身計劃示例 · Issue #1 · hoosin/EveryDaySport · GitHub

任務領取/結對監督模式概念示例 · Issue #2 · hoosin/EveryDaySport · GitHub

Geek的世界總能讓有你意想不到的事情~


就剛才,我面試了一個前端妹子。

水平一般,但有一定上升空間。正猶豫要不要她。

正好她說她有github。

我上去看了下,發現她有個情侶名互相follow的人。

於是我果斷把她pass掉了。


永遠是根據自己的需求去找合適的工具,而不是削足適履看到個好工具就什麼都來試試。因為覺得「在 GitHub 上上託管個靜態博客好酷炫」才去寫博客的人很少能堅持下來。

1. 想寫博客?你有 Tumblr, Medium 或者 Squarespace 等不同類型服務商可以選擇。

2. 想管理文檔?對於大多數人來說,用 Dropbox 比用 git 方便多了,甚至用 Word 的「修訂」功能也比 git 合適。

3. 想獲得開源程序的技術支持?根據你的問題內容選擇到 StackOverflow 或者 StackExchange 上去問。事實上我見過很多開源作者不歡迎別人用 GitHub 的 Issues 提和代碼本身無關的問題。

4. 想做網站部署,呃……「先下載到本地修改過後 commit 再覆蓋到伺服器上」完全沒有意義啊,看起來完全只是假裝享受使用 git 的過程……話說回來這個還真是 git 可以的一件事情,請參考 mislav/git-deploy · GitHub

5. 所謂「代碼管理」方式我也看了,全文把「新建一個分支」替換為「新建一個文件夾」無壓力……不不不,分支不是你想的那樣的……

GitHub 最主要的功能就是代碼託管,所以用來做代碼託管就好。它曾經號稱自己是 all about social coding(見 Blob contributions box · GitHub),現在把這句口號給去掉了,儘管你還是可以通過社交功能來關注自己喜歡的人和喜歡的項目。它果斷地把 Uploads 拿掉(Goodbye, Uploads · GitHub)換成 Releases(Release Your Software · GitHub)就是避免自己成為下一個 SourceForge。它能做一點點項目管理,但功能也只是剛剛好。有人通過 Pages 建博客,但 Github 對 Pages 的定義仍然是「Websites for you and your projects」(GitHub Pages)。GitHub 很清楚自己的立身之本就是代碼託管,有了代碼才有項目,有了項目才有人——作為用戶,我對 GitHub 也沒有太多的期待,能讓我把代碼託管用好就好。

利益相關:GitHub 付費用戶


簡而言之,所以需要或者可以追溯變遷的記錄,都可以用版本控制來玩。

一個例子,以前gitcafe有人玩過,好像就是用git來玩象棋/圍棋,歷史可以追溯,一局結束建立一個tag,玩多了可以當棋譜用,還可以建立分支來表示不同的後招,隨時隨地可玩。


我用Github列讀書計劃:huihuidaxia/show_me_the_book

我用Github寫技術文檔:huihuidaxia/show_me_the_code

算奇技淫巧嗎?哈哈哈哈哈


有個日本女程序猿在上面徵婚


最有價值的就是可以學習到新知。

看看牛逼的人代碼怎麼寫的,他們用到了哪些工具,如何判斷取捨。從模仿別人開始吸取精華,突破自己的思維慣式,改變看待問題的角度和視界。


Octopress用git管理文章

在dropbox中建文件夾當remote用

Vundle之類的package manager

為Github上的軟體寫pkgbuild會較易


如果你上傳二進位文件(二進位通常較大,而且github對他做diff的效果極爛)的話,可能以後會遇到一個問題:

我們知道,github給每一個人分配的空間其實是有上限的。如果你的某一次commit突破了上限,你的commit就會失敗。如果你要revert這個commit的話,revert也是一個commit,所以你會上傳給github更多的東西,你仍然會失敗。所以這個repository就差不多廢了,你的改名字了……


還可以用來作曲!!!

真的是,比如說這個yh200212121212/yuepu,只有你想不到沒有做不到


在測試過各種blog系統,各種筆記:有道,evernote,wiz後。我現在使用github的issue記筆記。實在太好用了


只有想不到,沒有做不到.


我最常用的是找代碼示例,輸入幾個關鍵詞代碼,搜索,點code


推薦閱讀:

github怎麼綁定自己的域名?
Github 上怎樣把新 commits 使用在自己的 fork 上?
如何評論開源中國的山寨Github?
如何在github上下載單個文件夾?
在 GitHub 上有哪些適合前端初學者學習的開源項目?

TAG:版本控制系統 | Git | GitHub |