最近聽同事說他都在使用GitHub,GitHub是程序員的社區,在裏面能夠學到不少書上學不到的東西,因此最近在準備入手這方面的知識去嘗試學習,正好碰到這麼詳細完整的文章,就轉載了,但願對本身和你們有幫助。java
GitHub操做總結 : 總結看不明白就看下面的詳細講解.git
GitHub操做流程 :程序員
第一次提交 : github
方案一 : 本地建立項目根目錄, 而後與遠程GitHub關聯, 以後的操做同樣;web
-- 初始化git倉庫 :git init ;shell
-- 提交改變到緩存 :git commit -m 'description' ;windows
-- 本地git倉庫關聯GitHub倉庫 : git remote add origin git@github.com:han1202012/TabHost_Test.git ;瀏覽器
-- 提交到GitHub中 : git push -u origin master ;緩存
方案二 : 方案二就是不用關聯GitHub倉庫, 直接從GitHub沖剋隆源碼到本地, 項目根目錄也不用建立;
-- 從GitHub上克隆項目到本地 :git clone git@github.com:han1202012/NDKHelloworld.git , 注意克隆的時候直接在倉庫根目錄便可, 不用再建立項目根目錄 ;
-- 添加文件 :git add ./* , 將目錄中全部文件添加;
-- 提交緩存 :git commit -m '提交';
-- 提交到遠程GitHub倉庫 : git push -u origin master ;
以後修改提交 :
-- 與GitHub遠程倉庫同步 :git pull ;
-- 查看文件變動 : git status ;
-- 提交代碼到本地緩存 : git commit -m 'description';
--提交代碼到遠程GitHub倉庫 :git push ;
.gitignore用法 : 開放模式 註明忽略的文件 直接列出文件名, 保守模式 註明保留的文件 !文件名 ;
Git標籤操做 : 輕量級標籤, 帶註釋標籤;
--查看標籤 :git tag ;
--添加標籤 : 輕量級標籤git tag tagName , 帶註釋標籤git tag -a tagName -m 'description' ;
--刪除標籤 :git tag -d tagName ;
--提交標籤到GitHub中 : git push origin --tags ;
Git分支操做: 建立分支後, 分支操做不會影響master分支, 可是master分支改變會影其它分支;
--列出分支 :git branch ;
--切換分支 :git checkout master ;
--提交分支 : git push origin branchName ;
--刪除分支 : git branch -d branchName , 強制刪除分支 git branch -D branchName ;
--合併分支 : git merge branchName ;
.
分佈式 : Git版本控制系統是一個分佈式的系統, 是用來保存工程源代碼歷史狀態的命令行工具;
保存點 : Git的保存點能夠追蹤源碼中的文件, 並能獲得某一個時間點上的整個工程項目額狀態; 能夠在該保存點將多人提交的源碼合併, 也能夠會退到某一個保存點上;
Git離線操做性 :Git能夠離線進行代碼提交, 所以它稱得上是徹底的分佈式處理, Git全部的操做不須要在線進行; 這意味着Git的速度要比SVN等工具快得多, 由於SVN等工具須要在線時才能操做, 若是網絡環境很差, 提交代碼會變得很是緩慢;
Git基於快照 : SVN等老式版本控制工具是將提交點保存成補丁文件, Git提交是將提交點指向提交時的項目快照, 提交的東西包含一些元數據(做者, 日期, GPG等);
Git的分支和合並 : 分支模型是Git最顯著的特色, 由於這改變了開發者的開發模式, SVN等版本控制工具將每一個分支都要放在不一樣的目錄中, Git能夠在同一個目錄中切換不一樣的分支;
分支即時性 : 建立和切換分支幾乎是同時進行的, 用戶能夠上傳一部分分支, 另一部分分支能夠隱藏在本地, 沒必要將全部的分支都上傳到GitHub中去;
分支靈活性 : 用戶能夠隨時 建立 合併 刪除分支, 多人實現不一樣的功能, 能夠建立多個分支進行開發, 以後進行分支合併, 這種方式使開發變得快速, 簡單, 安全;
Git客戶端下載地址 :https://code.google.com/p/msysgit/downloads/list 將地址複製到瀏覽器欄便可下載.
歡迎界面 : 直接下一步;
協議 : 必須接受;
安裝位置 : 預留100M空間, 自定義安裝位置;
選擇安裝組件 :也能夠默認選擇;
-- 圖標組件(Addition icons) : 選擇是否建立快速啓動欄圖標 或者 是否建立桌面快捷方式;
-- 桌面瀏覽(Windows Explorer integration) : 瀏覽源碼的方法, 單獨的上下文瀏覽 只使用bash 或者 只用Git GUI工具; 高級的上下文瀏覽方法 使用git-cheetah plugin插件;
-- 關聯配置文件 : 是否關聯git配置文件, 該配置文件主要顯示文本編輯器的樣式;
-- 關聯shell腳本文件 : 是否關聯Bash命令行執行的腳本文件;
-- 使用TrueType編碼 : 在命令行中是否使用TruthType編碼, 該編碼是微軟和蘋果公司制定的通用編碼;
開始菜單快捷方式目錄 : 設置開始菜單中快捷方式的目錄名稱, 也能夠選擇再也不開始菜單中建立快捷方式;
設置環境變量 : 選擇使用什麼樣的命令行工具, 通常狀況下咱們默認使用Git Bash便可, 默認選擇;
-- Git自帶 : 使用Git自帶的Git Bash命令行工具;
-- 系統自帶CMD : 使用Windows系統的命令行工具;
-- 兩者都有 : 上面兩者同時配置, 可是注意, 這樣會將windows中的find.exe 和 sort.exe工具覆蓋, 若是不懂這些儘可能不要選擇;
選擇換行格式 :
-- 檢查出windows格式轉換爲unix格式 : 將windows格式的換行轉爲unix格式的換行在進行提交;
-- 檢查出原來格式轉爲unix格式 : 無論什麼格式的, 一概轉爲unix格式的換行在進行提交;
-- 不進行格式轉換 : 不進行轉換, 檢查出什麼, 就提交什麼;
開始安裝 :
安裝結束 : over;
修改Git Bash的配置 : 將Git Bash設置爲快速編輯模式, 能夠更好的使用該命令行工具 :
使用命令 : 建立本地ssh
路徑選擇 : 使用該命令以後, 會出現提示選擇ssh-key生成路徑, 這裏直接點回車默認便可, 生成的ssh-key在默認路徑中;
密碼確認 : 這裏咱們不使用密碼進行登陸, 用密碼太麻煩;
進入生成的ssh目錄 : C:\Documents and Settings\Administrator\.ssh 中, 使用記事本打開 id_rsa.pub 文件, 將該文件中的內容複製;
id_rsa.pub 文件內容 :
選擇左側的SSH-KEY選項 :
點擊右側的Add SSH key :
將上面複製好的ssh-key複製進去 :
驗證是否配置成功 :
使用命令 :
成功提示 : 若是出現Hi han1202012! You've successfully authenticated, but GitHub does not provide shell access. 就說明配置成功, 能夠鏈接上GitHub;
用戶名郵箱做用 : 咱們須要設置一個用戶名 和 郵箱, 這是用來上傳本地倉庫到GitHub中, 在GitHub中顯示代碼上傳者;
使用命令 :
工程的https地址: https://github.com/han1202012/TabHost_Test.git .
工程的SSH地址 : git@github.com:han1202012/TabHost_Test.git .
GitHub提示生成的命令 :
-- Create a new repository on the command line :
使用命令 :
使用命令 :
可能會報出一些警告, 不用理會 :
使用命令 :
使用命令 :
執行該命令, 源碼就被提交到了GitHub 中;
.
做者 :萬境絕塵
轉載請註明出處 : http://blog.csdn.net/shulianghan/article/details/18812279
.
屏蔽文件 : .gitignore文件是告訴Git哪些目錄或者文件須要忽略, 這些文件將不被提交;
經常使用場景 : 寫完代碼後會執行變異調試等操做, 使用 .gitignore 文件將這些編譯後的文件屏蔽, 這些文件不須要Git工具進行管理;
Android中的.gitignore : 在Android中 bin 和 gen 兩個目錄能夠忽略;
.gitignore位置 : 項目根目錄下;
過濾模式 : Git中的 .gitignore 中有兩種模式,開放模式 和保守模式,保守模式的優先級要高於開放模式;
開放模式 : 設置哪些文件 活 目錄 被過濾, 凡是在文件中列出的文件或者目錄都要被過濾掉;
-- 過濾目錄 : /bin/ 就是將bin目錄過濾, 該文件下的全部目錄和文件都不被提交;
-- 過濾某個類型文件 : *.zip *.class 就是過濾zip 和 class 後綴的文件, 這些文件不被提交;
-- 過濾指定文件 : /gen/R.java, 過濾該文件, 該文件不被提交;
保守模式 : 設置哪些文件不被過濾, 凡是列在其中的文件都要完整的提交上去;
-- 跟蹤目錄 : !/src , 該目錄下的全部文件都要被提交;
-- 跟蹤某類文件 : !*.java , 凡是java文件都要保留;
-- 跟蹤指定文件 : !/AndroidManifest.xml , 該文件須要保留, 提交上去;
配置原則 : 通常狀況下采用開放模式魚保守模式共同使用;
eg : 一個目錄下有不少目錄和文件, 當咱們只須要保留其中的一個文件的時候, 先用開放模式不保留這些文件, 而後用保守模式將這個文件留下來, 保守模式的優先級要高於開放模式;
標籤做用: 在開發的一些關鍵時期,使用標籤來記錄這些關鍵時刻, 例如發佈版本, 有重大修改, 升級的時候, 會使用標籤記錄這些時刻, 來永久標記項目中的關鍵歷史時刻;
查看標籤: 列出的標籤安裝ASCII字母順序肯定, 排序沒有很明確的意義;
-- 列出全部的標籤 :
標籤分類 : Git中的標籤分爲 輕量級標籤(lightweight) 和 帶註釋的標籤(annotated), 通常狀況下推薦使用帶註釋的標籤, 若是標籤是臨時的能夠採用輕量級標籤;
-- 輕量級標籤 : 輕量級標籤中的信息含量不多, 這種標籤只表明某時刻代碼的提交, 至關於指向這個提交的指針;
-- 帶註釋標籤 : 這種標籤是一種校驗和, 包含標籤名, 郵箱, 日期, 標籤信息, GPG簽名 和 驗證, 它至關於一個對象, 封裝了這些信息;
建立標籤 :
-- 建立輕量級標籤 : 這樣的標籤沒有附帶其它的信息;
-- 建立帶註釋標籤 : -m 後跟的是註釋信息, 當使用git show v2.1的時候, 會顯示這個註釋信息;
在本機上實驗不成功 出現下面的錯誤 :
-- 爲以前的提交添加標籤 : 先使用 git log --oneline 命令列出以前的提交, 會有一個七位的十六進制數進行標記, 使用git tag -a v3.1 f1bb97a 命令便可爲這個提交添加標籤;
刪除標籤 : 使用命令 git tag -d 標籤名 命令刪除標籤;
驗證標籤 : 提交了GPG帶註釋標籤才能夠驗證, 由於上面沒有提交成功, 這裏留下一個命令;
共享標籤 : 即將標籤提交到GitHub中;
查看現存分支 : git branch命令;
建立分支 : git branch 分之名稱, 就能夠建立一個分支, 建立完分支之後能夠查看分支, 當前使用的分支會顯示成爲綠色, 前面帶有 "*", 若是不是當前使用的分支, 顯示的是白色, 而且沒有 "*" 前綴;
切換分支 : git checkout 分支名稱, 切換分支之後, 在分支進行操做,文件的改變不會體如今master主分支中, 主分支改變, 會體如今其它分支中;
關於主分支和其它分支 :
-- 分支編輯 : 現有兩個分支 master 主分支, 和剛建立的branch1 分支, 切換到 branch1 分支, 在branch1 中建立一個文件 description_branch1.txt;
-- 其它分支文件不會影響主分支 : 而後在切換回 master 主分支, 發現沒有description_branch1.txt文件, 建立一個文件 description_master.txt;
-- 主分支會影響其它分支 : 在切換回 branch1 分支中, 發現存在 description_master.txt文件;
.
對比過程 :
查看該工程項目分支狀況 :
-- 分支結果 :
切換到 branch1 分支 :
查看 branch1 分支下的文件 :
-- 切換分支結果 :
查看主分支文件 :
提交分支命令 : 將本地的分支提交到 GitHub中;
合併分支命令 : 合併分支以後, 分支中有的文件在 主分支中也會顯示, 至關於將branch1 分支中的文件拷貝了一份到master分支中;
刪除分支命令 :
協做開發工做流程 : 這種狀況是最複雜的狀況, 多人團隊共同開發一個項目;
-- 與遠程倉庫同步 : git pull ;
-- 修改文件 : 添加 刪除 修改文件;
-- 查看變動 : git status ;
-- 載入變動 :添加文件, 先使用git add fileName, 在使用 git commit -m 'note' 載入變動; 若是是刪除 修改文件, 直接使用 git commit -m 'note' 提交;
-- 重複 : 重複執行 修改文件 查看變動 載入變動 提交載入動做;
-- 上傳 : 使用 git push 命令將項目源碼提交帶GitHub中去;
單獨開發工做流程 : 若是是我的獨立開發, 僅追蹤本地文件變動, 就不須要提交到服務器上, 由於Git是分佈式的;
-- 修改文件 :
-- 提交變動 :
-- 重複 :
該示例不會上傳, 僅在本地進行操做;
從GitHub中檢出項目源碼 : 注意, 檢出的源碼是根目錄源碼, 咱們在總倉庫的根目錄檢出便可,不一樣再爲項目建立目錄;
提交緩存 :
與遠程倉庫同步 :
-- 若是其餘人沒有提交項目到GitHub上, 就會出現下面結果 :
-- 添加文件 : 先使用 git add 文件名 來添加文件到緩存, 以後使用 git commit -m '' 命令提交代碼到本地緩存;
-- 刪除改變文件 : 直接使用 git commit -m '', 提交刪除 或則 改變 到本地緩存;
提交項目源碼到服務器 :
查看GitHub中的源碼狀況 : gen 和 bin 目錄果真被刪除了;