質問

現在、 git svn dcommit を実行すると、gitはSVNと最後に同期してから行ったローカルコミットごとにSVNで個別のコミットを作成します。 dcommit が代わりに最近のローカルコミットをすべてSVNの1つのコミットに結合する方法はありますか?

役に立ちましたか?

解決

git rebase remotes/trunk --interactive 

svnリポジトリの汚染を避けるために、コミットを選択するか、すべてを1つのコミットにまとめるメニューに移動する必要があります。 これは、作業に関する非常に優れた(ただし短い)リソースです。 git-svnで。

他のヒント

いいえ。ただし、すべてのコミットを簡単にまとめてスキッシュできます。次の例では、リモートの trunk ブランチに対応する master ブランチにいて、すべてのローカルコミットをまとめてスキッシュすると仮定します:

git tag local # create a temporary tag
git reset --hard trunk
git merge --squash local
git commit # write your single commit message here
git svn dcommit
git tag -d local # delete the temporary tag named local

一時タグを使用する代わりに、reflogを使用することもできます(つまり、 local の代わりに master @ {1} を使用)

git-svnで作業し、一連のgitコミットを単一のコミットとして表示したい場合、トピックブランチで作業してから、マスターへの非早送り merge を実行します dcommit -ingの前。

まず、svnに対してブランチをリベースし、ローカルマスターが最新であることを確認します:

git svn rebase && git push . remotes/trunk:master

その後、マスターに切り替え、マージしてdcommitします:

git checkout master
git merge <branch> --no-ff -m "Message you want in svn"
git svn dcommit

これはSubversionで単一のコミットとして表示されますが、そのコミットに至ったローカル履歴はまだあります。

                                       +--- Merge commit
                                       V
svn trunk  *---*---*-------------------*--- --- ---
                    \                 /
topic branch         *---*---*---*---*

より簡単な方法は次のとおりです(ローカルシステムに複数のコミットがある場合):

git reset <hash tag of commit till which u need to combine>
git commit -am "your message"  // This will create one clubbed commit of all the commit till the hash tag used.

これは私のために働いた-いくつかのコミットを1つのコミットに押しつぶしてからsvnにコミットしました:

http://www.gitready。 com / advanced / 2009/02/10 / squashing-commits-with-rebase.html

それは私のために働いていません。 merge --no-ff --no-commit を使用しますが、コミット後に次のようになりました:

svntrunk                        54f35e4 [trunk: ahead 336] release 1

トランクへのコミットは、336件のコミットすべてをコミットします。

回答#2で説明されているように、リセット、タグ付け、スカッシュ:ローカルGitコミットをgit-svnの1つのコミットに結合しますは機能しますが、次の「マージ」ですべてのコミットを再びまとめるのに苦労します!

それだけが私のために働いています:

git checkout -tb svntrunk remotes/trunk
git merge --no-commit --squash master

マスターからsvnへのすべてのコミットを、同じコマンドで将来のマージのために履歴を失うことなく取得するには

〜マルセル

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top