文書の過去の版を表示しています。
NestDAQ Git Forking Workflow
- NestDAQ 本体 (nestdaq-user-implではなく) のコードの修正の提案、変更のリクエストがある場合、Forking Workflow というワークフローに従い、pull request (通称: プルリク) を出して NestDAQ のマスターにマージしてもらう。Forking Workflow は AMANEQ-software のコースコードの開発でも採用されており、重要なワークフローなので、ここにメモを残しておく。
Links
- Forking workflow
- Git Forking Workflow
- Fork and Branch Git ワークフロー
Fowking Workflow
- ここでは、NestDAQ 本体のソースコードを例にとり、pull request まで出してみる。
- NestDAQ の Web ページにアクセスする。
- その後、コマンドライン上での操作になる。
- 端末で、Fork した自分のリポジトリをクローンする。
$ git clone https://github.com/nobukoba/nestdaq.git Cloning into 'nestdaq'... remote: Enumerating objects: 296, done. remote: Counting objects: 100% (54/54), done. remote: Compressing objects: 100% (27/27), done. remote: Total 296 (delta 38), reused 27 (delta 27), pack-reused 242 Receiving objects: 100% (296/296), 152.78 KiB | 996.00 KiB/s, done. Resolving deltas: 100% (180/180), done.
- nestdaq ディレクトリに移動し、git remote -v コマンドで origin を確認。
$ cd nestdaq/ $ git remote -v origin https://github.com/nobukoba/nestdaq.git (fetch) origin https://github.com/nobukoba/nestdaq.git (push) $ git branch * main $ git branch -a * main remotes/origin/HEAD -> origin/main remotes/origin/main $ git branch -r origin/HEAD -> origin/main origin/main
- さらに、上流の登録をする。さらに、ブランチも一応確認しておく。
$ git remote add upstream https://github.com/spadi-alliance/nestdaq.git $ git remove -v origin https://github.com/nobukoba/nestdaq.git (fetch) origin https://github.com/nobukoba/nestdaq.git (push) upstream https://github.com/spadi-alliance/nestdaq.git (fetch) upstream https://github.com/spadi-alliance/nestdaq.git (push) $ git branch * main $ git branch -a * main remotes/origin/HEAD -> origin/main remotes/origin/main $ git branch -r origin/HEAD -> origin/main origin/main
- さらに、https://wiki.idempiere.org/ja/Fork_and_Branch_Git_%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC を参考に $ git branch –set-upstream-to=origin/main main と打つ。
$ git branch --set-upstream-to=origin/main main Branch 'main' set up to track remote branch 'main' from 'origin'. $ git remove -v origin https://github.com/nobukoba/nestdaq.git (fetch) origin https://github.com/nobukoba/nestdaq.git (push) upstream https://github.com/spadi-alliance/nestdaq.git (fetch) upstream https://github.com/spadi-alliance/nestdaq.git (push) $ git branch * main $ git branch -a * main remotes/origin/HEAD -> origin/main remotes/origin/main $ git branch -r origin/HEAD -> origin/main origin/main
Troubleshooting
- https://wiki.idempiere.org/ja/Fork_and_Branch_Git_%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC を見ると、すでにnobukoba/nestdaq.git をクローンしている場合、そのディレクトリに移動して、以下のコマンドを実行すれば、origin の登録ができると書いてある。
$ cd nestdaq $ git remote remove origin $ git remote -v # 消えているかチェック。なにも表示されなければOK。 $ git remote add origin https://github.com/nobukoba/nestdaq.git $ git remote -v origin https://github.com/nobukoba/nestdaq.git (fetch) origin https://github.com/nobukoba/nestdaq.git (push)
ただ、このあと、git remote add upstream https://github.com/spadi-alliance/nestdaq.git としてから git branch –set-upstream-to=origin/main main をすると、以下のメッセージがでる。
$ git remote add upstream https://github.com/spadi-alliance/nestdaq.git $ git remove -v origin https://github.com/nobukoba/nestdaq.git (fetch) origin https://github.com/nobukoba/nestdaq.git (push) upstream https://github.com/spadi-alliance/nestdaq.git (fetch) upstream https://github.com/spadi-alliance/nestdaq.git (push) $ git branch --set-upstream-to=origin/main main error: the requested upstream branch 'origin/main' does not exist hint: hint: If you are planning on basing your work on an upstream hint: branch that already exists at the remote, you may need to hint: run "git fetch" to retrieve it. hint: hint: If you are planning to push out a new local branch that hint: will track its remote counterpart, you may want to use hint: "git push -u" to set the upstream config as you push.
この場合、https://qiita.com/kitutune/items/4419f2d726bf8d060ea3 や https://stackoverflow.com/questions/41412398/how-to-address-git-error-the-requested-upstream-branch-upstream-master-does-n あたりを参考に、git fetch すればよさそう?とりあえず、git fetch して、branch をチェックすると、以下のようになる。
$ git fetch From https://github.com/nobukoba/nestdaq * [new branch] main -> origin/main $ git branch * main $ git branch -a * main remotes/origin/main $ git branch -r origin/main
なんか git remote remove origin しない場合に git branch -a と git branch -r で見えていた remotes/origin/HEAD → origin/main という行と origin/HEAD → origin/main 行が見えなくなる。なんでだろう。とりあえず、この状態で、git branch –set-upstream-to=origin/main main とすると、うまくいく。
$ git branch --set-upstream-to=origin/main main Branch 'main' set up to track remote branch 'main' from 'origin'.