目前windows版本的git有幾種實現,但咱們選擇msysgit發行版,這是目前作得兼容性最好的。git
下載地址: http://code.google.com/p/msysgit/downloads/listgithub
安裝沒什麼注意的,若是對於安裝選項不熟悉,一直next就行。算法
什麼是Git和GitHubwindows
Git —The stupid content tracker, 傻瓜內容跟蹤器,是一個由Linux內核開發者Linus爲了更好地管理Linux內核開發而創立的分佈式版本控制軟件。服務器
GitHub — 學生作版本控制最討厭的就是找服務器,配置太麻煩了。GitHub這個網站爲每一個用戶提供服務器託管其Git代碼庫,免費空間爲300M。註冊GitHub後你就會有0.3G的免費空間,不過只能建立公開項目。ssh
爲何不選CVS或SVN分佈式
Git提交/克隆/pull/push的速度更快測試
Git的絕大多數操做均可以在本地完成,不須要頻繁鏈接服務器網站
GitHub選擇的默認通訊方式是SSH,因此要先在Git裏面生成SHH Key,打開Git Bash在其中輸入以下命令:google
ssh-keygen -t rsa -C "*****.com"
其中引號裏面爲註冊github時的郵箱,輸入命令後連續按屢次回車便可,在當前文件夾下會生成.ssh文件在裏邊 找到 id_rsa.pub文件,用記事本打開,複製其中的所有內容。登錄你的GitHub帳戶,依次點擊Account Settings > SSH Public Keys > Add another public key,把id_rsa.pub中的內容拷貝進去 。至此,基本的設置已經完成了。
測試一下, 輸入 ssh -T git@github.com
選擇yes
此時表示成功
配置Git(未來查看歷史記錄的時候會用到,注意必定要配置)
git config 能夠列出或修改配置
git config -l 打印能夠配置的相關屬性
告訴git當前用戶名的姓名和郵件地址
git config —global user.name 「張三」 配置提交者的用戶名字(全局配置)
git config —global user.email 「zhangsan@163.com」 配置提交者的用戶郵箱
git —version 打印git版本
——————————————————————————————
① 桌面建立倉庫叫MyGit 利用終端建立: mkdir 目錄名
命令:cd desktop
命令:mkdir MyGit
② 從終端進入該文件
命令:cd MyGit
③ 命令:git init
做用:初始化git,裏面的有個隱藏文件叫.git,裏面隱藏有一些文件
現象:Initialized empty Git repository in /Users/zhangzenan/Desktop/MyGit/.git/
命令:cd .git
命令:ls -a 能夠查看.git中的全部文件
命令:cd ..
回到MyGit目錄中
注:.git目錄就是Git版本庫(又叫倉庫,repository),被稱做爲工做區.
若是用Git來寫紅樓夢,應該怎麼寫?
① 建立一個文本,內容標題:紅樓夢,將文件命名爲HLM並保存到MyGit中
命令:git status
做用:打印倉庫狀態
⑤ 打印git狀態
命令:git status
終端打印內容:
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
HLM.txt(該名稱爲紅色)
nothing added to commit but untracked files present (use "git add" to track)
翻譯內容:(英語通常,大體意思以下)
位於分支 master 上
初始化提交:
沒有被追蹤的文件:
(使用"git add <file>.."命令將要被提交的東西包含進去)
HLM.txt 要包含的文件名爲HLM.txt
沒有東西被添加並提交可是目前有未被追蹤的文件(使用"git add"命令來追蹤)
命令:git add HLM.txt
做用:添加文件到git中(要求Git跟蹤文件,將文件置於Git管理之下)
再次git status
終端打印內容(下列顯示爲成功內容)
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: HLM.txt (名稱變爲綠色)
⑥ 能夠開始寫紅樓夢第一回啦!
例如:第一回 甄士隱夢幻識通靈 賈雨村風塵懷閨秀(樣本)
git commit -m 「第一回寫完了」 提交文件到Git庫中(每次提交都要添加註釋,例如對文件修改了什麼東西.-m後寫的是本次提交的說明)
⑦ 寫紅樓夢第二回,而後git status,會提示使用兩個命令 使用git add . (添加的一個快捷方式) 使用git commit -m *真正提交
⑧ git log 能夠查看以前所作的全部事情 其中有個commit後面跟一堆東西,這是經過其餘算法算出的一個惟一標識,未來」回滾」的時候會用到這個標識符
按q退出
⑨ git log --pretty=oneline 能夠簡化log打印的內容
—————————————————————————————————————
① 發現標題一寫錯,從新修改,而後git status打印內容. 經過git diff 查看兩次修改的內容差異
② git commit -a -m 修改了標題一
—————————————————————————————————————
① 腦殼不清醒寫第三回,亂寫一通,次日經過 git diff來查看區別
② 我想回滾到上一個階段,把工做區中還沒有提交的內容廢除掉
git checkout HLM.txt 回滾沒有add的修改
③ 強制回滾到某一個版本的代碼(add/commit過的文件都可回滾) git reset --hard **
標識符能夠只寫前幾位,或者直接粘過來
④ 想從新恢復到以前最新的那個版本
git reflog 查看以前全部的修改操做,根據前面的標識符進行回滾
—————————————————————————————————————
① 曹雪芹臨時有事要出差,因而邀請好友幫她寫東西,可是不能直接在原稿上修改,所以要建立分支
git branch 查看分支 ==> 查看稿件做者,默認爲master
git branch zhangSan 建立分支
git checkout zhangSan 切換到zhangSan對應的分支
接下來由zhangSan來搞定
② 寫第三回.內容:第三回 賈雨村夤緣復舊職 林黛玉拋父進京都.寫完後提交git commit -a -m '第三回完成'
git status 打印當前狀態
③ 曹雪芹出差回來,發現他寫的挺好,準備合併
切換到本身的分支 git checkout master
合併分支 git merge zhangSan
注:SVN建立分支很費勁,須要將全部數據所有複製,可是Git只是一瞬間的事情
④ 做者本身寫第四回,內容:第四回 薄命女偏逢薄命郎 葫蘆僧亂判葫蘆案.寫完之後提交一次,而後接到命令出差,讓好友zhangSan繼續幫她寫做
做者走以前提交:git commit -a -m "第四回完事"
zhangSan應該切換到本身的分支繼續寫做,寫第五回並提交.內容:第五回:遊幻境指迷十二釵 窗前明月光,意識地上霜
⑤ 做者回來之後發現他寫的不怎麼滴,準備本身從新寫第五回
先切換本身的分支,接着從第四回日後寫第五回,內容:第五回 飲仙醪曲演紅樓夢,而後提交
提交完之後,突然他發現他好友寫的某些語句特別好,合併分支
現象(出錯):由於兩我的都寫了第五回,合併的時候會發生衝突
解決辦法:打開你的文件,會發現全部文件都在了,須要手動把不滿意的刪了,滿意的留下,改好之後再次提交
注:產生衝突的兩種狀況
① 分支合併會產生衝突
② 多人同時修改一個文件會產生衝突
若是A修改但沒提交,B來了,修改並提交.若是這個時候A再提交,會發生衝突,由於當前文件狀態已經不是A那時候的狀態了.這個時候A要手動修改衝突的地方並再次提交
⑥ 做者認爲第一階段結束,準備發佈一個版本0.1
git tag 打印版本
git tag v0.1 添加一個0.1版本
本地管理結束
—————————————————————————————————————
若是頻繁出差會影響寫做效率,若是在外地也能寫做就行了
遠程管理:GitHub(提供免費的倉庫管理,並且能夠查看別人的倉庫,例如FMDB)
GitHub(國外的):對於不公開的項目是收費的,公開項目是免費的
commits:提交次數
branches:分支次數
releases:發佈版本數
contributors:貢獻者個數
技巧:找第三方庫都在這裏找,並且Star超過3000的最好都看看,常見類庫有1000個,知道的越多寫代碼越順暢.