プッシュするためのベアリポジトリがあるサーバーがあります。ただし、サーバーにはマスターブランチの作業コピーが必要です。
作業コピーを取得するにはどうすればよいですか?それはベアリポジトリからのみ取得できますか?
プッシュするためのベアリポジトリがあるサーバーがあります。ただし、サーバーにはマスターブランチの作業コピーが必要です。
作業コピーを取得するにはどうすればよいですか?それはベアリポジトリからのみ取得できますか?
リポジトリを同じマシン上の別のディレクトリに複製するだけです。
git clone /bare/repo/dir
現在のディレクトリはリポジトリの非ベアクローンになり、master
ブランチのチェックアウトが自動的に取得されます。git pull
次に、必要に応じて更新するなどの通常のコマンドを使用します。
副次的な利点として、この操作は非常に効率的です。ローカルディレクトリをに指定するとgit clone
、gitはハードリンクを使用して、2つのリポジトリのオブジェクトデータベースの読み取り専用部分を共有します。
私は「切り離された作業ツリー」アプローチを探していました(ここに見られるように):
git init --bare
git config core.bare false
git config core.worktree /somewhere/else/
git checkout -f
これは他の2つの回答のリフですが、私のユースケースのギャップを埋めます-通常の完全なgitリポジトリになるため、オリジンからリポジトリを更新し、ブランチとgit操作をチェックアウトするために機能します。
git clone /path/to/bare/repo /new/path/to/full/repo
cd /new/path/to/full/repo
git remote set-url origin git@github.com:swift/swift.git
これらの 3 行のコードを実行するgit pull
とgit branch
、git checkout some_branch
通常の完全な git リポジトリがリモート リポジトリに接続されているため、次のことが可能になります。
これには「gitshow」を使用できます。
http://www.kernel.org/pub/software/scm/git/docs/git-show.html
基本的に:
git --no-pager --git-dir /path/to/bar/repo.git show branch:path/to/file.txt