2011-05-03 68 views
15

我使用的是Git 1.7.4.1。我想將我在一個文件夾上做的提交推送到遠程倉庫。如何只將更改從一個文件夾推送到遠程回購?所有的文檔,我只找到列出如何推動整個回購...只推送一個文件夾到遠程回購

davea-mbp2:systems davea$ git push origin trunk 
Password: 
To http://[email protected]/systems.git 
! [rejected]  trunk -> trunk (non-fast-forward) 
error: failed to push some refs to 'http://[email protected]/systems.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 

我被警告不要套用到我要推的文件夾中的衝突。任何幫助表示讚賞, - 戴夫

回答

1

Git不像顛覆。簡短的回答是,你不能。

你應該考慮衍合對遠程

git rebase -i origin/trunk 

變化(只有一個相關的),應該讓你正在進行。一定要閱讀一路上的評論和說明。當然也有man git-rebase

最後,你對結果滿意時,你可以從那裏

git checkout -b rebased HEAD 

創建一個新的分支,或者你可以選擇讓它你的新主人。我會把它留給你如何在本地管理你的分支機構(因爲你沒有告訴我們他們)。

推woud然後很容易與工作

git push origin trunk 
4

Git通過推動整個提交工作。可以交互重新綁定來隔離您對感興趣的目錄所做的更改,或爲其創建子模塊。

1

Git的單位提交。如果要將更改推送到一個目錄而不是其他目錄,則這些更改需要單獨提交。

如果您尚未在其他地方推送這些更改,則可以嘗試使用交互式底圖來使您的提交看起來像您所需要的。有關更多詳細信息,請參閱git-rebase man pagethis chapter in the Git community book

0

您報告的錯誤不報告衝突 - 您只在合併時在本地發生衝突(例如,作爲git pull的一部分)。那個錯誤只是拒絕用你的提交來更新遠程分支,因爲你的提交不包括你試圖推送的分支的歷史記錄。通常,這意味着別人已經迫使一些分歧發展到分支,你需要拉或變基 - 還有更多的在這裏:How git works when two peers push changes to same remote simultaneously

然而,直接回答你的問題,均屬始終代表樹的完整狀態,所以你只需要創建一個只在感興趣的子目錄中有變化的提交。只需更改到該子目錄中,然後使用git add來轉移您在那裏更改的文件。然後,當您提交時,請確保您不要使用-a參數,否則您的存儲庫中的所有更改都將引入該提交。