16

svn up -r r1130短い質問:番号付きコミット (svn 番号付き) のみを更新するのに相当する git-svn は何ですか?

私は git-svn を使用しているので、git を使用して、チームの svn リポジトリの (多くの) ローカル ブランチを管理できます。特定のハードウェア設定で動作するようにハッキングしたソフトウェアのバージョンがあります。私が最後に作業して以来、svn リポジトリは安定した、この作業の良い点を過ぎて前進しました。ローカル ブランチを、安定したコミットを表す番号付きのリビジョンに更新したいと考えています。svn でこれを行うこともできますsvn up -r r1130が、私は git の方が好みです。

過去にこれをどのように行ったかを忘れ続け、SO とヘルプページを検索して最善の方法を見つけようとしています。おそらく、私が見逃している別の言葉のQ&Aがありますか?

きれいなツリーで古いリビジョンをチェックアウトするのは簡単ですが、ツリーの一番上にコミットを運ぶとき、「頭を巻き戻してその上で作業を再生する...」という部分は、私が通常好きな意味です。変更が追加される前に、ツリー内のポイントに移動します!

今のところ、私はgit svn rebase望んでいないコミットを取り消すために対話的にリベースしますが、これが最善の方法であるとは信じがたいです。

4

3 に答える 3

19

とにかくrebasegit-svn が変更前にリベースする必要があるので、dcommit. 代わりにこれを試してください:

git checkout `git svn find-rev r1241`  # Go to the svn version of interest
git checkout -b master_r1241           # Create a new brach matching it
git checkout hwTesting                 # Merge previously created changes
git rebase master_r1241                # rebase on top of not quite up-to-date master branch

これも 1 つのステップで行うことができます: (reflog を使用するかrebase --abort、ひどくうまくいかない場合は常に元に戻すことができます)。

git checkout hwTesting                 # Checkout feature branch
git rebase `git svn find-rev r1241`    # rebase on top of not quite up-to-date master branch
于 2012-07-06T15:43:56.783 に答える
1

ワンステップでそれを行う方法はないようです。ただし、特定の svn リビジョン番号に対応する git コミット ID を簡単に見つけることができます。これを試して:

git svn find-rev rN

ここで、N は必要なリビジョン番号です。その後、git checkout を使用して、履歴の特定のポイントをチェックアウトします。

于 2012-04-19T12:30:12.487 に答える
0

受け入れられた答えがそれを述べているので、私はこれを参照のために残しておきます。ただし、ワンライナーリベースオプションを使用してください...


これが私が今していることです。今回はr1130(質問で言及)からr1241にアップグレードしています。

git checkout `git svn find-rev r1241`  # Go to the svn version of interest
git checkout -b hwTesting_r1241        # Create a new brach matching it
git merge hwTesting_r1130              # Merge previously created changes

これにより、ほとんどの場合、必要なものが得られますが、更新するたびに別のブランチが生成されます。マスターのコミットのみを、によって返されるコミットまでマージするようにgitに指示する方法があるはずgit svn find-rev r1241です。

于 2012-05-09T04:58:26.470 に答える