一人で git で遊ぶ と git でログをみる までにおいて 次のことを学びました
git clone
をつかって github にある(リモート)リポジトリを クローンする(ダウンロードする)。こうして、作業ディレクトリと ローカルリポジトリを手に入れる。git branch
する(ブランチの名前を test
としよう)git add file_name
そして git commit file_name -m "Begin editing"
)git log
で他人の/自分のメッセージを見る「これまでの話」は、一言で言えば、 「あたかも github がないかの如き状況」での「話」でした。 ローカルな作業ディレクトリ (およびローカル・リポジトリ)で git をつかう話をしてたわけです。 これからは、もう一度リモート・リポジトリ、 すなわち github に蘇えってもらいます。
さて、これまでのローカルな作業ディレクトリが あなたの職場にあるコンピューター(O とします)のものだとします。 「これからの話」では、 もう一つのコンピューター、 家にあるコンピューター (H とします) での作業が問題となります。
Oでの作業がひと段落したら、 (1) まず作業していたブランチを main ブランチ(「幹」ですね)にマージします。 (cherry-picking するのが理想ですが、それは後日。) この時点で、ローカルリポジトリと (GitHub にある)リモートリポジトリとは食い違っています。 ローカルリポジトリのほうが少し先に進んでいるわけです。
git push
リモートリポジトリの状態が、 Oのローカルリポジトリと同じになりました。
これでOでの作業は終了です。 片付けをして帰りましょう。
さて、家に帰ってゆっくりする前に きょうの職場での作業でいくつか気になる点、 修正すべき点、 書き足す点があるとしましょう。 家でさきほどの作業の続きをします。
家ですでにこのプロジェクトの作業をしていたならば、 作業用ディレクトリはできていたでしょうので、 そのディレクトリ (naturalism/
) に移動します。 そして git pull
して、 新しい変更点(職場でおこなった変更点)をとりこみます。
家でこのプロジェクトをするのが初めてならば、 git clone
をして、 家のコンピューター(H)に作業ディレクトリを 作成します。
家でもできればブランチを切るのがいいでしょう。
いまのところ、 ブランチはローカルに限定されています。 家の作業ディレクトリから 職場の作業ディレクトリでつくったブランチにアクセスはできません。 ブランチをグローバルにする仕方は後日述べます。
Hでも test
というブランチを切ることとします — git branch test
。
このブランチで作業して、 add
して commit
(そしてメッセージを付加)します。 何度もいいますが、 「add
の意味がない」 — 「add
して commit
するより commit
だけでいいじゃん」 と思われるかもしれませんが、 ここは穏便に・オンビンに。 いうとおりにしてください。
そして、 作業がおわったら、 「幹」 (main
ブランチ)にもどって、 test
ブランチをマージしてください (もちろん cherry-picking ができるのが理想ですが、 それは後日・・・)。
git checkout main
git merge test
もし複数メンバーで作業をしているなら、 git pull
して、他の人が push
した変更をとりこみます そして、最後に git push
して、 自分の変更部分を、 github にあるリモート・リポジトリに押し込んで、 github を最新状況にします。
翌日、職場にでかけ、 まず (1) ローカルリポジトリを最新の状況にします — git pull
。 そして (2) 作業をはじめます。
さいごに作業結果を git push
してください。
その翌日・・・
というわけです。
これでとりあえず GitHub での仕事が可能だと思います。
まだ書いていないのは (a) add
と commit
の取り扱い、 とりわけ「心変わり」があったときのやり方、 (b) ブランチからいい所取りする cherry-pick のやり方、 そして、 (c) pull
したときに起こる可能性のある、 他の作業ディレクトリでの変更(あるいは他の人の変更)との 食い違いの修正の仕方です。
これらについては、後日述べます。
とにかく、こらまでの知識で git/github を使っての 論文執筆は可能になったと思いますので、 はじめてください。
もし複数のメンバーが参加するプロジェクトならば、 まず git pull
して、他のメンバーの作業をとりこむことになりますが、 それはまた後日に述べます。↩