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


git的優勢:

1 可以創建分支;

2 版本控制是基於每一次提交的,而不需要考慮每次提交了多少個文件。

 

下載:

下載網址為:http://git-scm.com/download,根據您的操作系統選擇相應的安裝寶,下載完后直接按照默認安裝即可(本文講述全部基於Windows操作系統)。

 

概述:

git源代碼管理器的倉庫位置可以基於本地服務器遠程服務器兩種方式:

本地服務器主要用於管理自己的代碼,將本機作為源代碼管理服務器;

遠程服務器則用於將源代碼公開,並由多個人來對代碼進行編輯,主要用於團隊開發中。

git源代碼的提交流程,可以用下面這張圖片來表示:

你的本地倉庫由 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[強烈推薦]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM