2013-04-29 113 views
1

我主要是在svn上,現在是git新手。我在macbook上使用「git svn」來與我的svn存儲庫一起工作,但偶爾我必須遠程工作,當我必須訪問辦公室網絡的唯一訪問是在ssh-ing到中間linux服務器之後,然後到我的mac服務器這個辦公網絡也有一個git-svn倉庫的副本。端口轉發被禁用,所以ssh隧道從我的macbook遠程辦公室svn不是一個選項。Git修訂版差異

現在,當我是遠程並想要獲取最新的代碼時,我更新了遠程存儲庫,將我在macbook上的版本和最新版本之間的差異轉儲到文件,然後將其轉存到我的macbook通過中間服務器,然後修補我的本地git存儲庫中的文件。我已經使用一些bash/expect腳本在某種程度上自動化了這個過程,但是我沒有修改註釋和所有使用git的靈活性。

有沒有一種很好的方式將包括所有修訂信息在內的diffs轉儲到文件中,然後將其轉換並應用到我的本地git存儲庫。

回答

1

你想git bundle迷死。

比方說,abcd1234是您在筆記本電腦上存儲庫中的最新提交。在具有混帳回購協議的機器:

git bundle create myrepo.bundle abcd1234..master 

現在它複製到你的筆記本電腦,以及:

git pull /path/to/myrepo.bundle master 

當然,你可能還需要說服IT允許你設置端口轉發,或者只是通過在中間機器上運行netcat來自己做。

+0

謝謝布萊恩,工作就像一個魅力,正是我想要的。 :) – user2109141 2013-04-30 01:13:22

0

git的神奇之處在於每個存儲庫都是平等的。這意味着你可以採用這樣的工作流程:

1)在中間服務器上做一個git克隆。該服務器現在有一個完整的克隆repo

2)從中間服務器到本地機器執行第二個git克隆。現在,您可以通過正常的拉,自由地推到中間服務器

3)定期登錄到中間服務器與原有服務器同步上漲推/拉操作

這個工作流程能讓混帳做自己最擅長的,即爲您管理增量。

現在,您可以在本地克隆的.git/config中設置一個單獨的「遠程」條目來引用此中介服務器,以便您可以根據您的位置自由選擇要推/拉的位置是。

當你在家裏你鍵入git pull myintermediate master,當你在工作,你鍵入git pull origin master

歡迎是混帳