2010-01-15

Git における clone の clone から origin への push

オリジナルのレポジトリ repos があるとする.

$ cd repos
$ git branch
* master

これを clone に clone する.

$ cd ..
$ git clone repos clone
$ cd clone
$ git branch
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
$ git checkout -b branch
$ git branch
* branch
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
(ファイルを編集)
$ git commit -a
$ git checkout master

これをさらに clone する.

$ cd ..
$ git clone clone cloneofclone
$ cd cloneofclone
$ git branch
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branch
  remotes/origin/master

さて,このブランチ remotes/origin/branch を repos の branch というブランチとして push するにはどうすればよいか?

$ git push ../repos remotes/origin/branch:refs/heads/branch

とすればよい...

本当か?ブランチのネーミングの本質がわかってないので確信できない.

(2012/3/1 追記)上のやり方で正しい。ただし、refs/heads/branch と branch は同値なので、

$ git push ../repos remotes/origin/branch:branch

としてもよい。参照: Pro Git - Pro Git 9.5 Git Internals The Refspec

0 件のコメント:

コメントを投稿