2012-06-24 88 views
0

我現在有一個超級慢的連接,我需要將一個新的分支插入我公司的git服務器。使用SVN,如果我願意,我可以一次一個地將文件提交/推送到遠程SVN服務器。在過去,當我連接速度很慢時,我可以一次上傳一個文件夾,並且效果很好。我確定可以在git中使用類似的東西。是否有可能在部分中推送git存儲庫?

+0

你試過了嗎? Git壓縮所有內容(等等),因此很有可能它會在慢速連接上工作。 – KingCrunch

+0

除了下面的答案,根據您使用的協議,'git push'在壓縮傳輸和制定最小數量的數據以確保同步方面非常出色。 – simont

回答

1

當你做一個git推(1),手冊上說:

<src>往往是你想推分支的名字,但它可以是任意「SHA-1表達「,例如master〜4或HEAD(參見gitrevisions(7))。

因此,您應該能夠通過按時間順序組織它們,然後在詳細參考中指定每個提交,將單個提交推送到遠程。例如:

# Get all commits not in remotes/origin/master and 
# sort in chronological order. 
commits_list=$(
    git log --oneline --reverse refs/remotes/origin/master..HEAD | 
    awk '{print $1}' 
) 

# Push each commit one-by-one to origin/master. 
for commit in $commits_list; do 
    git push origin $commit:refs/heads/master 
done 

我在本地測試了它,它似乎按預期工作。試一試;如果沒有別的,它會讓你指向正確的方向。

0

如果你的分支由許多小的提交組成,並加上一個大的改變,你可以通過分階段推送提交來實現。也許創建一個新的分支,從你的代碼與公司服務器上的代碼不同的地方開始,然後分階段地從你的分支中提取提交範圍,並在每個範圍被提取後推送。

但推送單獨的文件夾/文件 - 我敢肯定,這是不可能的:它違背git的要求,提交是一個原子實體。

相關問題