2016-11-30 9 views
1

試しにGitを使用しましたが、私はそれを正しく使用しないと確信しています。
Gitをよりプロフェッショナルにする方法を知りたいです。
Gitがインストールされていない状況から新鮮なものから始めたいと思います。
もちろん、私はマニュアルを読んだり、たくさんのグーグルではありますが、それを正しい方法で使う方法がわかりません。Gitを正しく動作させるには?

今、私たちはウェブサイト専用のUNIXサーバを持っています。
私はWindows上でwebdevelopmentにPhpStormを使用しています。私は、.htaccessで小さな301リダイレクトの変更を行う大学を持っています。
今後、別のプログラマと一緒に拡張する予定です。
彼が行った変更を追跡できるようにしたいのですが、.htaccessにリダイレクトを追加するだけでGitの過度の攻撃ですか?

この状況でgitを使用する最も良い方法は何ですか?
マスターはどこにいるのですか?
私は非常にGitを使い慣れています。
オンラインになる前に私の大学からのコミットを見直さなければならない可能性があると聞いて、私はそのように働きたいと思います。

等も、私は新しいコードでマスターを更新する必要があるか、またはそれがすべて別々の枝になります

答えて

2

単純かつ最小限の単語で説明しましょう。

  1. gitはマルチユーザー環境でのみ使用する必要はありませんが、個々の開発者にとっては同じスタンドアロン以上のスタンドアロンです。開始時には、協力的なやり方よりもまず個々の開発者としてのすべての機能を活用する必要があります。

  2. ローカルシステム(git initを使用)上でgitリポジトリを作成し、開発者(マスターまたはブランチのいずれかが後で使用されます)を開発しましょう。開発サイクル中に、作業単位、つまりボタンが追加され、基本的な機能がいくつかあり、適切な詳細でステージング(git add)とコミット(git commit)する必要があります。私は毎日ローカルリポジトリで5〜10回コミットする開発者でした。

  3. ステージ2の利点は、いつでも戻ってくることです。数秒以内に問題が発生した場合はコミット中にローカルリポジトリを作成します。 3またはコミットno。 10(git checkout .. commit no。)は、デバッグ時に非常に便利で、さらに計画を立てるための明確な図があります。特定のコミット後に発生した問題をキャッチすることも非常に簡単です(git diffは任意の2つのコミットの間にdiffを表示します)。私たちはgitを通してファイルを非常にうまく管理しています。

  4. 今はmasterで作業するのではなく、ブランチで作業することができます。たとえば、関数が新しくなる前に、ブランチを作成する(gitブランチbranch_xyz、git checkout branch_xyz)ことができます。(コードレビュー完了、ユニットテスト、コンポーネントテストのような)査読者、テスター、または関心のあるプロジェクトチームが、システム内の特定のブランチを引き出すことができます。マスターまたはブランチのいずれかで、コミットロジックは同じままであり、ポイント2で言及されたものはすべて同じままです。マイルストーンとして識別したいコミットは、タグ付けすることはできません(gitタグ-a build_3.4 -m "ビルド記述)。すべての検証の後、コードはマスタにマージすることができます(git checkout master、git merge branch_xyz)

  5. 上記のすべては、サーバがなくても機能的にローカルシステムで使用することができます。現在、マルチユーザ環境では、自分のサーバにリポジトリを持つことを選択することも、githubやbitbucketのようなリポジトリを使うこともできます。私は自分のコードにbitbucketを使用します。メインリポジトリへの最終変更のみをプッシュする必要はありません)...私たちは変更をローカルリポジトリ(git push -all -u remotename)にプッシュすることができます。ローカルであれば、ブランチの一部であり、メインでも同じブランチの一部になります。ローカルでマスタにマージされた場合は、サーバ上でマスタにマージされるだけではありません。

  6. git cloneまたはgit pullコマンドを使用してメインリポジトリからコピーを取得できる他のチームメンバ..とポイント2以降に記載されている同じ手順に従うことができると投稿します。

マルチユーザー環境でのGit

Q - (gitので)マスターを作成するのに最適な場所は、それがウェブサイトもホストされている専用サーバー上または社内の別のインストールされたサーバー上にあるさ? gitのサーバとgitのノードは、彼らはすべてのマスター(メインコード)と枝(WIPコード)を持つことになりますので

  • あなたは、マスター、それをコールする必要はありません、それは

  • メインのGitサーバー説明します専用サーバである必要はなく、Webサイトがホストされているマシンと同じマシン上にある必要もありません。できるだけ早くどこにでも置くことができます。 デプロイメントに使用されているビルドをダウンロードして準備します。ただし、gitメインサーバ/リポジトリは開発目的では使用しないでください。

