1

複数のブランチ(マスター、開発、リリースなど)を備えたgitベアリポジトリを作成したいと思います。だから問題は、裸のリポジトリをチェックアウトすることが可能かどうか、またはブランチを切り替える方法(切り替えるのは理にかなっていますか)ですか?

ベアリポジトリにプッシュしたい場合、ベアリポジトリでマージを行うことはできますか、それともマージをローカルで実行して適切なブランチをプッシュする必要がありますか?だから正しいアプローチを探しています:-)

ありがとうピーター

4

2 に答える 2

6

複数のブランチ(マスター、開発、リリースなど)を備えたgitベアリポジトリを作成したいと思います。

質問から判断すると、裸のgitリポジトリを作成する理由と、そのリポジトリをどのように使用するかについては確信が持てないようです。問題は、なぜベアリポジトリを作成したいのかということです。

Pro Gitから、ベアリポジトリは「作業ディレクトリを含まないリポジトリ」です。これは、作業を行わないリポジトリであり、使用されているだけgit pushですgit pull。この理由はここに要約されています:

「ベアリポジトリとは、コードの作業コピーがチェックアウトされていないリポジトリです。これにはgitデータベースのみが含まれます。原則として、作業コピーの変更を含むリポジトリにプッシュしないでください。これが発生しないようにするには、サーバーリポジトリをベアリポジトリにしています。作業コピーはありません。」

したがって、ベアgitリポジトリには間違いなく複数のブランチを含めることができます。ベアリモートリポジトリのコピーをローカルリポジトリに確実にフェッチし、ローカルリポジトリからリモート(ベア)リポジトリにプッシュすることができます。ただし、ベアリポジトリから作業する必要はありません。(さらに、ベアリポジトリ内で実行することは不可能です。説明については、このSOの質問を参照してください)。git add

だから問題は、裸のリポジトリをチェックアウトすることが可能かどうか、またはブランチを切り替える方法(切り替えるのは理にかなっていますか)ですか?

ベアリポジトリでブランチを実際に切り替えることは決してないため、この質問は完全には明確ではないと思います。ベアリポジトリで作業することはありません。あなたがするのはそれから押すか引くことだけです。

ベアリポジトリにプッシュしたい場合、ベアリポジトリでマージを行うことはできますか、それともマージをローカルで実行して適切なブランチをプッシュする必要がありますか?だから正しいアプローチを探しています:-)

ベアリポジトリにするgit-pushには、最初にマージの競合がないことを確認する必要があります。競合がある場合、プッシュは失敗します(参照:book.git-scm.com、「パブリックリポジトリへの変更のプッシュ」)。したがって、マージはローカルで実行する必要があり、変更はベアリポジトリで。を使用して早送りgit-pushされます。

したがって、正しいアプローチを探しています。

ベアリポジトリについて特別なことは何もありませんが、それを利用してはいけない、またはできないという事実を除けば。他の人が参照しているように、gitflowモデルは、いくつかのリポジトリを含むワークフローのアイデアを提供します-gitワークフローの例と方法論を求めるSOに関する多くの質問があります。ほとんどすべてのリファレンス(1、Pro Git)(2、book.git-scm.com)は、公開または公開されたリポジトリと組み合わせてベアリポジトリを使用します。リンクされた記事では、ベアリポジトリの作成と使用について詳しく説明しています。

于 2012-02-17T16:50:48.817 に答える
2

質問は、あなたが何をしようとしているのか少し不明確です。Gitは特定のワークフローモデルを強制しません。アイデアはあなたに任せることです-開発チーム。あなたが投稿したブランチ名に基づくと、あなたはgitflowモデルに傾倒しているように思われます。これは、多くの企業や開発チームにとって非常に成功したワークフローです。

最初にリポジトリを作成するとき(リモートサーバーのどこかに存在しない場合)、これを使用して、デフォルトのブランチgit initを持つ新しいリポジトリを作成します。master次に、以下を使用してファイルを追加しgit add、コミットできますgit commit。リモートgitサーバー(githubなど)にプッシュする準備ができたら、次を使用してリモートgit URLを追加し、を使用しgit remote add origin <url>てリポジトリをサーバーにプッシュしますgit push origin master 。すでにリモートサーバーがある場合は、リポジトリのクローンを作成します。 、git clone <repo url>リポジトリをプルダウンしてデフォルトのブランチを指すようにするを使用します(通常はmaster)。

ブランチの切り替えは、機能ブランチで開発を行い、後でそれをマージする場合(たとえば)、またはコードがリリースの準備ができている場合に、ブランチにブランチしてrelease、最終的にライブ/本番ブランチにマージする場合に便利です。 。その方法の詳細については、gitflowモデルを参照してください。

gitの使用を開始するには、「beginner」から始めて、githubのドキュメントを読むことをお勧めします。gitとは何か、およびいくつかの基本的なコマンドについては、A List Apart Get Startedwithgitの記事を参照してください。

于 2012-02-17T08:12:38.347 に答える