2011-07-08 135 views
0

使用TortiseSVN,您可以通過右鍵單擊目錄並選擇更新或提交來更新/提交單個目錄。git-svn提交一個目錄?

我真的很喜歡git的分支功能,但是如果我使用git svn dcommit它會嘗試更新整個存儲庫,在我們的例子中它有幾個項目。

那麼我怎樣才能只提交特定的文件/目錄?

謝謝!

編輯

爲了澄清SVN回購的樣子:

+- Trunk 
| 
+-+- Project 1 
| | 
| +- Project 1 files... 
| 
+-+- Project 2 
| | 
| +- Project 2 files.. 
| 
+-+- My Project 
    | 
    +- My Project files... 

當我運行git svn dcommit它試圖在Project 1, 2,並且My Project更新一切。

項目1和項目2完全無關,並且正在開發中。我如何避免更新/提交給其他項目?我是否簡單地將這些目錄添加到.gitignore?如果我以後需要在其他項目上工作,怎麼辦?或者,是否有更好的方式使用git svn來處理這種類型的Subversion存儲庫?

+0

http://stackoverflow.com/questions/3334475/git-how-to-update-checkout-a-single-file-from-remote-origin-master –

回答

0

git add你想要的目錄,提交它,然後做dcommit(經過適當採摘櫻桃)

我看不出有多個項目的問題是如何的用武之地,你也將加入您的文件有關項目並添加它們。不要將SVN中的提交與此處的dcommit進行比較。將SVN中的提交與Git中的提交進行比較。就像你將如何「右鍵點擊該目錄」並提交它,git add(或使用TortoiseGit並執行你在TortoiseSVN中的操作)只有該目錄並提交。然後,執行dcommit。

+0

其實我習慣了git,他們使用SVN這裏......它可能是一個相當差的SVN工作流程。但我認爲這不適用,因爲我不控制遠程存儲庫。 –

+0

@Wayne Werner - 我的PS寫得不好,我把它刪除了。 – manojlds

-1

當您執行git svn dcommit時,您本地git倉庫中的每個提交都將作爲單獨提交到您的svn遠程提交。如果您想將其作爲單個提交,請參閱此問題:Is it possible to make git svn dcommit result in a single svn commit?並參考ProGit書中的Rewriting History部分和Git社區書中的Interactive Rebasing章。

+0

答案有什麼問題?你能留下評論嗎? – yasouser

+0

嗯,我沒有downvote,但我並沒有要求做類似'git merge --squash'後跟'git svn dcommit'。我的問題是問我如何提交(或更新)「單個文件」。顯然這是一個相當普遍的做法,在一個'trunk'文件夾中存儲幾個項目,所以爲了避免檢查整個存儲庫(類似於試圖克隆github上的所有項目),他們只是檢查/在特定的目錄/文件。我試圖找出git svn是否可能,以及如何做到這一點。 –

+0

@ Wayne-Werner:你想爲每個項目維護一個回購嗎?如果是,那麼根據它們所屬的項目,某些文件和/或文件夾是否會有多個狀態/歷史記錄?另一種方法是使用'.gitignore'並添加不屬於每個項目的文件/文件夾。然後你需要修改它作爲項目從svn遠程添加/刪除。 – yasouser