2011-02-09 108 views
73

假設我有臺式電腦和筆記本電腦, ,有時我在桌面上工作,有時我在筆記本電腦上工作。計算機之間的git存儲庫同步時,移動?

來回移動git倉庫的最簡單方法是什麼?

我想git倉庫是相同的, ,這樣我就可以繼續我離開另一臺計算機的位置。

我想確保我在兩臺計算機上都有相同的分支和標籤。

感謝 約翰

注:我知道如何使用Subversion做到這一點,但我對如何做到這一點用git的工作感到好奇。如果更容易,我可以使用第三臺PC作爲經典服務器,以便兩臺PC可以同步。

注意:兩臺計算機都在運行Linux。


更新

所以讓我們嘗試XANI:的想法與服務器, 和KingCrunch推命令語法上裸露的混帳回購協議。 在這個例子中有兩個客戶端和一個服務器。

所以我們先創建服務器部分。

ssh [email protected] 
mkdir -p ~/git_test/workspace 
cd ~/git_test/workspace 
git --bare init 

因此,從其他計算機我試圖讓回購與克隆副本之一,那麼:

git clone [email protected]:~/git_test/workspace/ 
Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/ 
warning: You appear to have cloned an empty repository. 

然後進入該回購和添加文件:

cd workspace/ 
echo "test1" > testfile1.txt 
git add testfile1.txt 
git commit testfile1.txt -m "Added file testfile1.txt" 
git push origin master 

現在服務器用testfile1.txt更新。

無論如何,讓我們看看我們是否可以從其他計算機上獲取此文件。

mkdir -p ~/git_test/repo2 
cd ~/git_test/repo2 
git clone [email protected]:~/git_test/workspace/ 
cd workspace/ 
git pull 

現在我們可以看到測試文件。

在這一點上,我們可以編輯一些更多的內容並再次更新服務器。

echo "test2" >> testfile1.txt 
git add testfile1.txt 
git commit -m "Test2" 
git push origin master 

然後我們回到第一個客戶端,做一個git pull來查看更新的文件。 現在我可以在兩臺電腦之間來回移動,如果我喜歡,可以添加三分之一。

回答

22

我認爲,有多種方法。我只會描述一下,我如何處理這個問題

我有一個上網本作爲24/7服務器,它擁有多個git-repository。從/到那裏,我通過SSH推送和更改。從外部訪問我使用dyndns.org。它工作正常,特別是因爲我有兩個以上的系統,需要訪問一些存儲庫。

更新:一個小例子。 可以說我的上網本被稱爲「上網本」。我在那裏創建一個存儲庫

$ ssh [email protected] 
$ cd ~/git 
$ mkdir newThing 
$ cd newThing 
$ git init --bare 

在我的桌面上,我將創建它的克隆。也許我會添加一些文件還

$ git clone [email protected]:/home/username/git/newThing 
$ git add . 
$ git commit -m "Initial" 
$ git push origin master 

在我的便攜式我會(第一)做相同的,但對於遠程訪問(從我的局域網之外),我還會添加外部地址。

$ git clone [email protected]:/home/username/git/newThing 
$ git remote add externalName [email protected]:/home/username/git/newThing 
$ git pull externalName master 

它只是git(/ git工作流程)的工作方式。您可以根據需要添加任意數量的遠程存儲庫。如果兩個或兩個以上涉及相同的「物理」存儲庫,則無關緊要。你不需要一個自己的本地「服務器」,你可以使用任何公共服務器,你有ssh訪問。當然,如果你不需要從外部訪問,你根本不需要公共服務器。裸存儲庫也可以位於桌面系統上,然後您可以在本地文件系統中創建工作副本存儲庫。

$ mkdir myRepo; cd myRepo 
$ git init --bare 
$ cd /path/to/myProject 
$ git remote add origin /path/to/myRepo 
$ git add .; git commit -m "Initial"; git push origin master 

這是這樣的,我該怎麼處理這個問題,我對我來說工作得很好(如果不健全;))

東西可以讀:http://progit.org/ 真的好book.-

+0

當你在回購中使用不同的方式時,這會如何?你想用一個例子來澄清你的答案嗎? – Johan 2011-02-13 17:33:44

+0

謝謝,這些例子澄清了很多:) – Johan 2011-02-14 07:24:07

0

那麼,你可以推(拉)(通過Git)到你可能設置的服務器。或者你可以在GitHub上存儲你的回購站,並將其用作同步橋。

0

您可以在任何計算機上創建存儲庫,可能是桌面計算機上的存儲庫,並從筆記本電腦和自己的計算機上將其推入/拉出。

1

如何簡單地使用rsync

+0

應該有更多的「git-correct」方法來做到這一點? – Johan 2011-02-13 17:31:25

6

我會將回購單從一個箱子克隆到另一個箱子,然後設置兩個回購箱,這樣我就可以從另一個箱子中取出git fetch

將遠程從origin重命名爲另一個框的名稱使遠程分支更易於閱讀。

注意,只要使用git fetch(而不是git push),這與非裸庫工作得很好:

[[email protected]o repo]$ git fetch -v bar 

[[email protected] repo]$ git fetch -v foo 
4

最簡單的方法:用--bare創建中央回購(所以沒有隻簽出的文件。混帳東西),或github上

「分佈式」 看起來就像是:

設置:

  1. 在筆記本電腦:git remote add desktop ssh://[email protected]/home/user/repo/path
  2. 在桌面上:git remote add laptop ssh://[email protected]/home/user/repo/path

同步:

git pull laptop/desktop(push將不能在非裸露回購推到遠程回購時或工作非常好,因爲混帳不會修改簽出的文件)

,就隨身碟回購;)

1

你不能只創建一個遠程GitHub,BitBucket或GitLab上的存儲庫? (後兩家公司提供無限制的免費私人存儲庫)。當您完成工作時,只需使用git push將您的更改推送到遠程回購。當你回家時,只需做git pull將你的改變從工作中拉到你的家用機器上。同樣,當你在家完成時,做git push,然後當你回到工作時,做git pull

相關問題