ここに到着した後(同じ質問で)、何もない状態から完全に使用可能なリモート(ベア)リポジトリに移動するために必要なすべての手順を実際に説明する回答がないため、この回答を追加します。
注:この例では、ベアリポジトリの場所にローカルパスを使用していますが、他のgitプロトコル(OPで示されるSSHなど)は問題なく機能します。
gitにあまり慣れていない人のために、途中でいくつかのメモを追加しようとしました。
1.ベアリポジトリを初期化します...
> git init --bare /path/to/bare/repo.git
Initialised empty Git repository in /path/to/bare/repo.git/
これにより、フォルダー(repo.git)が作成され、そこにgit repoを表すgitファイルが追加されます。現状では、このレポは役に立たない-コミットがなく、さらに重要なことにブランチがない。このリポジトリを複製することはできますが、そこからプルすることはできません。
次に、作業フォルダを作成する必要があります。これを行うには、既存のファイルがあるかどうかによって、いくつかの方法があります。
2a。空のリポジトリを複製して、新しい作業フォルダ(既存のファイルなし)を作成します。
git clone /path/to/bare/repo.git /path/to/work
Cloning into '/path/to/work'...
warning: You appear to have cloned an empty repository.
done.
このコマンド/path/to/work
は、存在しないか空のフォルダーである場合にのみ機能します。警告に注意してください-この段階では、まだ何も有用ではありません。あなたがcd /path/to/work
実行するとgit status
、次のようなものが得られます:
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
しかし、これは嘘です。あなたは実際にはブランチにいませんmaster
(git branch
何も返さないため)。これまでのところ、コミットはありません。
次に、作業フォルダーにいくつかのファイルをコピー/移動/作成し、それらをgitに追加して、最初のコミットを作成します。
> cd /path/to/work
> echo 123 > afile.txt
> git add .
> git config --local user.name adelphus
> git config --local user.email adelphus@example.com
> git commit -m "added afile"
[master (root-commit) 614ab02] added afile
1 file changed, 1 insertion(+)
create mode 100644 afile.txt
git config
あなたはすでにあなたはgitのに語っていない場合、コマンドにのみ必要とされています。ここでを実行するgit branch
と、master
ブランチが一覧表示されます。今実行しますgit status
:
On branch master
Your branch is based on 'origin/master', but the upstream is gone.
(use "git branch --unset-upstream" to fixup)
nothing to commit, working directory clean
これも誤解を招く可能性があります-アップストリームは「なくなった」わけではなく、まだ作成されていないだけで、git branch --unset-upstream
役に立ちません。しかし、それで問題ありません。これで最初のコミットができたので、プッシュしてマスターをベアリポジトリに作成します。
> git push origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To /path/to/bare/repo.git
* [new branch] master -> master
この時点で、完全に機能するベアリポジトリがあり、マスターブランチの他の場所にクローンを作成でき、プルおよびプッシュできるローカルの作業コピーも作成できます。
> git pull
Already up-to-date.
> git push origin master
Everything up-to-date
2b。既存のファイルから作業フォルダーを作成する
すでにファイルが含まれているフォルダーがある場合(そのため、その中にクローンを作成できません)、新しいgitリポジトリを初期化し、最初のコミットを追加して、後でそれをベアリポジトリにリンクできます。
> cd /path/to/work_with_stuff
> git init
Initialised empty Git repository in /path/to/work_with_stuff
> git add .
# add git config stuff if needed
> git commit -m "added stuff"
[master (root-commit) 614ab02] added stuff
20 files changed, 1431 insertions(+)
create mode 100644 stuff.txt
...
この時点で、最初のコミットとローカルマスターブランチがあり、リモートトラッキングされたアップストリームブランチに変換する必要があります。
> git remote add origin /path/to/bare/repo.git
> git push -u origin master
Counting objects: 31, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (31/31), done.
Writing objects: 100% (31/31), 43.23 KiB | 0 bytes/s, done.
Total 31 (delta 11), reused 0 (delta 0)
To /path/to/bare/repo.git
* [new branch] master -> master
Branch master set up to track remote branch master from origin.
-u
(新しい)追跡された上流のブランチを設定するためのgit push のフラグに注意してください。以前と同様に、完全に機能するベアリポジトリがあり、マスターブランチの別の場所にクローンを作成でき、プルおよびプッシュできるローカルの作業コピーも作成できます。
これはすべて明白なように思えるかもしれませんが、gitは最良の状態で私を混乱させます(エラーメッセージとステータスメッセージは実際に多少の手直しが必要です)。
--shared
ているinit
場合のオプションを追加することもできます。リポジトリにグループ書き込み権限を自動的に追加します- リンク