Git: Difference between revisions
From Mintarc Forge
No edit summary |
|||
| Line 238: | Line 238: | ||
$ git switch master | $ git switch master | ||
</pre> | </pre> | ||
nweFile中身を見てみると、「feature1」「feature2」のどちらの変更点も反映されていないことがわかる。<br/> | |||
===マージとは=== | ===マージとは=== | ||
Revision as of 06:18, 3 June 2026
<< ひよっこ書庫
Gitに触れてみた記録
2026/05/21 Git bash
参考にした動画:https://youtu.be/cyOTQzI2AFU?si=CJSALJrGVrLPr3co
VCcode、Git bashをインストールした。
あらかじめ
デスクトップにバージョン管理したいファイル(今回は「GitTest」)を作成しておいた
もちろんファイルの場所はどこでも可
ユーザー名設定(初期設定)
$ git config --grobal user.name '任意の名前'
メールアドレス登録設定(初期設定)
$ git config --grobal user.email メールアドレス
GitTestへ移動(ディレクトリ移動)
$ cd /c/Users/makko/Desktop/GitTest
バージョンしていくファイルを作成
GitTestフォルダ直下になにかしらのファイルを作成
今回は「newFile」という名前のテキストファイルにした
テキストファイル中に「これは新しいファイルです」と入力し、改行して上書き保存して×とじ
リポジトリに登録への道①~ワークツリーに登録~
ワークツリー → ステージング → リポジトリ
「リポジトリ」に登録できたらバージョン管理ができる
$ git init
「この GitTest というファイルの中身をバージョン管理していきますよ」をこのコマンドにより知らせた。
実行したことで GitTest フォルダの中に .git という隠しフォルダが作られた。
(隠しフォルダも表示されるようにあらかじめ設定したので、今回は見えている)
この .git フォルダの中には実際にバージョン管理されているファイルの記録や変更点の記録が保存されていく。
※まだこの時点ではバージョン管理されていない
隠しフォルダも見えるようにする設定
hさhdjhkdhsdhjか
2026/05/26 Git bash
参考にした動画:https://youtu.be/cyOTQzI2AFU?si=CJSALJrGVrLPr3co
5/21の続き。
まずは GitTest フォルダに移動
$ cd /c/Users/makko/Desktop/GitTest
リポジトリに登録への道②~newFileをステージングに追加~
リポジトリに登録への道①ではまだ、ワークツリーに登録された状態
ワークツリー → ステージング → リポジトリ
「リポジトリ」に登録できたらバージョン管理ができる
$ git add newFile.txt
リポジトリに登録への道③~リポジトリに追加~
リポジトリに登録への道②ではまだ、ワークツリーに登録された状態
ワークツリー → ステージング → リポジトリ
「リポジトリ」に登録できたらバージョン管理ができる
$ git commit -m "初めてのコミット"
-mのあとはどういう変更点を加えたのかわかるようにコメントを書く
※これでバージョン管理ができる状態になった!
nweFileに新しい行を追加してみる
テキストファイル「newFile」を開いて、
「新しい行を追加」と入力し、改行して上書き保存して×とじ。
git statusコマンドで状態を確認してみると...
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: newFile.txt
no changes added to commit (use "git add" and/or "git commit -a")
「modified」と出てきているので
newFileに対して何から変更が加わってるのが確認できる。
ここで再度ステージング&リポジトリに書き込みを行う
ステージング
$ git add .
リポジトリに書き込む(=コミットする)
$ git commit -m "新しい行の追加"
これでnewFileに対する変更をさらに書き加えることに成功した。
これまでのコミット(変更点)を確認する
「git log」コマンドでこれまでどのようなコミットをしてきたのか確認する
$ git log
commit c049436e84acc752b875fa98a629467d0b6ec321 (HEAD -> master)
Author: makoto <araheu15akim@gmail.com>
Date: Tue May 26 08:02:50 2026 +0900
新しい行の追加
commit 4aa851f08a6abf5ae22e956b377caaebac437166
Author: makoto <araheu15akim@gmail.com>
Date: Tue May 26 08:00:48 2026 +0900
初めてのコミット
ではここで
newFileを開いて「消される運命にある一行」と入力し,改行して上書き保存して×とじ
ステージングしてコミットする前に、そもそも前回自分が書き込んだ内容と、現在変更した内容との変更点(=差分)を確認してみよう
$ git diff diff --git a/newFile.txt b/newFile.txt index 1c90f50..7529f41 100644 --- a/newFile.txt +++ b/newFile.txt @@ -1,2 +1,3 @@ これは新しいファイルです 新しい行を追加 +消される運命にある一行
「+消される運命にある一行」この一行が追加されたことがわかる
やっぱり前のバージョンに戻したい!
戻したいときは、ステージングとコミットをせず「git restore」をする
$ git restore newFile.txt
実際にnewFileを開いてみると、「消される運命にある一行」が消えている
ブランチとは
枝分かれさせる
大元を壊すことなく、枝分かれさせて、開発して、テストでうまくいけば大元に結合する。
原本ををコピってローカルでいじる的な。
今ある&選択されているブランチを確認する
$ git branch * master
現在選択されているブランチは「master」である。そして
master以外のブランチは存在しないことがわかる
ブランチを作成する
「feature1」「feature2」二つのブランチをつくろう
$ git branch feature1 $ git branch feature2
今ある&選択されているブランチを確認する
$ git branch feature1 feature2 * master
現在選択されているブランチは「master」である。そして
masterのほかに「feature1」「feature2」のブランチがあることがわかる
ブランチを切り替える
$ git switch feature1
これで master → feature1 へ切り替わった。
念のため今いるブランチを見てみると...
$ git branch * feature1 feature2 master
feature1の状態でnewFile内に変更を加える
newFile内に「ブランチfeature1で行を追加」と入力し,改行して上書き保存して×とじ
feature1の変更点をコミットまでする
$ git add . $ git commit -m "feature1の変更点"
(注意)この変更点はfeature1のブランチに対して"だけ"行われている
feature1 → feature2に切り替え
$ git switch feature2
feature2の状態でnewFile内に変更を加える
newFileを開くと、先ほどの「feature1」での変更点は反映されていないことがわかる。
newFile内に「ブランチfeature2で行を追加」と入力し,改行して上書き保存して×とじ
違う種類の変更も加えてみる。
GitTestフォルダ直下に新しいテキストファイル「feature2file」を作成。
feature2の変更点をコミットまでする
git add . $ git commit -m "feature2の変更点"
masterのブランチに戻って、どうなってるか見てみる
$ git switch master
nweFile中身を見てみると、「feature1」「feature2」のどちらの変更点も反映されていないことがわかる。
マージとは
分岐させて行った作業を合体させる
feature1をmasterにマージ
※マージするときはメインのブランチ(今回でいうとmaster)に居てること確認してから行う
$ git merge feature1
$ git merge feature1 Updating c049436..86960d3 Fast-forward newFile.txt | 1 + 1 file changed, 1 insertion(+)
ここでnewFile中身を見てみると...
3行目にfeature1の変更点が追記されている!
続いてfeature2をmasterにマージ
$ git merge feature2 Auto-merging newFile.txt CONFLICT (content): Merge conflict in newFile.txt Automatic merge failed; fix conflicts and then commit the result.
するとfeature1をマージした時とは違う結果になっている。
なにかというと「CONFLICT」(=衝突)が起きている
「CONFLICT」(=衝突)
なぜかというと異なるブランチで「同じファイルの同じ行」を触ったから
どっちの変更点を優先すればよいのかわからず衝突を起こしている
どうするのか
結論、手動でなおす
newFile.txtの中身↓
これは新しいファイルです 新しい行を追加 <<<<<<< HEAD ブランチfeature1で行を追加 ======= ブランチfeature2で行を追加 >>>>>>> feature2
faeture2の変更点を優先したければ、feature1の変更点の部分を削除。あと不要な文字列も削除。これで上書き保存
ちなみに、「GitTest」フォルダ直下の「feature2file.txt」ファイルは衝突を起こしてないので普通に居る(faeture2の変更点が正常に反映されている)
最後に変更を記録する
$ git add . $ git commit -m "完成"
これで2つのブランチの統合が終わった。
ブランチがまだ残っているよね
見てみると
$ git branch feature1 feature2 * master
不要なブランチを消そう
$ git branch -d feature1 $ git branch -d feature2
feature1,feature2が消えたか確認
$ git branch * master
「master」しか存在してないので正常に削除できた。
<< ひよっこ書庫
