2012-09-18 46 views
1

如果我有一個空的存儲庫git init,我想拉另一個存儲庫爲只用於拉動更新我如何做到這一點,如果我想要的文件在根目錄?Git克隆存儲庫到其他存儲庫的根?

所以,

讓說:

cd ~/repositories 
mkdir newrepo 
cd newrepo 
git init 
echo "testfile" > readme.md 
git add . 
git remote add <whatever> 
git push -u origin master 

#ok so that part works fine 
#now we have our repository at <my_other_repository> that looks like 
#a_root_file.ext 
#directory/another_file.ext 

#so now I want to run something like: 
git clone <my_other_repository> 

#and end up with: 
#readme.md 
#a_root_file.ext 
#directory/another_file.ext 

#if I then run 
echo "edited testfile" > readme.md 
git status 
#I want to be told that 
#untracked changes 
#newfile: a_root_file.ext 
#newfile: directory/another_file.ext 
#modified: readme.md 

#running 
git commit -a -m "Some files from another repository" 
git push 
#should push everything up to the <whatever> repository 

#then I want to be able to run 
git pull <my_other_repository_name> 
# and have it pull in any upstream changes 

這是不是可以設置嗎?

我想我可以解決它稍微有「包裝目錄」

cd ~/repositories 
mkdir newrepo 
cd newrepo 
git init 
git remote add <whatever> 
mkdir wrapper #this will now be the root of my project 
cd wrapper 
echo "testfile" > readme.md 
cd ../ 
git add . 
git push -u origin master 

那麼我應該能夠運行git clone <my_other_repository>沒有問題,但是,如果我只是想在一個倉庫合併只會工作,我想合併到幾個存儲庫中,我也想知道跟蹤這些更改會有什麼結果,因爲現在有兩個存儲庫正在觀察相同的文件,它們是否都會跟蹤它們?或者<whatever>會說「嘿,這些在這個存儲庫下,所以我們不會跟蹤它!」?

回答

2

我不太確定你在這裏要求的是什麼,但你應該知道你可以有多個remote。例如,您可以:

git remote add another <my_other_repository> 

然後,您可以使用git fetch another進行更新。然後,您可以使用以下合併更新:

git merge another/master 

將來自其他存儲庫的更新合併到本地存儲庫。

0

我想做到這一點是有兩個倉庫的最好辦法 - 但有其中一個是另一個的然後提交從相互轉化。

擁有兩個不同的存儲庫,其中一個存儲庫是另一個存儲庫的存儲庫,可確保單個提交在兩者之間輕鬆跟蹤。如果您有兩個不同的存儲庫,那麼您可能不得不將一個更改從另一個更改爲新的提交 - 而不是簡單地合併兩者之間的各個提交。

我設想的步驟將是:

  • 創建第一個資料庫,並將它推到origin(我假設你正在使用github上現在)。這是您的方案中的< >>存儲庫。
  • 叉存儲庫。這將成爲< * my_other_repository *>存儲庫。
  • 然後根據需要在任何需要的存儲庫中提交更改。
  • 然後按照需要「拉」它們之間的變化。

這種方法爲您提供了很大的靈活性,以確保所有提交容易和完整地存儲庫之間。(在上面的場景中,新庫中的提交實際上變成了不同的git提交 - 在某些情況下,這可能會丟失關於每個單獨提交的信息。)

此方法的另一個好處是,它很容易擴展到擁有3個,4,5或其他許多存儲庫,而不僅僅是2.您還可以指定一個人來處理與主要存儲庫的合併,以便他們可以充當「交通警察」並在有意義時拒絕一些更改。

祝你好運 -