git的優點:html
1 能夠建立分支;git
2 版本控制是基於每一次提交的,而不須要考慮每次提交了多少個文件。github
下載:web
下載網址爲:http://git-scm.com/download,根據您的操做系統選擇相應的安裝寶,下載完後直接按照默認安裝便可(本文講述所有基於Windows操做系統)。緩存
概述:bash
git源代碼管理器的倉庫位置能夠基於本地服務器和遠程服務器兩種方式:服務器
本地服務器主要用於管理本身的代碼,將本機做爲源代碼管理服務器;less
遠程服務器則用於將源代碼公開,並由多我的來對代碼進行編輯,主要用於團隊開發中。ssh
git源代碼的提交流程,能夠用下面這張圖片來表示:ide
你的本地倉庫由 git 維護的三棵「樹」組成:
1) 工做目錄(WorkDir)
,它持有實際文件;
2) 緩存區(Index)
,它像個緩存區域,臨時保存你的改動;
3) HEAD
,指向你最近一次提交後的結果。
通過上面三步之後,你的改動如今已經在本地倉庫的 HEAD 中了,可是源代碼並未保存(推送)到遠程倉庫,能夠執行以下命令以將這些改動提交到遠端倉庫:git push origin master,(master表示你要提交的分支,
能夠把 master 換成你想要推送的任何分支)
使用方法:
1 初始化,建立項目;
1)以本機或者局域網電腦做爲源代碼管理服務器,
a) 須要在源代碼管理服務器上面安裝git
b) 而後建立一個目錄(如git)做爲源代碼存儲根目錄,如"c:\\git"
c)進入git目錄,點擊鼠標右鍵菜單中的「Git Init Here"按鈕,便可完成初始化操做(或者利用」Git Bash命令行程序經過執行「git init「命令完成初始化);
d)而後在該根目錄下以項目爲單位分別建立項目目錄,或者建立一些文件,如readme(目錄必須包含文件纔會被提交,不然在提交的時候空目錄會被忽略);
e)對於上一部建立的項目目錄,須要在倉庫根目錄點擊右鍵菜單中的」Git Commit Tool「按鈕,而後點擊彈出界面中的」提交「按鈕,或者在倉庫根目錄點擊右鍵菜單中的」Git Bash「,彈出命令行窗口,依次輸入:git add .回車git -commit -m 'some message'回車,才能將初始化目錄和文件提交到代碼倉庫中
2)若是oschina服務器做爲源代碼管理服務器,則省掉了初始化步驟,須要先在oschina的註冊賬號,而後經過oschina提供的功能在線建立項目。訪問地址舉例:
a)http方式:http://git.oschina.net/UserName/Test.git
b)ssh方式:git@git.oschina.net:UserName/Test.git
2 將git倉庫中文件克隆到本地
1)本地git倉庫:進入要下載代碼的目錄入:c:\\git-workspace-local,點擊右鍵菜單中的」Git Bash"按鈕,彈出命令行窗口,輸入命令:git clone '本地git倉庫根目錄', 本文爲"c:\\git'
2)局域網或者oschina倉庫:進入要下載代碼的目錄入:c:\\git-workspace-oschina,點擊右鍵菜單中的」Git Bash"按鈕,彈出命令行窗口,輸入命令:git clone '遠程git倉庫地址', 如:http://git.oschina.net/UserName/Test.git或者git@git.oschina.net:UserName/Test.git(本人在採用git協議的進行clone的時候報錯,不知是何故,還請閱者告之,謝謝!)
3 建立分支,建立分支操做智能在源代碼管理器中建立,而非本地workspace
1)以本機或者局域網電腦做爲源代碼管理服務器:在源代碼管理器服務器倉庫根目錄,點擊右鍵菜單中的」Git History「,而後在彈出的」gitk:git「窗體左上角區域點擊鼠標右鍵建立分支
2)遠程服務器(oschina),直接經過網站」建立分支「功能建立;
4 分支切換: git checkout branchname
5 文件提交
1)在資源管理器中,建立/修改/刪除/文件,或者在git bash工具中執行touch filename命令建立文件
2)經過執行:git add filename(用「.」替換文件名錶示提交當前目錄的全部文件),將修改提交到workspace;
3)經過執行:git commit -m 'some message of this commit', 將修改提交到緩衝區;
4)經過執行:git push origin branchname(本地存儲),或者經過執行 git push 回車 用戶名 回車 密碼 回車(遠程服務器)將修改提交到源代碼管理倉庫中去
注:在提交到本地倉庫的時候,在執行上面第四步的時候,源代碼管理倉庫最好切換到與當前提交的的分支不一樣的分支(如如今有兩個分支:master和MyBranch,當前工做區MyBranch進行checkout, 在執行git push的時候,源代碼管理倉庫最好切換到master 分支,不然在執行git push的時候會抱錯)
6 文件夾提交:不直接支持空文件夾的提交,須要在文件中建立文件,而後提交文件,這樣會將文件所在的文件夾一塊兒提交。
常見錯誤
1 在使用Git Push代碼到數據倉庫時,提示以下錯誤:
[remote rejected] master -> master (branch is currently checked out)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To git@192.168.1.X:/var/git.server/.../web
! [remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to 'git@192.168.1.X:/var/git.server/.../web'
解決辦法:
這是因爲git默認拒絕了push到當前分支操做,須要進行設置,修改.git/config文件後面添加以下代碼:
[receive]
denyCurrentBranch = ignore
沒法查看push後的git中文件的緣由與解決方法:在倉庫根目錄git bash 命令窗口中執行命令 git reset --hard 才能看到push後的內容.
在初始化遠程倉庫時最好使用(不知道爲何要這樣作,使用該命令執行建立倉庫後,建立的三一個空倉庫,並且沒法看到項目文件)
git --bare init
而不要使用:git init
git init 和git --bare init 的具體區別:http://blog.haohtml.com/archives/12265
推薦git學習的兩篇文章: