git@oschina.net源代碼管理使用日記

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 文件夾提交:不直接支持空文件夾的提交,須要在文件中建立文件,而後提交文件,這樣會將文件所在的文件夾一塊兒提交。

 

 常見錯誤

在使用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學習的兩篇文章:

1)git - 簡易指南

2)圖解Git[強烈推薦]

相關文章
相關標籤/搜索