1

私は現在、リモート リポジトリを介して 2 人の開発者がアクセスする中央ベア リポジトリを使用して Git をセットアップしています。ブランチを作成し、そのブランチをリモート リポジトリから中央のベア リポジトリにプッシュしようとしたときに問題が発生しました。これは、この投稿の場合と同様です。

ブランチの追跡がこれを行うための最良の方法であると読んだことがありますが、私が読んでいるGitのバージョン管理の本には、ブランチの追跡は別のリポジトリからの変更に従うように設計されているため、マージに使用すべきではないと書かれていますそしてコミットします。

私の現在のセットアップに基づいて、さまざまなブランチを処理するための最良の方法は何ですか?

ソフトウェアのバージョン/リリースごとにブランチを作成するつもりでしたが、バージョン/リリースごとに個別のリポジトリを作成するのが最も簡単な方法のようです。

4

1 に答える 1

1

まず第一に、ソフトウェアのバージョンごとに独自のリポジトリは必要ありません。リリースする場合は、タグを作成するだけです。このタグを参照すると、いつでもリリース済みのバージョンに戻ることができます。

2人の開発者のそれぞれがプッシュできる中央レポがある場合は、そのレポを裸のレポにする必要があります(参照された質問で受け入れられた回答が推奨するように)。

ベア リポジトリにはチェックアウトされた作業コピーがないため、いつでもプッシュできます (少なくとも、以前に最新バージョンを取得している限り)。

しかし、あなたのシナリオは少し違うように聞こえます: たとえば、2 台のコンピューターがあり、それぞれが作業コピーを持ち、これら 2 つのボックス間でプッシュ/プルしたい場合、解決策は、マスターにプッシュしている間だけ使用されるブランチを持つことです。他のコンピュータから。

次のワークフロー (現在ブランチがチェックアウトされているリモートにブランチmyfeatureの変更をプッシュする場合:notebookdesktopmyfeature

オンdesktop:

git checkout -b temp

次にnotebook

git push desktop myfeature:myfeature

戻るdesktop:

git checkout myfeature
git branch -D temp 

それでおしまい。

もう 1 つの方法 (2 人の開発者 (アリスとボブ) が同じブランチで作業している場合) は、ボブがmyfeaturealice からの最新バージョンを取得したい場合、アリスに変更をプッシュさせる代わりに、アリスから変更をプルするというものです。彼のレポ。alice のコンピューターがbob のリポジトリでリモートとして構成されており、bob が現在ブランチをチェックアウトしているとします。alicemyfeature

どちらのボブも

git pull alice

彼のブランチalice/myfeatureの追跡ブランチとして設定されている場合( で設定)。またはmyfeaturegit branch --set-upstream myfeature alice/myfeature

git fetch alice
git merge alice/myfeature

Alice のmyfeatureブランチが追跡ブランチとして設定されていない場合。

于 2011-06-08T12:01:51.503 に答える