git init から git push までおさらい

#よく使うGitコマンド（個人的に）
##●とにかく、作業開始前にブランチをつくる(なるべくmasterブランチ開発はしない)
 → git branch(今のブランチ、他のブランチの存在確認)
 → git branch <任意のブランチ名> 
または
 → git checkout -b <任意のブランチ名> 
または
 → git branch <任意のブランチ名> origin <remoteの元にしたいブランチ名>

●ブランチを切り替える
  → git branch(今のブランチ、他のブランチの存在確認)
  → git checkout <切り替えたいブランチ名>

##●よし、キリのよいとこで変更差分（作業）を保存しよう　
　→ git add . (変更分全部をワークツリーからステージングへ）
　→ git status(確認)
●やべ、やりなおそう
　→ git reset HEAD （git add を取り消す、ワークツリー状態に戻る）
　→ git status(確認)
##●add（ステージング）したからコミット（保存）しよう
　→ git commit -m "任意のコミットメッセージ"
　→ git status(確認)
　→ git show(確認) qキー で終了
●やべ、やりなおそう
  → git reset --hard HEAD^
##●よし、リモートブランチにプッシュしよう
　→ git push origin master(local作業ブランチ名)　master(remote先ブランチ名)
  → git push origin HEAD

#gitで作業を保存する
gitのリポジトリを作成し、githubのリモートリポジトリにプッシュする

```Go:ターミナル/ローカルでリポジトリ作成

//作業ディレクトリでコマンド実行
%git init
//結果.gitディレクトリ生成　以下OK
Initialized empty Git repository in /Users/user/StaticSiteGeneratorBlog/.git/

//.gitディレクトリ生成を確認
%ls -a
.	..	.git	BLOG

//gitconfig設定　githubと合わせておく
%git config --global user.name "ユーザーネーム"
%git config --global user.email "githubで使用するメールアドレス"

//git設定の確認
%git config -l
//結果
user.name=***********
user.email=***********@gmail.com

//ssh接続用の公開鍵、秘密鍵生成コマンド
%ssh-keygen -t rsa
//Enterキーを押します* 3

//.sshディレクトリに鍵が生成できているか確認
//移動 
%cd ~/.ssh/  (←/Users/user配下の隠しディレクトリ.ssh)
//隠しファイルも表示
%ls -a
//結果
id_rsa          (←秘密鍵)
id_rsa.pub      (←公開鍵・これをGithub側に登録する)	

//githubに公開鍵をコピペする
//catコマンドで公開鍵を見る
%cat id_rsa  (.sshディレクトリ以外から実行する場合 cat ~/.ssh/id_rsa)

//なが〜い公開鍵暗号テキストをコピーしておく
ssh-rsa *****........

//github に移動
URL: github.com/setting/keys
github>setting>SSH and GCP keys>New SSH keyボタンを押す

titleを入力する
keyに公開鍵をペーストする
>Add SSH keyボタンを押す

//ローカルとgithub（リモート）の疎通を確認するコマンド
%ssh -T git@github.com
//結果
Hi ************! You've successfully authenticated, but GitHub does not provide shell access.
```

##リモートリポジトリの作成
githubブラウザ>マイページ上部のRepositories>上部右側のNewボタンを押す

Create a new repositoryページで任意のリポジトリ名を決める
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/355c7001-ff70-a2e5-204f-9dbbc15d99ce.png)

Create repositoryボタンを押すと
リポジトリページが作成される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/671bd90e-ecc3-d386-6d51-394946b052b5.png)





```Go:/Users/user/Blog
//リモートリポジトリのURLを追加 "origin"にリポジトリ先を登録する
//URLはブラウザからコピーして、新しく作りたいリモートリポジトリ名"ssg_blog"を書き足す
Blog%git remote add origin https://github.com/**********/Hugo-Blog

//リモート確認
Blog%git remote
//結果
origin

//リモートoriginの設定状態
Blog%git remote -v
//結果
origin	https://github.com/**********/Hugo-Blog (fetch)
origin	https://github.com/**********/Hugo-Blog (push)

```

## ローカルの作業差分をコミットまで（プッシュの直前まで）

```Go:/Users/user/Blog
//ローカルの作業状況確認
//作業ディレクトリで
Blog%git status
//結果
On branch master
No commits yet
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        archetypes/
        config.toml
nothing added to commit but untracked files present (use "git add" to track)
　ーーー翻訳ーーー
ブランチマスターについて
まだコミットはありません
追跡されていないファイル：
   （「gitadd <file> ...」を使用して、コミットされる内容に含めます）
        archetypes/
        config.toml
コミットに何も追加されていませんが、追跡されていないファイルが存在します（追跡するには「gitadd」を使用してください）

//BLOGというディレクトリ作成状況がワーキングツリーにあるので git add でステージングします
Blog%git add /Users/user/StaticSiteGeneratorBlog/BLOG 
Blog%git status
//結果
On branch master
No commits yet
Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   archetypes/default.md
        new file:   config.toml
ーーー翻訳ーーー
ブランチマスターについて
まだコミットはありません
コミットする変更：
   （「gitrm --cached <file> ...」を使用してステージングを解除します）
         新しいファイル：archetypes / default.md
         新しいファイル：config.toml


//ステージングからローカルリポジトリにコミットする
//コミットメッセージ付きでコミットする
Blog%git commit -m "hugo new site Blogしたところまで" 
//結果
[master (root-commit) 7c66fd3] hugo new site Blogしたところまで
 2 files changed, 9 insertions(+)
 create mode 100644 archetypes/default.md
 create mode 100644 config.toml

//確認
%git status
//結果
On branch master
nothing to commit, working tree clean  //OK

//コミットできたか
%git show
//結果
commit 7c66fd3440a2db1c404de664254b0c634b88f7a9 (HEAD -> master)
Author: Sakagami-Keisuke <iwayasunset@gmail.com>
Date:   Sun Jan 3 15:22:15 2021 +0900

    hugo new site Blogしたところまで

...........OK

```

##リモートリポジトリにプッシュする
今回は作業ブランチを作らずにローカルmasterブランチ→リモートmasterブランチにプッシュ

```Go:ターミナル
//ローカルブランチ名確認
%git branch
//結果
* master　　（←作業ブランチつくらなかったのでmaster）

//リモートリポジトリ（ssg_blog）のmasterブランチにPUSH
//origin=https://github.com/**********/ssg_blog (push)

%git push origin master:master
           宛先　　ローカル：リモート
//結果OK
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 4 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (5/5), 501 bytes | 501.00 KiB/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To https://github.com/Sakagami-Keisuke/HugoBlog.git
 * [new branch]      master -> master 
```
プッシュできました
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617331/29016f16-ab2a-6f24-efdb-7fdf0d987f32.png)




以降のプッシュは

```Go:ターミナル
%git push origin HEAD　or  %git push origin master
//結果
Everything up-to-date
```