Q - マスターを作成した後、マスターを自分のコンピューターにクローンして開発を開始する必要があります。その後、git-serverに変更をコミットする必要がありますか?開発2)Gerard-開発3)Sytse - -

  • は、あなたのチーム1)ロンで3メンバーとさせて頂きますテスター、あなたの現在のビルドは、masterブランチでメインのgitサーバー上に座っbuild_4_01あり、そして、今日なしのようあなたのチームメンバーは自分のシステムにコードを持っています。

  • これらの3人のユーザーはすべてローカルシステムにgitをインストールし、メインサーバーからクローンします。今、彼らはマスターブランチの下で地元のgitリポジトリにbuild_4_01いる

  • 次のロンは、ロンが最初に彼の地元のgitリポジトリのすなわちbranch_build_4_02にブランチを作成します

  • build_4_02として指名される次の機能で動作するように頼まれましたbranch_build_4_02の下でコードを完成させてください。

  • ビルドbuild_4_02で20個の小さな機能があり、10日間で完成しました。いいえ(

  • 各小機能の完了後、ロンは、各後

  • コミットローカルリポジトリにコミット実行するのに使用される、または一日の終わりに、ロンは、メインサーバにコード(Gitのプッシュ)をプッシュします主なサーバが既存のコードを混乱させることはありません。Ronは、branch_build_4_02の中にあり、メインサーバはmasterとbranchを効率的に分離しています)

  • 開発期間の10日間、コードをレビューしたり、技術的に彼を助けるGerardの助けを借りて

  • したがって、GerardはRonの最新コードをすべて必要とします。毎日Gerardはgit pull(コマンド)を実行し、ローカルのgitリポジトリをRonのすべての最新の変更と同期させます。Gerardはブランチ内でそれらを見ることができます_4_02

  • コーディング(build_4_02)Sytse(Tester )知らされた、ともジェラードのような彼は、ローカルシステムでのプルリクエストを実行し、そして

  • Sytseは、テストサーバー上のgitブランチ4_02からコードを展開し、最新のコードを持って、テスト中にテスト

  • を完了いくつかの欠陥が彼によって提起されましたが、Ronはそれらを修正し、gitサーバにコードをプッシュしました.Syseはそれらをr etest

  • すべてがテストされ、テストのサインオフが受信された後は、実稼働環境に移行する予定です。コードはまだ枝の下に座っていた4_02

  • ロンは、10日(git checkout master)でマスターをマスターし、git merge branch_4_02をマージするためにローカルgitを指導しました。 build_4_02と呼ばれるように1は、名前

    によって識別することができ、すべての
  • 特定のコミットが3003b9fe441dd6a2e3c1410880c3a86b496fcb27のように見えますが、test_completed、すなわち4_01_code_completedユーザーフレンドリーな名前でタグ付けすることができ、4_01_prod

  • ロンは、1つの以上のプッシュ実行(Gitのプッシュを...)同じ変更がサーバーにも反映されます。

  • GerardはProdのデプロイメントを担当していました。ローカルブランチで最新のコードを使用してgit pullを実行し、特定のコミット(Ronがやったこと)でprodのデプロイメントを行い、build_4_02というタグを付けました。

  • チーム内のすべての人が、ローカルのgitリポジトリでgit pull要求を実行し、prodと同期します。

  • Sytseいつか、彼はちょうどその特定のコミットをチェックアウトし、自分のシステム

Qでビルド4_01コードを持っていますので、401を構築するために戻りたい生産の問題に​​取り組む必要がある、と - 後git-serverでマスターとマージする必要がありますか?

マージ後のSytseによって受信されるサインオフローカルのgitで発生しますが、上記の後

Qをマージしたロンとしてサーバーに再びプッシュされます - そして、どのように私はからウェブサイトに変更をプッシュしますgit-server?

これは現在のプロセスと同じですが、ウェブサイトに変更を加える人は自分のローカルPCでgitを行い、 がウェブサイトに変更を加える前に、彼は最新のコードを取得し、正しいはジェラルドと同じでは上記

Q &

Qをした、(タグbuild_4_02)をコミット - だから受信して構築し送信するためのgitメインサーバが置かれることを確認します。 gitとcentosだけをインストールしてgit main serverとして別のPCを簡単に使用できますか?

はい別のサーバーを使用することは必須ではありませんが、ビルドの受信と送信にジョブを呼び出す代わりに、チームが任意のバージョンのコードを取得できる集中コードリポジトリになります。

Q - ロンは、変更をbranch_4_02 gitのマージがローカルのgitとGitのメインサーバとマージされたのはいつ?そして、これらのマージのためにgitメインサーバーは常に最新の状態になるでしょうか?

ありませんが、マージ別のブランチに1つのブランチから、ローカルシステムでのみ発生、または子ブランチからマスターブランチへ、またはその逆。メインサーバに送るには、git pushコマンドをローカルサーバ上で実行する必要があります。開発者は、開発者がそれを要求するときにのみ、サーバにコミットを送るように制御します。さらにpushコマンドを使うと、開発者はリモートサーバー名についても言及する必要があります。

