2012-03-21 170 views
8

我剛剛發現,即使在git help svnrebase節說如何在一個操作中git svn fetch + rebase?

當前磁頭的SVN父取修訂和 變基當前的(未提交到SVN)反對它。

(我的重點),它並不意味着rebase包括一個git svn fetch。除了命名,有沒有辦法運行一個git svn命令做

我想這樣做的原因是,我只寫一個分支,所以我想rebase一個和我經常閱讀其他分支,所以我想fetch那些。

+0

我對'git svn'沒有任何經驗,但普通'git pull'可以配置爲使用'rebase'而不是'merge',這樣就可以執行所需的兩個步驟。如果我知道如何使用'git svn'來發布答案 - 只要查找一個等價的'git config branch.autosetuprebase always'。 – 2012-03-21 15:19:22

+0

確實如此。你試一試。首先它取得,然後它rebase。 – 2012-03-21 16:36:23

+2

不,它不。 'git svn rebase'不會*從遠程獲取新的分支,而'git svn fetch'則會。我只是試了一下。 – l0b0 2012-03-21 16:42:33

回答

8

我也有點驚訝地聽到,這其實是它的行爲方式。但是,要回答你的問題,你只需要定義一個別名:

git config --global alias.refetch '!git svn fetch && git svn rebase'

然後git refetch應該做你想要什麼。

+0

夠公平的;看起來像沒有標準的方法來做到這一點。 – l0b0 2012-03-22 14:48:25

+0

爲什麼在地球上你想獲取所有svn回購僅僅是爲了重新綁定一個? – 2012-03-25 00:47:21

+0

@ l0b0:沒有標準的方法來實現它,因爲它不是使用'git svn'的標準方式。 'git svn rebase'旨在讓你的當前分支上升到Subversion的提示,所以它忽略了任何其他Subversion分支的名字,讓你快速獲得有用的工作副本。 'git svn fetch'更新了Subversion版本庫中的所有內容,所以經常是一個非常慢的操作。我對你實際想要達到的目標感到困惑,這意味着你需要做到這一點。 – 2012-03-25 10:47:17

-3
git pull --rebase 

您也可以對其進行配置,使其在默認情況下重置。然後,你可以:

git pull 

UPDATE:

哎呀。需要更多的咖啡...

所有我能想到的是腳本,你需要什麼..

+0

從svn回購拉? – 2012-03-21 16:36:52

+0

@AdamDymitruk:這是* not *關於vanilla'git' - 關於'git svn'。 – l0b0 2012-03-21 17:02:21

19

我覺得你很困惑git rebasegit svn rebase。前者將提交到您當前的HEAD,並指定一些版本,而後者會將當前的HEAD移動到您所在的Subversion分支的頂端。

git svn rebase包括git svn fetch --parent,也就是說,它會得到什麼新的Subversion提交你目前所在的分支,但沒有任何顛覆任何其他分支(與普通git svn fetch對比,這從各個分支獲取提交)。

我懷疑你不想在做一個git svn rebase時做一個完整的git svn fetch,因爲這意味着在你獲得一個可用的工作副本之前它會長得多。如果你想要經常使用git svn fetch es,我建議設置一個cron作業,爲你做後臺提取。

+0

你是如此的正確 – 2012-03-25 00:45:13

+0

不錯的舊帖子,但我覺得它仍然相關。我絕對想在執行git svn rebase之前獲得所有分支更新。爲什麼?因爲如果我不這樣做,我在合併時遇到了很多問題。在合併之前忘記獲取要合併的每個分支並且執行此操作太容易了:'git svn rebase && git checkout master && git merge feature''然後才意識到您沒有從SVN更新正確的分支。如果你正在使用git svn來支持更好的分支,那麼在重新綁定之前始終應該「git svn fetch」所有東西。如果你沒有'git svn dcommit'跺腳的一切。 – 2016-10-18 16:27:09

+0

如果SVN倉庫中有太多的分支,並且需要永久存儲,那麼從'branches:'配置行刪除'*',並且只處理通常工作的分支。如果你正在做'master - > dev - > feature'組合,很容易只處理那些使用通配符和git配置文件的分支。這樣,當你'git svn fetch'你沒有得到不需要的分支。 'git svn rebase'已經完全破壞了我的git和svn回購版,因爲它沒有提前拿到分支機構。它對我來說並不好。我可以在這裏成爲少數。 – 2016-10-18 16:30:16

相關問題