2012-02-14 12 views
14

私は私のオフィス用のGitを設定することになっていました。我々はいくつかのサイトを持っています。私はちょうど私たちが変更を推進するためのネットワークドライブを設定しました。私の質問は次のとおりです:Gitリポジトリをどこで初期化しますか?Gitセットアップのベストプラクティス

  1. 各サイトの新しいdir + init?
  2. クリーンで1つの初期化&新しいドライブと各ディレクトリは異なるサイトですか?
  3. 他にも何か不足していますか?

私は、あなたが「なぜ」という質問をして最初の人を呪われてしまった場合は、特に助言を求めますか?

+5

あなたが初心者なら、この世界でどのようにしてその任務を果たすことができますか?それを設定しなければならない人さえも、システムについての知識は全くありませんでしたか? – eckes

+1

小さなデベロッパーチーム、私たちは皆、多くの帽子をかぶっています...私の最初の質問。 – rpophessagr

+1

@rpophessagr - 誰もが参照したこのE. E。Cummingsの詩を初めて見たのはこれです。私は機会に自分のユーザー名として使っています。クール! –

答えて

4

すべてのコードベースを1つのgitリポジトリに入れるか、それぞれ単独で使用するかは重要です。つまり、私の好みは、コードベース/サイトごとに1つのgit repoになります。そうすれば、他のサイトをチェックアウトせずに単一のサイトで作業することができます。また、他のサイトへの変更が心配する必要はありません。 サイト(あなたがそれを伝えたいものは何でも)が、プロジェクトの問題であれば

+0

ありがとうございます。 – rpophessagr

+1

別のものに影響を与えることなく、あるもののバージョンを変更する必要がある場合は、それらを別々のリポジトリに置く必要があります。これは優先事項ではありません。 – Cascabel

36

レポの構造は問題ではありません。経験則として

:(祝福bare

  • 使用ONEそれぞれ独立プロジェクトのレポ
  • 共通モジュールが共有されている場合、各リポジトリ内submodules

で実現することになり、 branchesで作業を構成し、ではないは、異なるソフトウェアスタックを編成する手段とブランチを混同します。分岐は、作業をo ne repo(すなわち、 ONEソフトウェアの異なる開発ストリング)。

enter image description here

混乱:これは1つのモデルの分岐(つまり、ここではSOでかなり人気があるようです)のですか?好奇心? explanationを参照してください...

+0

ありがとう!サブモジュールはブランチを意味しますか?または、他の何か? – rpophessagr

+1

裸のレポのための+1( 'git init --bare') - OPの環境のために、必然的に必要なものです。 –

+0

素晴らしい記事ありがとう! – rpophessagr

1

おそらく変更をプッシュしてクローンを作成する集中サーバーが必要です。このサーバーには1つのリポジトリまたは複数のリポジトリがあります。私は直接興味のいくつかのセクションを持っているhttp://sethrobertson.github.com/GitBestPractices/を読むことをお勧めします。具体的には、ローカルワークフロー、分散ワークフロー、および作業をリポジトリに分割する方法を選択します。

2

内部でリポジトリをホストする場合は、gitoliteをお勧めします。混乱ファイルを変更するだけで、中央のレポを追加できます。

プラットフォーム間の開発をしていない限り、auto crlfをfalseに設定します。

は、この方法あなたの支店の管理:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

0

基本設定

私は、サーバーのGitに専念ディレクトリを作成することをお勧め。

職場関連の仕事のために私の会社が運営するサーバーでディレクトリ名/gitを使っていましたが、私的なウェブサーバーには/gitというディレクトリも作成しました。あなたは、あなたがソフトウェアの変更がうまく表示できるようにするために、サーバー上GitListのようなものをインストールすることができ、視聴者

を追加

ssh [email protected] 
cd /git 
mkdir Project7sName.git 
cd Project7sName.git 
git init --bare 
echo "Take over the world project" > description 

あなたのプロジェクトのための裸のリポジトリを作成することができます/ gitのディレクトリ内

- 可能、例えば赤色の欠失および緑色の挿入。バージョン管理分散

GitList example image

Gitは分散バージョン管理システムです。だからあなたはいくつかのサイトでこれをやりたいかもしれません。利点は、いつでも他のサイトとの接続を失っても、中断しないで作業を続けることができるということです。また、ハードドライブの故障や同様の問題が発生した場合は、データのコピーが複数あることになります。

人々はいつもプッシュするようにしたいと思えば、メインサイトとして指名することができます。そうすれば、人々がすべてのサーバーサイトにプッシュすることができます。

私たち自身のgitserver、NASから、あなたはその後、

git push siteA master 
git push siteB master 

のようなものは、私はgithubのから引っ張って、毎日実行されたバックアップスクリプトを持っていないことができ

git remote add siteA ssh://[email protected]/git/repositoryX.git 

のようなコマンドを利用しますドライブ、USBドライブ、それぞれにプッシュします。

これを行うには、ソフトウェア変更のコピーが複数あることを確認する2つの方法があります。ユーザー(複数のサイトにプッシュ)及び投与により

  • (サイト間の変更をコピーする)ことにより

    まずGitをサーバーに設定し、GitListのようなものを追加して、変更をうまく表示します。

    手順を正しく理解したら、いつでも好きなときに、選択したときに別のサイトで繰り返すことができます。

    古いプロジェクトをインポートしますか?

    システム管理者は、古いプロジェクトをGitにインポートすることができます。

    空のリポジトリをコミットすることでこれを行うことができます。

    git touch .gitignore 
    git add .gitignore 
    git commit -m Empty 
    

    た後、繰り返し(gitのファイルから離れて空に)プロジェクトディレクトリにプロジェクトのあなたのアーカイブ版を解凍し、アーカイブされた状態をコミットします。

    rm * 
    unzip ... 
    git add * 
    git commit -m "Archived state 2013 week 18" 
    git tag ArchivedState2013week18 
    

    あなたが年代順にアーカイブされた状態をコミットした場合の回で一緒に混合し、他の人の不完全とはいえ、あなたの閲覧ソフト(GitListまたは何でも)は、その後、あなたの過去の修正のためのソフトウェアの変更の表示を開始する可能性があります。

    また、git blameを使用して、いくつかのコード行が導入されたときにアイデアを出すことができます。

  • 関連する問題