《GitHub 入門與實踐》 筆記git
在Git中,開發者將源代碼存入名爲「Git倉庫」的資料庫中,並加以使用。而GitHub則是在網絡上提供Git倉庫的一項服務。這也就是說Github上公開的軟件源代碼都是有Git進行管理。程序員
SOCIAL CODING.隨着GitHub的出現,讓全部人都平等的擁有了更改源代碼的權利,軟件開發者們才真正意義上擁有了源代碼.github
若是想要記述得更加詳細,不加-m,執行後編輯器會啓動,格式以下shell
第一行:用一行文字簡述提交的更改內容 第二行:空行 第三行之後:記述更改的緣由和詳細內容
其餘經常使用操做編程
#(項目在github上)直接clone 遠程倉庫 git clone git@github.com:michaelliao/gitskills.git #(本地已有項目)上傳本地文件到遠程倉庫 git init git remote add origin git@xxxx.git git add . git commit -m 'something' git push origin master git status #能夠丟棄工做區的修改 (commit 以前 git checkout -- file #把暫存區的修改撤銷掉(unstage),從新放回工做區 git reset HEAD file #從遠程倉庫更新最新代碼 git pull origin master #清除提交緩存,而後能夠從新添加 git rm -r --cached . /或者指定文件
分支操做api
#建立新分支,而且切換到新分支 git checkout -b dev # 查看當前分支 git branch # 提交到當前分支 git push origin dev # 合併到主分支,先切換到 主分支,再merge git checkout master git merge dev #合併後,還須要再push一次 git push origin master #刪除分支 git branch -d dev git push origin :dev
tag 操做緩存
git tag -a v1.0 -m 'some message' git show v1.0 git push origin v1.0 # 刪除 tag git tag git tag -d v1.1 git push origin --delete tag v1.1
建立分支,並切換到分支,並提交ruby
$ git checkout -b feature-A Switched to a new branch 'feature-A' //實際上等同於下面兩條命令 $ git branch feature-A $ git checkout feature-A
切回到上一個分支,git checkout - , 用"-" 能夠代替分支名markdown
假設 feature-A 已經開發完,先須要將它合併到master。網絡
$ git checkout master $ git merge --no--ff feature-A // 爲了在歷史記錄中明確記錄本次分支合併,咱們須要建立合併提交。所以須要加上 --no--ff 參數
解決衝突後,執行git add 和git commit命令
<<<<<<< HEAD -feature-A ======= -fix-B >>>>>>> fix-B
git rebase -i HEAD~2 : 能夠選定當前分支中包含HEAD(最新提交)在內的兩個最新歷史記錄對象,並在編輯器中打開
pick 7a33333 Add feature-C pick 6f11111 Fix typo #p,pick = use commit #r,reword = use commit,but edit the commit message #e,edit = use commit,but stop for emending #s,squash = use commit, but meld into previous commit #f,fixup = like 'squash',but discard this commit`s log message #x,exec = run command (the rest of the line) using shell //將6f11111 Fix typo的歷史記錄,壓縮到7a33333的Add feature-C裏。將pick刪除,改寫爲fixup pick 7a33333 Add feature-C fixup 6f11111 Fix typo
git remote add ——添加遠程倉庫
$ git remote add origin git@github.com:github-book/git-tutorial.git
git push —— 推送至遠程倉庫
git pull —— 獲取最新的遠程倉庫分支
若是兩人同時修改了統一部分源代碼,push時就很容易發生衝突。因此多名開發者在同一個分支中進行做業時,爲減小衝突狀況發生,建議頻繁地進行push和pull操做
在倉庫頁面按 ‘t’鍵,而後輸入要找的目錄或者文件的部分名稱,篩選器會在倉庫目錄和文件中進行篩選,搜索出要找的文件。這種方式比一級級查看目錄和文件要快得多。
在github上,直接修改URL就可讓用戶以多種形式查看差異。
查看分支之間的差別
https://github.com/rails/rails/compare/4-0-stable...5-0-stable
這樣就能夠查看兩個分支之間的差別了。上面的網頁能夠看到,兩個版本之間提交有上萬次,Files changed 有3315....
查看與幾天前的差異
https://github.com/rails/rails/compare/master@{7.day.ago}...master
這樣就能夠查看這段期間內的差異。day 還有其餘幾種形式。
查看與指定日期之間的差別
https://github.com/rails/rails/compare/master@{2016-09-01}...master
這樣即可以查看與指定日期之間的差異。
因爲能夠從多種角度查看差異,因此github也稱得上是一款優秀的源代碼查看器。善於利用上述技巧,能節省很多時間。
GMF github-flavored-markdown.MD語法不作過多介紹,只介紹其中一些特性。
語法高亮
def hello_world puts 'hello world' end
這樣一來,代碼就會被添加語法高亮,變得直觀易讀。
TaskList 語法
//本月計劃的任務 - [ ] 完成ES6語法改造 - [ ] 完成非正常單詞改造 - [x] 學完GITHUB特殊技巧
這樣一來 ,這段文字就會標記成複選列表的樣式。這個複選樣式能夠直接勾選或者取消。沒必要打開編輯器從新編輯,很是方便
在評論中應用表情
在評論中輸入 ":" 便會啓動表情自動補全功能。只須要輸入幾個與表情相關的字母,系統就會爲您篩選自動補全的對象。具體表情見:http://www.emoji-cheat-sheet.com
在相關Issue中顯示提交信息
在Issue一覽表中,能夠看到,每一個Issue的標題下面都帶了諸如 「#21」 的編號。這樣只要在提交信息時,帶上 "#21" 就能夠在Issue中看到該提交信息,使關聯的提交一幕瞭然
Close Issue
在提交信息中如下列任一一種格式描述提交信息,對應的Issure就會被close。
利用該方式,每次提交而且push後,就沒必要大費周章到GitHub的Issue中尋找相應的Issue 再手動Close。
Github pages 主要用於在Github上託管靜態HTML,以便發佈項目的Web頁。
因爲能夠綁定獨立的域名,人們也常常利用結合這個功能的Octopress 來搭建博客
面向全世界招聘程序員的職位公告板。Jobs
企業版
GitHub 面向開發者公開了API。 具體見 https://developer.github.com
循序漸進地建立GitHub帳號並公開本身的源碼並非什麼難事。Pull Request 是社會化編程的象徵,能夠說給開源開發世界帶來了一場革命。不會用這個功能,就等於不會用GitHub。。。(做者吹得有點過。。)
Pull Request 是GitHub的核心功能
(如下技巧一樣能夠應用在其餘評論中,如Issue)
在評論中應用表情
(一樣應用在其餘評論中,如Issue)在評論中輸入 ":" 便會啓動表情自動補全功能。只須要輸入幾個與表情相關的字母,系統就會爲您篩選自動補全的對象。具體表情見:http://www.emoji-cheat-sheet.com
引用評論
只要選中須要引用的語句,而後按「R鍵」便會自動以引用的形式添加到評論欄,這樣一來就能夠輕鬆便捷地引用評論了
在開發過程當中發送Pull Request進行討論
避免一個功能在開發完成後才收到來自設計或者實現方面的指正,致使代碼須要大幅更改或者從新實現
明確標出 「正在開發過程當中」
爲了防止開發到一半的Pull Request 被合併,通常在標題前加上 「[WIP]」 字樣,WIP 是 Work In Progress的簡稱
不進行Fork 直接從分支發送Pull Request
通常來講,在Github上修改對方的代碼時,須要先將倉庫Fork到本地,而後再修改代碼,發送Pull Request。
可是,若是用戶對該倉庫有編輯權限,則能夠直接建立分支,從分支發送 Pull Request