1

環境:

  • ユーザー「dev」、ホームディレクトリ/home/dev
  • 私が呼ぶものの生産コード/thepath/codebase
  • 作業ディレクトリ/thepath/dev(現在、ブランチにする必要があるファイルを含む)
  • プロジェクト名はKizunaDB

最終的には、kizunadb.gitどこか (ホーム ディレクトリは論理的だと思います) と呼ばれる裸のレポが必要です(この議論からの結論による)

空の裸のレポから始めて、別の場所からファイルをそこに入れる方法がわからないので、ファイルの場所から始めてみました。リポジトリを正常に作成し、/thepath/codebaseすべてのファイルをコミットしました。それから私はしました:

cd ~
mkdir kizunadb.git
cd kizunadb.git
git clone --bare /thepath/codebase

うーん...それは/home/dev/kizunadb.git/codebase.git私が考えていたものではありません。

  1. 場所を修正するためにもう一度実行できます/home/dev/が、まだ呼び出されますcodebase.git-名前を変更しただけで壊れますか?
  2. そして、後で完全なコードを取得できるように、それとコードベースディレクトリの間で役割を交換するにはどうすればよいですか( kizunadb.git クローン /thepath/codebaseまたはチェックアウトを使用 - その時点でどちらが正しいコマンドかわかりません)。gitには「メインのもの」という概念が実際にはありませんが、チュートリアルで「オリジナル」への参照に気づきました-それがどのように機能するかわかりません...
  3. /thepath/dev次に、進行中の作業を失うことなくブランチを実行できるように、リポジトリをクローンするにはどうすればよいですか? (ディレクトリ全体を邪魔にならないように移動し、レポを複製してから、レポのファイルを上書きできることは知っていますが、もっと簡単な方法があると思います。)

間違った順序で作業を行った場合は、最初からやり直してください。

4

1 に答える 1

2

まず、これはうまくいくでしょう:

cd ~
git clone --bare /thepath/codebase kizunadb.git

第 2 に、ベア リポジトリはコントリビュータがプッシュするためのものです。

しかし、コードベース コンテンツを使用してベア リポジトリを適切に初期化するには、「「<code>fetch --all」が git ベア リポジトリでローカル ブランチをリモート ブランチに同期しない」で説明されているワークフローに従うことをお勧めします。

cd /thepath/codebase
git clone --mirror . ~/kizunadb.git
git push ~/kizunadb.git --mirror 

これは、2 番目の非ベア リポジトリに移動し、ベア リポジトリからプルpost-receiveするためにフックで完了することができます。 それはgitレポだと思います。cd
/thepath/codebase

/thepath/devkizunadb.gitあなたが開発するためのベアレポの単純なクローンになります.

git stash進行中の作業を失うことなくブランチを作成できます。
GIT: チェックアウトまたはステージングされていないデータを失うことなく、new/dirty/dev ブランチにいる間に古い/安全なブランチに変更をコミットする」を参照してください。


コメントで述べたように、1 人の開発者にとって、ベア リポジトリは不必要かもしれません。
あなたは出来る:

  • リポジトリは1 つだけです。/thepath/dev
  • git --git-dir=/thepath/dev/.git --work-tree=/thepath/codebase checkout -fコードをデプロイするときはいつでも" " を使用してください。

その場合、/thepath/codebasegit リポジトリではなく、/thepath/dev展開時の作業ディレクトリと見なされる単なるツリーになります。

于 2013-04-05T06:06:06.207 に答える