Q - 開発者がタグ4_02_prodを与え、変更を配備した人がコードをプルしてタグ4_02_buildを付ける最も良い方法はありますか?

理想的には、コードが終了し4_02_prodとして現像(RON)によってタグ付けが変更なしPRODするように、この場合には、タグは、デプロイヤから必要としないであろう、行くべきです。 しかし、Ronの変更の上で変更を加えるデプロイヤ(Gerard)では、それを良いタイトル、つまり4_02_deployedでタグ付けする必要があります。 2つのコミット/タグの間で変更された内容を明らかにして、問題を絞り込むことができます。さらにコミット/タグをテスターで引き出して詳細な調査を行うことができます。

Q-そして、すべてが行われ、削除すべきかあなたはすべてを保つかの支店がありますか?

即時ロンは習得し、それをタグ4_02_prodを与え、製品版にそれをプッシュする分岐4_02をマージした後、branch_4_02は廃棄しなければなりません。同じコンテンツがタグ4_02_prodを持つマスターブランチで利用可能な になるためです。この時間の後にブランチを生かしておくと利点はありませんが、誰かがそれを間違って使用した場合の大きなリスクは混乱のようです。

これを削除するには、Ronは2つのブランチを見ることができます。1)ローカルシステムではgitブランチコマンドを使用します.2)もう1つはメインサーバーでコマンドを使用します。 git branch -r。両方とも削除してgit pushを実行する必要がありますので、メインサーバも同期しています。

Q - 私は2つの場所で支店を削除する必要があることを述べました。ローカルサーバーとメインサーバー上のサーバー。しかし、ブランチをローカルに削除してメインサーバ上で古いビルドに戻すことはできますか?

はい、ブランチを削除する前にそのブランチ自体がマスタにマージされ、4_02_prodというタグが付けられているため、ローカルのgitおよびメインサーバからブランチを削除すると、すべてのバージョンのコードが残っています。

これはgitの美しさです。ただ1つのコマンドを使用することで、git checkoutコードはコミットされている限り、任意のバージョンのコードを取得できます。

現在のシナリオでは、Ronはコマンドgit checkout tags/build_4_02_prodを実行するだけで、システムに古いコードを持ちます。すべてのウェブサイト/ライブコードに展開する前に行われていること、そして、あなたが言う最初のビルドを削除してから(私は推測するあなたのマスターから)プッシュを行う - 彼はただ命令にgit checkout master

Qを実行することで、最新の コードを持つことができます?

はいブランチ削除後、私は再度押すので、サーバは同期しています。より安全な側になるためには、ブランチの削除が完了した後、2)マスターにマージが完了した後に1)を2回押します。何らかの理由でブランチが他の場所で削除されても、その後のプッシュでエラーが発生することがあります。

+0

ありがとうございますが、私はまだいくつかについて混乱しています。私はマルチユーザ環境に行きたい。 gitを使用してマスターを作成する最適な場所は、ウェブサイトもホストされている専用サーバー、または社内にインストールされた別のサーバーにありますか?マスターを作成した後、マスターを自分のコンピューターにクローンして開発を開始する必要があります。その後、git-serverに変更をコミットする必要がありますか?その後、私はgit-server上のマスターとマージする必要がありますか?そしてgit-serverからウェブサイトへの変更をどのようにプッシュしますか? – FamousWolluf

+0

私は以前の答えを編集して、実際の生活の簡単なシナリオでこれらの質問に答えました..まだ質問があれば.. :) – Girish

+0

Thanx explainationは非常にはっきりしていますが、まだ残念です。 gitメインサーバがビルドの送受信に使用されることを確認してください。 gitとcentosだけがインストールされた状態で、別のPCをgit main serverとして簡単に使うことができますか? Ronがgit mergeを行ったときbranch_4_02変更はローカルのgitとgitのメインサーバにマージされますか? これらのマージのためにgit main serverは常に最新の状態になっていますか? ..... – FamousWolluf

0

通常master branchはデフォルトのブランチで、常に安定しているすべてのコードでそれを更新する必要があります。作業フローは次のようになります。

  • 1人以上の開発者が作成し、masterから新しいブランチに切り替えます。変更を加えてコードをテストします。タスクを完了した後(&も安定です)、pull requestmergeのコードをmasterブランチで作成します。

  • 現在、masterにはいくつかの新しい変更が加えられており、他のすべての開発者はmasterの最新のコードを自分が作業している別のブランチに持っていきます。

  • マスターブランチのコミット時に、製品のバージョンをリリースする必要がある場合は、tag (e.g. v1.0.0としてください)。次に、そのタグから新しいブランチ(たとえばrelease-v1.0.0)を作成し、製品をリリースします。

関連する問題