1

これが私がしていることの簡単な道です:

$ cd /newdir
$ git clone git@github.com:... .
$ git branch -m master github
$ git svn clone svn+ssh://... .
$ git branch -m master SVN

次に、Githubにプッシュする前に必要なことを実行するスクリプトがいくつかあります。

SVNブランチとgithubブランチが必要です。両方のブランチのファイルは同じですが、内容が異なるためです。ファイルをGithubにプッシュする前に、ヘッダーを追加します。2つのブランチは、SVN上のすべてのファイルがGithubに移動できないようにするためにも使用されます。

すべての更新はSVNブランチからgithubブランチへのものです。ときどき、SVNにないものをgithubブランチに追加します。githubブランチからSVNブランチにファイル/アップデートを送信することは決してありません。

私の問題1は、git svn fetchを実行するたびに、新しいマスターブランチが作成されることです。マスターローカルブランチの代わりにSVNローカルブランチを使用するようにgitsvnfetchに指示するにはどうすればよいですか?

毎回:

$ git svn fetch

私はできた:

$ git checkout SVN
$ git merge master
$ git branch -d master

しかし、それを行うための賢い方法としては見えません。

次に、ローカルgithubブランチがGithubのリモート/マスターブランチであることをローカルgitに伝えるのに問題があります。コマンド

$ git push git@github.com:...

これは、ローカルブランチの名前を変更する前は完全に機能していましたが、現在は私が望むことを行っていません。

だから私の2つの質問:

1 - Telling git svn to always use local SVN branch when getting updates from SVN server
2 - Telling git that local github branch is remote master branch at github
4

2 に答える 2

1

SVNベースのブランチとのマージを使用することはできませんgit svn(マニュアルを読んでください。これは複数の場所で非常に注意深く述べられています)。マージする必要がある場合は、SVNツリーが他のブランチにマージされる別の方法で実行します(ただし、他の何かをSVNツリーにマージしないでください)。

ブランチgit svnmaster作成し、別のブランチで開発を行う必要がある場合は、別のブランチを自分用に使用します(たとえばmaster2)。次に、その中の作業をマスターブランチにコミットする場合は、次のようにします。

git checkout master2
git rebase master
git checkout master
git merge --ff-only master

また、githubマスターリポジトリを追加するときは、別のブランチで追加してください。

git checkout master
git checkout -b githubmaster
git remote add github .....
git pull github master

そして、単に常に上記を実行して、github固有のブランチにプルします。ただし、リベースを実行した後にgithubストリームにプッシュバックする必要がある場合は、githubサーバーで問題が発生する可能性があります。したがってpush -f、分岐後にgithubツリーを強制的に更新するために使用する必要があります。

そして、技術的には、SVNツリーにマージできないことについて嘘をついた。しかし、実際には、そうしなければ、多くの頭痛の種を減らすことができます。現実にはgit svn、完全に統合されたgitシステムを意味するものではありません。これは、実際にはSVN自体よりも単なる「優れたSVNクライアント」です。git svngit自体のフルパワーを実際に使用して期待することはできません。悲しいですが、残念ながら本当です。私はすでにあなたの道を進んでいて、あなたがやりたいことをしているので、私は知っています。結果として、実際にはマージを実行できず、すべてをうまく連携させることができません。SVNはそれを処理できません。

于 2012-10-31T13:51:38.840 に答える
-1

最初にgitclonegit@git.corp.xyz.com:corpでgitHubのクローンを作成し、次にgit checkout(ブランチの名前)、次にgit branch(ブランチの名前が表示されます)

于 2014-12-09T01:23:14.303 に答える