如果想在GitHub上掛一個自己的開源程序,應該如何上手開始準備?

有沒有哪位大神有相關經驗可以共享一下的。多謝


如果 不懂git 瀏覽Git - Book的一到四章

否則 直接看這章的這一節Git - Git 託管服務


首先,你要有一個開源的程序……

然後就好辦了:

選`Create a new repo

然後我們就跳進了一個頁面

寫上名字、勾上README,如果你喜歡的話可以在這一步就選一個協議。協議的作用是授權他人使用你的作品,因為,在有的國家,在未授權的情況下甚至不能複製你的文件,在這些國家和地區,你可以向一些人收取複製授權費,控告沒有與你達成協議的人讓它們支付賠償。這裡實際上只是根據Github這邊的習慣來,如果你實在很希望人們將你的作品用於商業用途以發揮更大的價值,你可以去每個文件下聲明一下你的授權可能更加不錯。糾結完這些後選`Create repository。

好了接下來我認為比較好的方式就是開始用Tortoise git,有些人覺得SourceTree更好,或者有些人繼續用網頁版,有些人選擇用終端。

我就用Windows下的Tortoisegit舉例。

新建成的repository中你會在它主頁右下角找到一個clone URL,把它複製到剪切板中。在文件管理器中,在你喜歡的位置點右鍵,選Git clone

然後就是黏貼剛剛的clone URL到URL項的位置

點擊OK按鈕,然後就可以等待git幫你把repository給clone下來。

接下來就是把你的項目文件複製到新產生的repository文件夾,在系統的文件管理器中在這個目錄下點擊滑鼠右鍵,選`Git Commit -&> "master" ...

然後是在`Message中填上你的修改說明

點OK之後我們還要把它push到Github去。點`Push...。

接下來直接點OK。

接下來我們要填寫Github賬號的密碼。

點OK之後我們就完事了,可以把這些窗口都關掉了。

不過我再想想,這些好像都不是準備工作。原諒我發了一堆廢話和沒有幫助的圖……(不原諒也沒有關係……

真正的準備工作只有一個:寫一個值得分享的項目,並且是至少寫到可以拿出來看看的程度。比如寫一個文本編輯器,至少要到有基本的鍵入文字的功能吧?寫一個HTTP代理,至少可以接受一個簡單的GET請求吧?這些方面可以參考一下Eric Raymond寫的《UNIX編程藝術》


各位都是回答 VCS 工具的使用的,我從別的方面來說一下。

1,你真的確定開源了?你知道開源後的責任么?

開源意味著你要持續的投入精力去維護這個項目,一些你自己用不到的功能很可能會成為別人的瓶頸,你必須去修改或者至少去組織維護。這是一個很累的事情。

我自己這點就沒做好,hgflow 很長時間也沒管了,但是不斷有 bug 飛過來。也借這個機會問問有沒有其他的維護者一起維護。

請估算好自己大約有多少時間去維護。

2,是否推廣你的項目?

我相信很多的人開源項目都是希望推廣他的,那麼你是否是有精力和渠道去推廣呢?等著人們從 GitHub 或者 Google 上搜索到是不現實的。一般都是火了才能搜到,而搜不到又不容易火。想必雞和蛋便是如此。

如果你選擇推廣,那麼你可以選擇

- 在這個項目的語言的郵件列表中推廣

- 微博

- 寫 Blog

- 和其他項目做交換鏈接等

- 知乎

知乎怎麼推廣,就比如我現在回答這個問題就是一個軟廣。

嗯,廣告時間,我和一個朋友剛剛開源了我們的腳手架工程 tank 使用 Python 編寫,提供 Web Server 端的支撐,基於 Tornado, SqlAlchemy 等開源項目。

請移步 https://github.com/tomacloud/tank

3,有實際的項目在使用

有很多的開源項目是為了開源而開源,這樣的項目豬毛亂長,並且無法很好地解決各種異常情況的問題。而結果就是這個項目逐漸的變得不活躍了。

還是以我剛剛廣告裡面提到的 tank 為例,我現在的所有個人項目都用 tank 支撐,並且也推廣到了我打工的創業公司,這些都是保證 tank 能夠活躍的。

4,文檔!文檔!文檔!

這才是重中之重。沒有文檔,就好像你盯著神燈但是屁嘛用沒有。使用者尋找開源項目的目的就是快速的解決當下的問題,而且是方便的解決。沒文檔,再好的戲也出不來啊。

說道文檔,一定要分成如下部分

- 安裝文檔

- 使用文檔

- 如何貢獻

在 Github 上可以使用 Wiki 直接提供文檔的服務。

比如 tank 現在最大的問題就是文檔,幾乎是沒文檔,這有個鳥用啊。所以我們準備在春節附近加上一些文檔。

樣例代碼也可以放在這裡。

5,支持

當有越來越多的人在開始使用你的開源項目後,你就需要開始對你的項目進行支撐了,這時候你就是客服。

用戶會使用 Github 上的 Issues 提交各種問題。並且可能在不同的郵件列表討論組去討論。

6,語言

我們最熟悉的文字就是漢語了,但是如果這個項目是可以面向海外用戶的,那麼就需要考慮一些翻譯的問題。如果沒有太多的精力,那麼英語也是必要的。

文檔的重要程度

- 英文

- 中文

- 其他

7,協同

既然是開源項目,就存在協同,這裡有可能是自己的朋友也有可能是不認識的人。

- 同一個工作區的協同

可以使用 git-flow 流程,或者同一個工作區的 Pull-Request (PR) 方式,甚至是大家一個 master 就滾來滾去也好

- 不同的工作區

一般的這樣都會是從你的項目 fork 一個自己的項目出去,然後以 PR 的形式貢獻代碼。你作為項目的管理者,你就必須對這些貢獻的代碼進行 Review 測試等。而且還可能需要對對方的設計進行取捨和權衡。這裡面的很多問題是和人打交道的,EQ 需求量不小。

8,配套設施

什麼 CI 啊,UT 啊,有什麼上什麼,不求最好,但求最全。

最後,祝你在開源的事業上,一帆風順。


在GitHub上維護了一個遊戲漢化項目和一個給粗糧設備專門適配的Android ROM,路過來說幾點。

1.如果題主想要立項的話,我建議您還是先好好修鍊一下Git的技能樹,儘管Windows和Mac都下有客戶端,但還沒法包攬所有事務,關鍵時刻還得敲。


2.協作?那得保證你的都會熟練使用Git。

3.熟讀GitHub上的官方幫助文檔


我不服氣,為什麼這種簡單無聊的只要看看博客就能搞定的問題都有這麼多回答,我提的問題起碼比這個有營養多了,沒人回答呢!

回復題主,github 的使用還是比較簡單的,首先要理解什麼是git ,其次理解git 和github 的關係。理解代碼在倉庫中的四種狀態。理解了了這幾個關鍵的概念,對於後面具體的命令等等學習大有裨益。純爪機手打,有錯請諒解。

個人學習經驗僅供參考


推薦閱讀:

打算做一個獨立網站,有人可以幫忙解釋一下外包建站、開源程序建站以及SaaS建站嗎?

TAG:軟體開發 | GitHub | 開源程序 | 計算機專業 |