1

このテキストの壁の終わりに本当に質問があります。に到達するには、いくつかの設定が必要です。どうぞよろしくお願いいたします。

私には、他の2人の開発者とともに、技術リーダーであるプロジェクトがあります。しばらくは早いですが、実際には開発の現在のフェーズの開始時にではなく、gitに興味を持ちました。

SVN作業ディレクトリをgitにインポートしました。私たち3人は、順番に展開する機能に取り組んでいました(「プロモーション」、「マップ」、「調査」の順にニックネームが付けられています)。ですから、当時はよくわからなかったので、「地図」を「マスター」から、「調査」を「地図」から分岐させました。今は違うやり方をしますが、数ヶ月前はそうやってやりました。

「最初の」プロジェクトである「promo」に取り組んでいる開発者はSVNで作業を続け、私は手動でマスターブランチを彼の変更と同期させ、機能ブランチを介して定期的にマージしました。それはこのように見えました:

* ------- master (in sync with svn and containing work for "promo")
 \*------- dev/map
   \*------  dev/survey

そのため、先週は「プロモーション」が公開され、昨日は「マップ」が公開されました。このすべてがクリーンアップの準備が整っていました。

本番プッシュの方法論は、git diff --stat master..dev/map変更されたすべてのファイルを見つけて、それらを本番サーバーに手動でFTPで転送することでした。

それがテストされて受け入れられたら、私は行きました:

git checkout master
git merge dev/map
git branch -d dev/map

これで、マスターはステージングサーバーと開発サーバーの両方にあるものを表します。それで:

git checkout -b production
git checkout -b development
git checkout -b hotfix

これで、本番環境にあるもの、統合用、および本番環境への必然的なクイックフィックス用のブランチができました。dev/surveyは「開発」からの分岐と考えることができます。

git remoteこれらすべての変更をミラーリングして中央(ギトライト)リポジトリにプッシュするコマンドを実行しました。クローンで混乱するので、プッシュすることはできません:master-そして私はそれを取得しますが、おそらく私が先に進んでそれを実行できるように構成します。

そこで、「調査」に取り組んでいる人に、これらすべての変更をプルダウンしgit diff --stat、ステージングサーバーに配置するために変更されたファイルを見つけるために使用するように依頼しました。彼がそれをしたとき、彼は彼の変更とは無関係であるように思われるファイルの長いリストを手に入れました。彼はこれらすべての新しいブランチを取得しましたが、どういうわけか実際にはすべてのコミットなどを取得しませんでした。

私は彼にリポジトリのクリーンなクローンを取得してもらい、彼は私が意図したすべての変更を取得し、テストのためにステージングサーバーで作業を開始することができました。

問題は、これらすべてのブランチの変更に直面したときに、彼のリポジトリで何が起こったのかということです。ブランチはタグの特殊なケース、つまりHEADと一緒に移動するタグだと思いました。それはちょうどすべての正しい商品を手に入れるべきでしたね?

4

1 に答える 1

0

どういうわけか、gitolite リポジトリのマスターは、開発者の git リポジトリのマスターとは異なる履歴を持っています。
したがって、「彼のレポで何が起こるか」ということはあまりありません。それは「gitolite (中央) レポで (プッシュ中に) 何が起こるか?」 についてです。

于 2011-07-20T15:47:14.830 に答える