2013-07-23 85 views
4

我目前在回購協議中有一個文件,並且已經創建了一個新的回購協議,但是無法在與目錄一起推送目錄的全部內容的情況下無法在新回購協議上獲得該文件。我想推動目錄中的單個文件而不是其他所有內容。我一直在做將目錄中的單個文件推送到github新存儲庫?

git add mygame.rb 
git commit -m 'game scores' 
git add remote new_origin github.com/etc... 
git push new_origin master 

此步驟完成後所有從目錄中的文件被上傳到即使我從來沒有「添加」他們用git的add命令我的新的回購協議。所有這些文件已經在我的舊回購,只是基本上想要移動1個文件到新的回購。 git的狀態剛剛返回「#分支主 沒有提交(工作目錄乾淨)」當你與git remote add...添加新的遠程有其他文件和歷史,將讓

+0

'git的LS-files'如果列出所有的文件,可能你有無意中添加了所有文件以索引。如果是這樣的話,請使用'git reset '將這些文件解開並從索引中刪除。然後您可以單獨推送一個文件。 –

+0

使用git reset命令後,然後使用git ls-files它仍然列出目錄中的所有文件。 – Ordep81

+0

所以你有兩個倉庫,一個倉庫有幾個舊文件,你想創建一個只有'mygame.rb'的新倉庫? – henrikhodne

回答

2

你的本地回購一定不是新的,所以推git push...。這實際上是git的一個非常酷的功能。

如果你想開始與它自己的歷史上的一個新的遠程倉庫和,你只能mygame.rb爲文件輕鬆:

mkdir <full_directory_path> 
cp mygame.rb <full_directory_path> 
cd <full_directory_path> 
git init 
git add mygame.rb 
git commit -m 'game scores' 
git remote add origin github.com/etc... 
git push origin master:master 
+0

所以這工作,但完全不明白爲什麼。那麼在同一個目錄中的文件不能有不同的回購協議? – Ordep81

+0

一個目錄中的文件可以位於多個遠程倉庫中。這就是爲什麼我說這是git的一個很酷的功能。新的遠程倉庫將獲取所有歷史記錄的所有原始文件。使用git獲得鏡像真的很容易。在我工作的地方,我們有一個遠程存儲庫,我們認爲它是一個沒有官方發佈的沙箱,我們可以在推送更正式的遠程存儲庫之前重寫歷史記錄,用戶擁有一定的權限並且可以簽署策展人。我們的本地目錄代表兩個存儲庫。 – cforbish

相關問題