Gitコマンド のバックアップソース(No.1)

#author("2019-12-21T00:29:20+09:00","default:k1rou","k1rou")
*Gitコマンド [#z36d34e7]

**Gitの設定 (config コマンド) [#ra705d1c]
-種別の指定(設定範囲)
--システム全体(--system)

--ユーザーの全リポジトリ(--global )
---ユーザーのホームディレクトリの.gitconfig に設定が書き込まれる。

--ローカルリポジトリのみ(--local)
---ローカルリポジトリの.git/config に設定が書き込まれる。

-設定を確認する
--設定を一覧表示(--list)
 git config --system --list
 git config --global --list
 git config --local --list

-設定を変更する
 git config [種別] user.name "[ユーザー名]" ※英字[Firstname Familyname]表記
 git config [種別] user.email [メールアドレス]

 git config [種別] push.default simple ※デフォルト(Git2.0以降)

 git config [種別] core.editor [エディタの起動コマンド]

**ローカルリポジトリ上のみの操作 [#m4f6cdfd]
-init
--Gitリポジトリを新規作成する。
--.git ディレクトリが作成される。
 git init
 git init [ディレクトリ]

-status
--状態を確認する
 git status

-add
--ローカルレポジトリにファイルを追加する。
--.git/index にファイルが追加され、リポジトリの管理対象になる。
 git add [ファイルのパス]
 git add . ※全てのファイル

-rm
--.git/index に追加されたファイルを削除する。
--ファイルをリポジトリとワーキングコピーから削除する。
--.git/index に追加後にコミットしていないファイルを削除する場合は--cached を指定する。
 git rm --cached [ファイルのパス]

-mv
--ファイルを移動、またはファイル名を変更する。

-commit
--ローカルレポジトリの変更をコミット(確定)する。
--.git/index に追加されている内容がコミット対象になる。
--「commit -m "xxx" -a」※"-a"は変更の自動検出あり
 git commit
 git commit -m "comment"

-reset
--commitを取り消す。

-checkout
--現在のブランチを指定したブランチに変える。
---変更したファイルや追加したファイルがある場合、それらはブランチを変えても移動先に残る。
---移動先のブランチの同じファイルに別の変更があった場合はcheckoutが失敗する。この場合、stashで変更を退避してからcheckoutする。
--タグを指定した場合、指定したコミットの状態のブランチが作成される
 git checkout [ブランチ名]

-merge
--分岐していないブランチ間で、現在のブランチ(古い方)に、ブランチの変更(新しい方)を反映する。
---新しいコミットを作らない場合(Fast-forward:デフォルト)※直列の状態は変わらない(新しい方のブランチまでのコミットが何か分からなくなる)
 git checkout [古い方のブランチ名]
 git merge [新しい方のブランチ名]
 git merge -ff [新しい方のブランチ名]
---新しいコミットを作る場合、no fast-forwardオプションを指定する。※分岐して合流した状態になる(新しい方のブランチのコミットが分岐した形で残る)
 git checkout [古い方のブランチ名]
 git merge --no-ff [新しい方のブランチ名]

--分岐しているブランチ間で、現在のブランチに、分岐している他のブランチの変更を反映する。※新しいコミット(マージコミット)が作られる
--mergeコマンドで指定したブランチの変更を取込む。
 git checkout [反映先のブランチ名]
 git merge [反映元のブランチ名]

-rebase
--コミットの内容を変更する。(メッセージ、順序、統合)
--分岐しているブランチ間で、現在のブランチの変更を、分岐している他のブランチに反映する。※新しいコミット(マージコミット)が作られる
 git checkout [反映元のブランチ名]
 git rebase [反映先のブランチ名]

-log
--コミットログを確認する

-diff
--差分を確認する。
--ワーキングコピーと.git/index の差分
 git diff

-tag
--タグを作成する

-stash
--変更を一時的に退避する。
 git stash
 git stash save
 git stash save [コメント]
--退避した変更を一覧表示する。
 git stash list

**リモートリポジトリとの操作 [#r5f09c52]
-clone
--サーバ上のレポジトリをローカル環境にコピーする。
--取得するレポジトリはURL形式で指定する(末尾が.git)
 git clone [URL]
 git clone [URL] [Target-Directory]
--指定したURLまたはTarget-Directoryの末尾の".git"を除いた名前のディレクトリが作成される。中には".git"ディレクトリが作成されてリポジトリがコピーされるのと、最新のファイル類がチェックアウトして格納される。

-remote
--リモートリポジトリの登録を確認
 git remote -v
 git config remote.origin.url
--リモートリポジトリを登録(ロカルリポジトリをリモートに送る前の処理)
 git remote add origin [URL]
--リモートリポジトリを変更
 git remote set-url origin [URL]


-pull
--サーバ上の変更をローカル環境に反映(マージ)する。

-push
--ローカルレポジトリでコミットした変更をサーバに送る。
 git push [リモート名] [ブランチ名]
---リモートリポジトリに変更があった場合は、リモートリポジトリの変更を取込んでからpushする必要がある。(取込まずにpushすると、リモートリポジトリの変更が失われる)
--例:サーバ上のmasterを更新する
 git push -u origin master

-branch
--ブランチを確認する。
---ローカルレポジトリ
 git branch
---リモートレポジトリ
 git branch -r
---ローカルとリモートの両方
 git branch -a

--ブランチを作成する。
---現在のブランチから新しいブランチを作成する。
 git branch [新しいブランチの名前]


**その他 [#f5da8ab6]
-reflog

**関連用語 [#k3fe91b8]
-[[Git]]