【Git】
Gitのインストールはインターネットで「git for windows」と検索して一番上に出てきたところをクリック
※ https://gitforwindows.org/
【VS Code】
VS Codeのインストールは下記から
https://code.visualstudio.com/download
Gitbashに利用するエディタを登録する。
今回はVS Codeを利用するので、ダウンロード時のパスを記載して登録
git config --global core.editor "'C:\Users\<ユーザ名>\AppData\Local\Programs\Microsoft VS Code\bin\code' --wait"
【treeコマンド】
ホームディレクトリ直下に.bashrc
ファイルを作成。そのファイルに下記を記載。
alias tree='cmd //c tree //A //F'
GitBashを再起動で反映。
【ユーザ名登録、確認】
git config --global user.name "<GitHubに登録したユーザ名>"
git config user.name
【emailの登録、確認】
git config --global user.email <GitHubに登録しているEmailアドレス>
git config user.email
【editorの登録、確認】
git config --global core.editor "'C:\Users\<ユーザ名>\AppData\Local\Programs\Microsoft VS Code\bin\code' --wait"
git config core.editor
【登録情報をすべての項目確認】
git config --list
設定ファイルの確認の場合は
pwd
cat ~/.gitconfig
GitBashを開き、プロジェクトのディレクトリに移動する。そして、下記コマンドを実行。
$ git init
Initialized empty Git repository in C:/Users/<ユーザ名>/GitHub/<プロジェクト名>/.git/
すると、.git
ディレクトリが作成される。
***@DESKTOP-M7K4QV7 MINGW64 ~/test1 (master)
$ ls -al
total 8
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 ./
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 ../
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 .git/
$ ls -al .git
total 11
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 ./
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 ../
-rw-r--r-- 1 toshi 197609 23 Oct 18 19:28 HEAD
-rw-r--r-- 1 toshi 197609 130 Oct 18 19:28 config
-rw-r--r-- 1 toshi 197609 73 Oct 18 19:28 description
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 hooks/
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 info/
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 objects/
drwxr-xr-x 1 toshi 197609 0 Oct 18 19:28 refs/
下記実行することでリモートリポジトリからローカルにワークツリーとローカルリポジトリをコピーされる。
$ git clone <リポジトリ名>
では、実際にやってみる。
まずは、GitHubからコピーしたいRepositoryを選んで、クローンのURLをコピー
例
[https://github.com/<User.name>/<リポジトリ名>.git](https://github.com/<User.name>/<リポジトリ名>.git)
ローカルに新規にディレクトリを作成して、移動する。
$ pwd
/c/Users/<ユーザ名>/GitHub/keisan_response
さきほどGitHub上でコピーしたURLを張り付ける
$ git clone https://github.com/<ユーザ名>/<リポジトリ名>.git
Cloning into 'keisan_response'...
remote: Enumerating objects: 80, done.
remote: Counting objects: 100% (40/40), done.
remote: Compressing objects: 100% (40/40), done.
remote: Total 80 (delta 15), reused 0 (delta 0), pack-reused 40
Receiving objects: 100% (80/80), 1.30 MiB | 10.49 MiB/s, done.
Resolving deltas: 100% (29/29), done.
$ git add <ファイル名>
$ git add <ディレクトリ名>
$ git add . ←全部追加する場合
ステージの内容をスナップショットでリポジトリに記録する場合
$ git commit
$ git commit -m "<メッセージ>" ←エディタを立ち上げない場合
$ git commit -v ←ファイルへの変更内容を見てからコミットしたい場合
git commit
とターミナルに打つと、エディタが立ち上がるので、変更理由を記載して保存&エディタを閉じる。
そしてターミナルに戻ると、下記のように変更された旨が記載されている。(今回は変更理由を「initial commit」をした」
$ git commit
[master (root-commit) a2605d6] initial commit ←エディタに記載した変更理由
1 file changed, 1 insertion(+) ←1ファイルと1行が追加された旨
create mode 100644 index.html
コマンドはgit status
を打つ。
①ステージのインデックスとワークツリーの情報を比較することで、前回ステージに追加してからローカルで変更した差分が確認できる。
②リポジトリとステージのインデックスを比較することで、前回コミットしてからステージに追加されたファイルの差分を確認できる。
【何も変更が無い場合】
MINGW64 ~/test1 (master)
$ git status
On branch master
nothing to commit, working tree clean
【ワークツリーで編集】
エディタを開いてindex.htmlを編集して保存した後に差分を確認する。
$ 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: index.html ←変更があったファイル名
no changes added to commit (use "git add" and/or "git commit -a")
【ステージに追加】
$ git add index.html
$ git status
On branch master
Changes to be committed: ←commitすべき変更がある旨が記載されている
(use "git restore --staged <file>..." to unstage)
modified: index.html ←変更があったファイル名
【commit】
$ git commit
[master 4e3e8ce] git statusコマンドを追記
1 file changed, 1 insertion(+)
$ git status
On branch master
nothing to commit, working tree clean
commitしたので、commitすべき変更が無い旨が記載されている。
【git add する前の変更分】
ワークツリーとステージのインデックスとの差分
$ git diff
$ git diff <ファイル名>
【git add した後の変更分】
ステージとリポジトリとの差分
$ git diff --staged
【git addする前の変更差分】
index.htmlファイルをエディタで編集して保存した状態から下記を実行
$ git diff
diff --git a/index.html b/index.html
index 306985e..c99fae3 100644
--- a/index.html
+++ b/index.html
@@ -1,2 +1,3 @@
<h1>Gitチュートリアル</h1>h1>
<p>git status</p>
+<p>git diff</p> ←変更差分
【git addした後の変更分】
$ git add index.html
$ git diff
何も表示されない。git diffコマンドはワークツリーとステージとの差分確認するコマンドだから。
ステージとリポジトリとの差分確認は下記の--staged
オプションをつけて実行する。
$ git diff --staged
diff --git a/index.html b/index.html
index 306985e..c99fae3 100644
--- a/index.html
+++ b/index.html
@@ -1,2 +1,3 @@
<h1>Gitチュートリアル</h1>h1>
<p>git status</p>
+<p>git diff</p> ←変更差分の箇所が記載されている
commitした後にgit diff
とgit diff --stafed
を実行しても何も表示されない
$ git commit
[master 64d26f1] git diffを追記
1 file changed, 1 insertion(+)
****@DESKTOP-M7K4QV7 MINGW64 ~/test1 (master)
$ git diff
***@DESKTOP-M7K4QV7 MINGW64 ~/test1 (master)
$ git diff --staged
ステージに追加したり、commitしたりする場合は事前に変更差分を確認する癖をつけよう。
$ git log
#1行で表示する場合
$ git log --oneline
#ファイルの変更差分を表示する
$ git log -p <ファイル名>
#表示するコミット数を制限する
$ git log -n <コミット数>
$ git log
commit 64d26f180b110c76a8e5647fa6a233f9ab8c0abe (HEAD -> master)
Author: <ユーザ名> <***********@gmail.com>
Date: Thu Oct 19 00:33:41 2023 +0900
git diffを追記
commit 4e3e8ce45e3d41e34222613eda7750dec8a850c7
Author: <ユーザ名> <***********@gmail.com>
Date: Thu Oct 19 00:21:29 2023 +0900
git statusコマンドを追記
commit a2605d66d64815b94ff3a1d0955cfdf81723b515
Author: <ユーザ名> <***********@gmail.com>
Date: Wed Oct 18 23:08:43 2023 +0900
initial commit
【ファイルごと削除する場合】
commitされたGitから削除されるとともに、ワークツリーのファイルも消える。
$ git rm <ファイル名>
$ git rm -r <ディレクトリ名>
【ファイルを残したい場合】
commitされたGitから削除するが、ワークツリーのファイルは残したい場合には下記を実行する。
$ git rm --cached <ファイル名>
ommitされたGitから削除されるとともに、ワークツリーのファイルも削除したい場合
【ワークツリー上のファイルを削除する】
$ ls
index.html
$ git rm index.html
rm 'index.html'
$ ls
←ワークツリーから削除されている。
$ git status
On branch master
Changes to be committed: ←commitすべき情報がある旨
(use "git restore --staged <file>..." to unstage)
deleted: index.html ←変更差分
削除された情報がステージにあげられている。
【元に戻す方法】
削除されたファイルをもとに戻す方法
$ git reset HEAD index.html
Unstaged changes after reset:
D index.html
$ ls
←ワークツリーから削除されている
$ git status
On branch master
Changes not staged for commit: ←ステージからも削除されている
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
deleted: index.html
no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout index.html
Updated 1 path from the index
$ ls
index.html ←復活
$ git status
On branch master
nothing to commit, working tree clean
commitされたGitから削除するが、ワークツリーのファイルは残したい場合
【削除する変更をステージに追加する】
$ git rm --cached index.html
rm 'index.html'
$ ls
index.html ←ワークツリーには存在している
$ git status
On branch master
Changes to be committed: ←commitする変更がある旨
(use "git restore --staged <file>..." to unstage)
deleted: index.html ←削除する変更がステージに追加されている
Untracked files: ←リポジトリに削除されたのでワークツリーに新規ファイル(追跡されていない)ファイルが存在している旨
(use "git add <file>..." to include in what will be committed)
index.html
【元に戻す】
$ git reset HEAD index.html
$ git status
On branch master
nothing to commit, working tree clean
$ ls
index.html
$ git mv <旧ファイル> <新ファイル>
$ git mv index.html index2.html
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: index.html -> index2.html
$ git mv index2.html index.html
$ git status
On branch master
nothing to commit, working tree clean
自分が開発したコードをチームのメンバと共有したいときや、ローカルの内容をGitHubに保存したいときに、commitしてからGitHubにプッシュする。
【リモートリポジトリを新規追加する】
$ git remote add origin <URL>
originというショートカットでurlのリモートリポジトリに登録する、という意味。
これをすることで、毎回URLを記載しなくてもこの名前で登録することが簡単になる。
※originは、リモートリポジトリからクローンしてきた際に元ファイルを慣例的にoriginとされている。
【リモートリポジトリへ送信する】
$ git push <リモート名> <ブランチ名>
$ git push origin master
「Settings」 > 「Developer Settings」 > 「Personal access tokens」
から、各種項目に情報を入力するとトークンが発行される。
発行されたトークンはメモする。(流出しないように)
「Your profile」 > 「Repositories」から新規作成
作成されたら、画面に「.. or push an exisiting repository from command line」と記載された欄にあるコマンドをコピーし
GitBashに貼り付け実行する。下記のようになっているはず。
$ git remote add origin <URL>
$ git push -u origin master
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント