GitHub入門與實踐總結
自己的博客 http://blog.csdn.net/qq_22329521
什么是GitHub
==
github是開發者提供Git倉庫的拓寬平臺,讓開發者與朋友,同事同學及陌生人共享代碼的一個平臺
GitHub除了提供Git倉庫的托管服務外,還為開發者或團隊提供了一系列功能,幫助其高效率,高品質地進行代碼的編寫
GitHub提供的主要功能
- Git倉庫:
一般情況下我們可以免費創建任意個GitHub提供的Git倉庫。但如果需要建立只對特定人物或者自己公開的私有倉庫,則需要付錢 - Organization:
個人在使用個人賬戶就足夠了,但如果是公司,建議使用Origaniztion賬戶,它的優點在于可以統一管理賬戶和權限,還能統一支付一些費用。如果只是公開倉庫,是交流群或者小團體開發軟件,可以免費創建Organiztion賬戶。 -
Issue:
Issue功能,是將一個任務或者問題分配給一個Issues進行追蹤和管理的功能。每一個功能更改或者修正都對應一個Issue,討論或修正都已這個Issue為中心進行。只要查看Issus,就知道這個更改相關的一切信息,以此進行管理。在Git上提交信息寫上Issus的ID(例如 “#7"),GitHub就會自動生成從Issue到對應提交的鏈接。另外,只要按照特定的格式描述提交信息,還可以關閉Issue。 - WiKi:
Wiki作為Git倉庫進行管理。改版的歷史記錄都會被保存下來。 -
Pull Request:
開發者向GitHub的倉庫推送更改或功能添加,可以通過Pull Request向別人倉庫提出申請,請求對方合并。
PullRequest 送出去后,目標倉庫的管理者等人將能夠查看Pull Request的內容及其包含的代碼更改
同時,GitHub還提供了對Pull Request和源代碼進行討論的功能。提供此功能可以對行為單位對源代碼進行評論,讓程序員高效的交流
Git
git的基本操作
- git init--初始化倉庫
- git status--查看倉庫的狀態,是一個非常常用的命令,工作數和倉庫在被操作的過程中,狀態會不停發送變化,通過git status可以查看當前的狀態。
- git add --向暫存區中添加文件,如果只是用Git倉庫的工作樹創建了文件,那么該文件并不會被計入Git倉庫的版本管理對象中,所需我們需要用git add 講其加入暫存區中。暫存區只是提交之前的一個臨時區域
- git commit--保存倉庫的歷史記錄 通常 命令為 git commit -m xxx -m 后面的參數標示提交的信息
- git log 查看提交日志
- git log xxx文件 只顯示該目錄下的日志,如果是文件名,就會顯示該文件的相關日志
- git log -p 顯示提交所帶來的改動
- git log -p xxx文件 顯示文件的改動
- git diff 查看更改前后的差異
- q 在git命令行中退出,一個q按鍵
git分支操作
- git branch 顯示分支一覽 帶*開頭的是當前的分支
- git checkout -b xxx 創建,切換分支
- git checkout xxx 切換分支
- git checkout - 切換到上一個分支 "-"替代了分支名,通常master分支作為主分干
- git merge 合并分支 git merge --no-ff xxx
- git log --graph 以圖表形式查看分支
- git reset 回退歷史版本,使用 git reset --hard xxx(這個提供目標點的哈希值通過git log 等日志查看過去提交的時間點的哈希值)
- git reflog 命令 以查看當前倉庫的操作日志 gitlog只能查看當前狀態為終點的歷史日志
![LZ4MYR@0}99T7]XON2GBTH1.png](http://upload-images.jianshu.io/upload_images/2326281-2a6b5a90baa7c681.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- git commit -am 將add 和commit命令結合起來 git commit -am xxx備注
- git push -u origin master(xxxx) 推送到遠程倉庫 -u 可以在推送的同時,將origin倉庫的xxx作為本地倉庫的當前分支的上游。
- 以后 通過 git pull 就可以從遠程倉庫獲取內容
- git clone 克隆
- git checkout -b xxx origin/xxx 將遠端中xxx分支獲取到本地倉庫
- git pull 獲取
GitHub的功能
點擊頭像
- Explore:GitHub公司特別推薦的軟件,按語音篩選本日/周/月的熱門倉庫/開發者(里面好多都是高大上的東西)
- integrations:GitHub 功能集成工具(包括 Travis CI、Code Climate、Gitter 等)
- Pull Requeste 顯示用戶已經進行過的Pull Request
- Issues 查看用戶擁有的權限的倉庫 或分配給自己的Issue。用戶同時進多個項目時,可以在這里一并查看
- Repositories you contribute to:顯示用戶做個貢獻的倉庫。
- Your Repositories 用戶自己的倉庫,根據更新時間順序來拍
這是安卓牛人的github 作為模板案例
- Popular repositories (好像是在看個人界面才看的到) 顯示公開倉庫中受歡迎,擁有大量Star的部熱門倉庫
- contributions 活躍度 一格標示一天 ,記錄用戶對擁有讀取權限的倉庫的大致貢獻度。貢獻度的衡量標準包括發送Pull Request的次數,寫Issue的次數,進行提交的次數等。顏色越深貢獻度越高
- Contribution Activity,按照時間順序顯示具體貢獻活動的鏈接。
- Public Activity 顯示該用戶公開活動。指用戶做了什么,比如倉庫的提交或者pull Request 等,大量的公開信息都會記錄在這里。
- Repositories 顯示該用戶公開的倉庫。Fork來的倉庫也會顯示在這
倉庫的名稱,語言,簡要說明,最終更新日期都會出現在這里,星形圖案旁邊的數字表示star的人數,在旁邊表示Fork數,背景顯示的圖標表示倉庫的更新頻率,橫向為時間軸,右側為最新時間。色塊越高,倉庫的更新頻率越高
倉庫
倉庫的url https://github.com/用戶名/倉庫名/ (如 https://github.com/alibaba/fastjson)
- Code 顯示該倉庫的文件列表
- watch 這個按鈕可以watch該倉庫。今后該倉庫的更新信會顯示在用戶的公開活動中。start 這個數越高 越受歡迎,watch和start的區別在于watch之后該倉庫的相關信息會在通知中顯示,讓用戶可以跟蹤倉庫的內容而Star更像是書簽,讓用戶將來可以在Star標記的列表中找到該倉庫。
- Fork 這個數字越大,表示參與這個倉庫的人越多
-
Issus 用戶BUG報告,功能添加,方向性討論等,將這些以Issue形式進行管理。Pull Request時也會創建Issue。判斷顯示的數字是當前處于Open狀態的issue 數
Alt text - Pull Requests 可以查看列表中并管理Pull Request 。代碼更改和討論都在這里進行。判斷顯示的數字表示尚未Close的Pull Request
- Wiki常用與記錄開發者共享的信息或軟件文檔
- Pulse顯示該倉庫最近的活動信息。
- Graphs 通過圖表的心事顯示該倉庫的各項指標
- clone or download 下載或者clone項目
- commit 多少次提交 點擊可以查看提交歷史
- branches 可以查看倉庫的分支列表
- releases 顯示倉庫的標簽。同時將標簽加入時的文件以歸檔形式(ZIP,tar.gz)下載到本地。軟件在版本升級時都會打標簽,如果需要特定版本的文件,可以從這里查找
- contributors 顯示該倉庫進行提交的程序員名單。如果你對該倉庫發送過Pull Request并且被采納,那么在這里就能找到自己的名字。
- Branch:master 可以點擊切換到不同分支去查看差別
查看文件的差別
我們點擊左側行號某一行就會成黃色,同時url末尾會添加#Lxx 如果我要查看第99到101,查看url末尾地址
如果我們要快速查看某個文件 我們在最開始的界面 按住鍵盤的T,然后搜索關鍵字 就很快搜索到了
- Blame 可以能夠按行顯示最新提交的信息
- History可以查看該文件的歷史記錄
在GitHub 上直接修改url可以給用戶已多種形式查看差別
查看分支的區別
查看幾天的區別
https://github.com/alibaba/fastjson/compare/maters@{7.day.ago}...master
- day
- week
- month
- year
指定期間可以使用四個單位。如果差別過大則不會列出所有提交只顯示最近的一部分
Lssue
開發者為了跟蹤Bug及軟件相關討論,進而方便管理,創建了Issue。
GitHub的Issue的評論可以使用GFM的語法進行描述
具體可以自己去嘗試
Issue可以添加標簽進行管理,點擊標簽,可以只顯示該標簽的Issue,標簽可以自由從創建,BUG,任務備忘等分類。
如果Issue積累到一定數量,可以考慮設置標簽
在Issue下有個milestones 可以設置里程碑(個人理解版本,管理任務,查看某個版本下還有剩余的Issue)
Pull Request
是用戶修改代碼想對付查看發送采納請求的功能,也是GitHub的核心功能,
- conversation標簽頁,可以查看當前Pull Request相關的評論以及提交的歷史記錄,人民可以在這里評論互相探討。
- Files Changed 可以查看當前Pull Request更改的文件內容的前后差別
Pull Request流程
- Fork 點擊Fork創建自己的倉庫,新建倉庫
- clone
- branch
- 添加代碼
- 提交修改
- 創建遠程分支
- 來到github 頁面查看自己提交的分支, 查看分支差別頁面, 有個creat pull Request 按鈕 隨后填寫相應的表單
- 來到github頁面 點擊pull Request 查看自己提交的狀態
接受Pull Request
- 代碼審查
- 查看圖片的區別 https://github.com/blog/817-behold-image-view-modes官方博客,可以對圖片進行對比
Git Flow
以部署為中心的開發模式
流程
- 令master分支常保持部署的狀態
- 進行新的作業時要從master分支創建新分支,新分支名稱要具有描述性
- 在新建的本地倉庫分支中進行提交
- 在GitHub端倉庫創建同名分支 ,定期push
- 需要幫助或反饋時創建Pull Request,以Pull Request進行交流
- 讓其他開發者進行審查,確認作業完成后與master分支合并
- 與master分支合并后立刻部署