44

プッシュするためのベアリポジトリがあるサーバーがあります。ただし、サーバーにはマスターブランチの作業コピーが必要です。

作業コピーを取得するにはどうすればよいですか?それはベアリポジトリからのみ取得できますか?

4

8 に答える 8

54

リポジトリを同じマシン上の別のディレクトリに複製するだけです。

git clone /bare/repo/dir

現在のディレクトリはリポジトリの非ベアクローンになり、masterブランチのチェックアウトが自動的に取得されます。git pull次に、必要に応じて更新するなどの通常のコマンドを使用します。

副次的な利点として、この操作は非常に効率的です。ローカルディレクトリをに指定するとgit clone、gitはハードリンクを使用して、2つのリポジトリのオブジェクトデータベースの読み取り専用部分を共有します。

于 2012-09-16T20:08:51.800 に答える
21

私は「切り離された作業ツリー」アプローチを探していました(ここに見られるように):

git init --bare

git config core.bare false
git config core.worktree /somewhere/else/

git checkout -f
于 2012-09-22T22:39:25.980 に答える
4

これは他の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 pullgit branchgit checkout some_branch通常の完全な git リポジトリがリモート リポジトリに接続されているため、次のことが可能になります。

于 2015-12-09T23:23:19.070 に答える
2

これには「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
于 2012-09-17T15:29:20.630 に答える