2

ローカルマシンにgit-svnリポジトリがあります。

私のワークフローは次のとおりです。

git checkout master
<made bunch o' changes>
git add .
git checkout -b new_branch
git commit -a
git svn rebase
git checkout master

マスターをチェックアウトしたとき、リベースの結果が適用されているのを見て驚いた(私の変更を除いた)。

これは予想される動作ですか?マスターではなく、SVNから私のブランチに最新のものをプルしただろうと思っていたでしょう。それは、最初にマスターで「svn rebase」を実行し、次にマスターでブランチをリベースしたかのようでした。

ジャスティン

4

1 に答える 1

2

このGit-svnチュートリアルで述べたように:

ブランチに影響を与えない変更をこのブランチにコミットすることができmaster、ローカル ブランチとマスター ブランチを切り替えることができます。
さらに、これらの各ブランチは SVN リポジトリのトランクに接続されているため、これらのブランチからコミットされたすべての変更は、自動的に SVN トランクにマージされ、チェックアウトしたgit svn rebaseときに次に実行するときにローカル トランクに表示されます。trunk

そのため、new_branch HEAD は実際には svn の変更に基づいてリベースされていますが、svn の変更は最初にマスター ブランチに適用されてから、リベースされてmasterからnew_branch(new_branch新しいコミットは新しいコミットの上に行われるためmaster)。

より短い場合:

(new_branch)$ git checkout master
(master)    $ git svn rebase
(master)    $ git checkout new_branch
(new_branch)$ git rebase master
于 2012-10-25T07:33:14.583 に答える