2011-04-18 86 views
0

這與Cannot git clone a folder on a server and then edit and git push?在www.hostingcompany.com/~/mysite.com上維護源代碼的好Git策略是什麼?

所以我們可以說,託管公司是www.hostingcompany.com

,當我ssh到它,我在~和我會看到

~/mysite.com 
~/any_other_folders 

什麼是一個很好的混帳工作流程版本控制在~/mysite.com所有源代碼,並能夠git clone到我的本地PC?並且我可以在本地進行修改,然後發出一行並推送到回購站並使~/mysite.com上的所有代碼保持最新?

正在用git回購,然後sftp從本地PC到~/mysite.com好方法?我更喜歡不這樣做,因爲很難看到是否所有內容都是同步的。

+0

可能重複的[無法git克隆服務器上的文件夾,然後編輯和git推?](http://stackoverflow.com/questions/5703324/cannot-git-clone-a-folder-on-a- server-and-then-edit-and-git-push) – 2011-04-18 13:51:35

回答

2

related question,你已經得到它複製了答案直:

你有兩個選擇:

  1. 做一個純倉庫(mysite.com.git)和非純倉庫(mysite.com)。在裸存儲庫,添加post-updategit --git-dir=.../mysite.com pull

    注意,你可能希望通過從裸一個與-s標誌克隆或建立.git/objects/info/alternates事後避免複製所有數據,以創建非純倉庫。

  2. 製作只是一個存儲庫和:

    1. 拆離頭部:git checkout [email protected]{0}

    2. 添加post-updategit merge master

    這裏的原因是混帳拒絕修改檢出分支,但如果您取消選中分支,您將能夠推送。你將能夠從鉤子更新工作目錄(鉤子是放置在存儲庫中的hooks目錄中的腳本)。你可以創建一個單獨的分支並檢查它,或者你可以使用「detached HEAD」狀態(如上面建議的— git記住哪個分支通過指向分支的特殊引用「HEAD」檢出,但是如果你檢查一些東西,這不是一個分支,它是直接指向一個修訂,這就是所謂的「分離的分支」,因爲沒有分支檢出,允許你推動任何一個)。

  3. 製作只有一個存儲庫和:

    1. 關閉一鍵檢出分支檢查。

    2. post-update掛鉤添加到git reset --hard以在推送時重新檢出分支。

    此選項僅對只讀訪問有效,因爲掛鉤會在您每次推送時放棄任何本地更改。

如果它只是檢查出並使其進入只讀的,第二個選項會更有效,但如果你的工作目錄下運行一些其他的命令,第一是安全的(你可以擦拭和重新 - 創建工作副本而不用擔心主要的回購)。另見this question

編輯:增加了第三個選項。

+0

是'mysite.com.git'目錄還是文件?我們用'mkdir mysite.com.git','cd mysite.com.git','git init --bare','cd ../ mysite.com',然後'git init','git創建它添加.','git commit -m「ok」','git push ../mysite.com.git master'? – 2011-04-18 13:55:47

+0

第一選擇是最好的,在我看來 – manojlds 2011-04-18 16:50:18

+0

@動靜能量:'mysite.com.git'是一個裸倉庫,所以一個目錄。是的,你可以像你說的那樣創建它。使用'.git'後綴命名裸倉庫是一個常見的約定。 – 2011-04-19 06:44:40

相關問題