やったことを自分なりにメモしたりまとめたりしてみたものをのせます
走りメモのようなところもあるので、わかりづらい箇所あらばご容赦下さい。
事前準備
VS CODE入れる
考え方
リモート Github (リポジトリサーバー) ←こっちが本体
↓まるまる持ってくる
ローカル Git (自分のPC上) ←開発は基本こっちでやる
(リモートで作業するパターンと、ローカルでやるパターン、どっちもできはする)
リモートはWebサイト(ブラウザ上)でやる制約がある
git 使うコマンド
git clone
1回目のリモート⇒ローカルに丸々もってくることを Clone と言う
(一番最初しか使わない ・リポジトリから落とす)
git pull
予めCloneしているものを落とすこと。
git push
ソースコードあげといて、プッシュ。
ブランチの考え方(コミット、プッシュ、マージ)
開発は複数人でやることになる
そのままやると競合とかでグチャグチャにならないの?
↓
回避策で ブランチ (branch) がある
例えば作業者 Aさん、作業者Bさんがいる時での流れでの例
【main】 Main(ベースリポジトリ) ←大元のソースコード これを丸々コピー
2,
・Aさん作業(ブランチ)←Aさんはこれをいじる a.txt作成 (1機能単位とかで触るイメージ)
・Bさん作業(ブランチ)←Bさんはこれをいじる b.txt作成
3,
Aさんが a.txtをマージ(統合)した後に
Bさんが a.txt b.txt をいじった場合
↑Aのファイルはコピーしてきたときと違う為マージできませんと出ます
Bさんは「もう一回 mainブランチを元に最新化してください」と言われます
4,
git add .
( or git add ファイル名
) でローカルを完了させて
git pull
で最新化させる
→Aさんの変更が取り入れます
→いい感じにしてくれる
うまくいけば(※)[マージ後]にまとまり、二人の作業が一緒になる。
※上手くいくとき、上手くいかないとき がある
上手くいかないとき:コンフリクト(競合)
→こうなったら、手動で直すしかない
1個づつソースコードの行単位で どっちが正しいか、YES・NOでどっちを正しいチェックできる
競合直しました→ 差分認識できたので、main統合して大丈夫ですよってなる
コンフリクト画面
|Aさん変更|手動で直したやつ|Bさんが直したやつ|
↑でどっちが正しいかポチポチして進めることができる
最終的に真ん中が本物になる
プルリクエストでメインに統合させる必要がある
これをすることで競合が起きないようにしている
コミット
変更した単位 ユーザーでアップしたもの
Github でやってくれる
上手くいくとき とはどんな時?
プログラムはブロック単位で定義されている
最上部
・近いところ ← 同じブロックならエラー出る
・同じところ ← 200%コンフリクトなる
いいなと思った参考
・git を初めて使う時 コミット→プッシュ→マージ の流れ
https://qiita.com/yukiyoshimura/items/7aa4a8f8db493ab97c2b
GIT Command
ローカルでやる時、↓のどっちかでできる。
① コマンドを打つ (ターミナル、cmd など
② Soucetreeなどツールを使って(GUI上でやる)
基本使うコマンド
git clone
git commit
git add
git pull
git push
git swich
git branch
git checkcout
git clone
ローカルフォルダに持ってくるコマンド。
【使い方】
git clone ${リポジトリーのパス}
git pull
【リモートで1個ファイルを引っ張ってくる。】
他の人が追加したファイルを入れることができる。
(自分がいるブランチに持ってきてくれる)
git pull origin main ←オリジンはリモートの事。
git push
ローカルで編集したものをリモートにアップする方法
git push
※ただし、他の人がアップしたものと同じところをいじってる場合
コンフリクトエラー(競合エラー)になる
リモートにあるのが正義
ローカルは2番目に優先されるものとする
同じファイルで差分が出た場合は、リモートを正となる
なので、先にgit pull で持ってこないといけない
コンフリクト時は「マージエディター」をすることで調整ができる
git commit
ローカルで編集すると「ファイル変更されてますよ」って出る(VS CODEなら[U]?だかの表示が出る)
それをリモートに上げるかどうかはこっちで指定する必要がある
確定できるよーっていうのを言うこと
git commit -m "ローカルで編集したよ"
↑こんな感じにすればメモも追加できる
これで変更確定
ただこれだけだと、この場合エラーになる
変更確定をgitに教える必要がある
そういうとき!↓
git add
git add . ←全部確定
git add test5.txt ←このファイルだけ確定となる
その後、
commit -m "ローカル編集したよ"
ここまではローカルで変更反映しているだけ
この後pushする必要ある
git push
で、リモートリポジトリーへアップできる。
git branch //枝分かれで、リモートのものを落とせる
git branch -r //←リモート上のものをまとめておとせる
git branch hoge //←hogeってフォルダができる
//↑ main のものをhogeに枝分かれしたもの
hogeで作業したいそんな時!
git switch
git switch hoge
でhogeブランチに移動できる (ローカルの話)
ただ、この状態は
git branch -r
で見ると 、リモート側にはhogeが無い
現在自分のいるブランチのみを見ている
ブランチはgit pullをしても、新しいのをもってきているわけでない
じゃあその時、リモートのブランチを使いたい時
git checkout
git checkout remote-branch //リモートから持ってきて、かつ移動できる(今から作業するようになる)
git fetch //←全部持ってきてくれる はず
ブランチがしたい時
(事前にClone済みでの話)
VS CODE上でCloneしたディレクトリ内で sera.txt を追加し、このファイル右に「U」が出てる状態から
git branch -r //←リモートのブランチが見れる
git branch test-sera
//今いるブランチから、ブランチを作る (mainから作るのが普通)
//仕事でやるなら、mainから派生することが多い
git switch
git add . //←ファイル全部
git add sera.txt //UがAになる
git commit -m "せら はじめての コミット" // コメントをつけてコミット
git pull origin ブランチ名 //ここでファイルをリモートリポジトリーにアップする
ブラウザでGit.hub開いて
いじっているリポジトリーに移動
プルリクエストを確認
プルリクエストの画面で
「pull Request」 ⇒ 「Confiorm ~」とか出るとOK
うまくいっていれば、ブラウザ上で
「sera.txt」がアップされているはず!
これでブランチ→編集→comit→pullが完了となる。