1

git で練習するために git-svn を使用しています。つまり、私は決して git の専門家ではありません。最初は git に戸惑いましたが、だんだん git のデザインとパワーに魅了されています。検索が難しいのか、インターネットで検索しても答えられなかった質問があります。

git を使用して機能ブランチで数日間開発した後 (git-svn で複製した後)、 git svn dcommitの前にコミットをリベースしたいと考えています。svn 統合ブランチを何十もの小さな無意味なコミットであふれさせたくありません。そのために、 git rebase -iを使用できることを知っています。

このコマンドにはコミットを指定する必要があります。git-svnと呼ばれる (タグ?) を使用できることを読みました。確かに、そのようなコミット/タグが存在ます

これまでのところ、これはうまくいきます。さて、この紹介の後、私の質問:

このgit-svnリファレンスは何ですか? タグ?コミット?コマンドgit tag --listは何も表示せず、タグとしてのgit-svnは、私が使用していた他の git クローンには存在しません。

別の質問: svn dcommit を gitした後、その参照は変更されますか? 手動で変更できますか?

ありがとう。

4

2 に答える 2

2

この場合、git-svnはタグではありません。によって作成された (特別な種類の)リモート追跡ブランチgit svn cloneです。

バックグラウンド:

を使用して SVN リポジトリを複製するgit svn cloneと、デフォルトでリポジトリ全体が 1 つのリモート追跡 git ブランチとして複製されます (SVN ブランチを git ブランチに変換するには、オプション-T-b、を使用する必要があります。マンページの-sセクションSVN ブランチの処理を参照してください)。 )。その場合、git svnそのリモート追跡ブランチを"refs/remotes/git-svn"として作成します。

git では、ブランチへの参照を省略できるようになりました。書く代わりに、書くgit log refs/heads/masterことができますgit log master。同様に、「refs/remotes/git-svn」は「git-svn」と省略できます。これはマンページで説明されていgitrevisionsます。

だからあなたの質問に答えるために:

この git-svn リファレンスは何ですか? タグ?コミット?

リモート追跡ブランチです。で示されgit branch -aます。

別の質問: svn dcommit を git した後、その参照は変更されますか?

はい。ブランチ「git-svn」は、クローンした SVN リポジトリを追跡するため、SVN から新しいリビジョンを取得するたびに変更されます。git svn dcommitこれには、および の呼び出しが含まれgit svn fetchます。

手動で変更できますか?

はい、できます。他の git ブランチと同様です。しかし、一般的にこれは無意味です。git svnリポジトリを混乱させて台無しにするだけです。必要な状況もありますが (たとえば、サーバー上で変更された SVN リビジョンを再取得する場合など)、それは別の問題です...

于 2013-10-25T09:25:18.363 に答える
0

プロジェクトで git-svn を広く使用していますが、 git-svnという名前の参照が見つかりません。どのgitバージョンを使用していますか?

私自身の経験から、git-svn は、svn サーバーから取得した最後のコミットを指すトランクという名前の参照を作成します。git svn dcommitまたはgit svn rebaseを実行すると、参照は svn リポジトリの HEAD リビジョンを表すコミットに更新されます。

説明した dcommit を実行するには、次のことができます。

git svn rebase (to update your current branch to the latest svn revision)
git rebase -i trunk (to rewrite local history before dcommit-ting)
git svn dcommit 

最後のステップの後、トランク参照はコミットされたばかりの svn リビジョンに更新されます。

于 2013-10-25T09:24:33.293 に答える