2010-12-07 10 views
2

gitに関するいくつかの質問。git pushはこれを達成できますか?

現在のところ私は唯一のユーザーであり、私のリポジトリでいくつかの基本的なコマンドを正常に実行しています。しかし、私は異なるユーザーがリポジトリを管理し変更することを許可します。私はプッシュ/プルなどのことを読んできましたが、まだ完全に理解していません。私はこれを達成したい場合は上に読んですべきことの提案を持つことができます。

[リリースディレクトリ]を例:/リリース/生きる

[developer1]例:/開発者/ developer1 [developer2]例:/ developers/developer2

開発者が自分のディレクトリで作業していて、最終的にバージョンを作成したいとします。彼はステージングエリアを "/ release/live"に "プッシュ"する必要がありますか?また、もし彼が物事を台無しにしたバージョンをプッシュしたら?どうすれば元に戻ることができますか?また、どの支店がコンテンツを格納しますか?開発者1がリリースディレクトリにプッシュできるようにするためには、どのような権限が必要ですか?両方のディレクトリは同じサーバー上にあるので、私はSSHや何か気にする必要はありません。

答えて

1

両方のディレクトリが同じサーバー上にあるため、SSHなどについて気にする必要はありません。

すべてが同じサーバー上にある場合、あなたはすべての開発者は、(=すべてのユーザーが書き込み可能である)にそれの変更をプッシュすることができます1つの裸のリポジトリ(git init --bare)が必要です。非裸のリポジトリにプッシュすると、問題が発生することがあります。

あなたのユーザが異なるUNIXユーザの場合、chmod g+wリポジトリだけでなく、すべてのディレクトリにスティッキービットを設定する必要があります(つまり、新しく作成されたものを意味しますディレクトリも権限ビットを継承します。そうでなければ、最初にユーザが作成したディレクトリは755となります。つまり、他のユーザはこのディレクトリにファイルを作成できません)。

開発者は彼のディレクトリで作業して、彼のバージョンを最終的にしたいとします。彼はステージングエリアを "/ release/live"に "プッシュ"する必要がありますか?

一般的なワークフローは、開発者が共通のリポジトリに変更をプッシュし、その後これらの変更は/release/liveからgit pullによって/release/liveに送信されることです。 (また、共通リポジトリのフックでこの手順を自動化することもできます)。

また、新しいブランチヘッドがすでに存在するヘッドの子孫である場合にのみ、リモートブランチにプッシュすることができます。つまり、他の誰もこのブランチに何かをプッシュしていない場合にのみ、リモートブランチにプッシュできます。誰かがこのブランチにプッシュすると、この新しいブランチコンテンツを取得してから、自分の変更を新しいブランチコンテンツにマージまたはリベースする必要があります。

また、物事をねじ込んだバージョンをプッシュするとどうなりますか?どうすれば元に戻ることができますか?

いつでもgit checkoutプロジェクトの古いバージョンを使用できます。また、git revertコマンドもあります。このコマンドは、特定のコミットの変更を取り消します。

コンテンツはどの拠点に保存されますか?

新しいgit repoを起動すると、変更はmasterブランチに保存されます。 git branch MyNewBranchName(その後はまだmaster)またはgit checkout -b MyNewBranchName(新しいブランチに作業コピーを移動する)で新しいブランチを作成することができます。現在のブランチ名については、git branch(引数なし)で調べることができます。そして、あなたの現在のブランチは、その前に星印がついています。もうブランチが必要ないときは、git branch -d MyNewBranchName(このブランチのすべてのコミットが他のブランチにマージされることを保証します)またはgit branch -D MyNewBranchName(ブランチを削除し、他のブランチにマージされないコミット最終的にガベージコレクション実行中に失われた)。

また、分岐に関する大きなリソースはhttp://nvie.com/git-modelです。

+0

ああ、ルディを書くにはしばらく時間がかかるだろう。本当にありがとう!私はそれを再読し、情報を消化するつもりです。私はあなたが言及した仲間のいくつかを知っていたが、それにもかかわらず、驚くべき返信! – g1t

+0

@ g1tこれはコンパイル時のためのものです。 http://xkcd.com/303/ – Rudi

0

ワークフローの学習を始めるには良い場所です(一般的にGitにもっと慣れ親しんでください)git pro bookThe O'Reilly bookも素晴らしいです;私は強くお勧めします。

「ねじ込みを防ぐ」ために、より深く掘り下げて、より快適になるように、分岐やタグ付けをお勧めします。

不要な開発者が特定のブランチ(「リリース」ブランチなど)にアクセスできないようにするには、gitoliteを検討してください。

幸運のベスト。

+0

ありがとうブライス、私は読んでいるでしょう。私をちょっとだけ占領しようとしている! – g1t

関連する問題