$ sudo apt install git
$ sudo add-apt-repository ppa:git-core/ppa $ sudo apt update $ sudo apt install git
$ git config --global user.name "hoge" $ git config --global user.email "hoge@example.com"
–global
はデフォルトとして設定すること意味するため、以降は設定が不要になる (ただし、リポジトリ毎に異なるユーザ名とメールアドレスを使う場合はリポジトリ毎に、–global
を抜いて設定する。詳しくは使い方のリポジトリの作成を参照)。–global
を付けてしまった場合は、以下のコマンドで削除できる。$ git config --global --unset user.name $ git config --global --unset user.email
$HOME/.gitconfig
にも記述されているので、エディタで [user]
項目を編集することでも対処できる。$ mkdir REPOSITORY_NAME $ cd REPOSITORY_NAME $ git init
$ git config --global user.name "hoge" $ git config --global user.email "hoge@example.com"
$ git add FILE
FILE
: 登録したいファイル (ただし、add しただけでは登録されない) (複数指定可)$ git rm FILE
FILE
: 登録したいファイル (ただし、rm しただけでは登録されない) (複数指定可)$ git mv FILE RENAMED_FILE
FILE
: 名前の変更をしたいファイルRENAMED_FILE
: 変更後のファイル名$ git add -A
$ git reset HEAD FILE
FILE
: 取り消したいファイル (複数指定可)HEAD
は git Ver. 1.8.5 から @
に置き換えても良くなった。$ git status
??
: ファイルがこれまで登録されておらず、ステージングもされていないA
: ファイルの追加がある (add 済み)D
: ファイルの削除がある (rm 済み)R
: ファイルの名前変更がある (mv 済み)M
: ファイルの変更がある$ git commit
$ git commit -m 'MESSAGE'
MESSAGE
: コミットメッセージ$ git commit --file FILE
FILE
: コミットメッセージを読み込むファイルのパス$ git commit --amend
$ git log
–oneline
: 履歴を 1 行 1 コミットで表示–graph
: アスキーグラフで表示–p
: 差分を表示–stat
: 変更された行数を表示-2
直近の 2 コミットを表示 (数字は変更可)–decorate
: 現在の HEAD、ブランチ名、タグ名を表示HEAD
, @
(Ver. 1.8.5 から), コミットのハッシュ値で表現できる。HEAD
の後に ^
や ~
、^{n}
, ~n
を付けるか、コミットのハッシュ値で表現できるHEAD^
, @^
, HEAD^{1}
, HEAD~1
, @^{1}
, @~1
: 一つ前のコミットHEAD^^^
, @^^^
, HEAD^{3}
, HEAD~3
, @^{3}
, @~3
: 3 つ前のコミットCOMMIT
で表現する$ git reset --hard HEAD^
–hard
: 作業ディレクトリの内容も 1 つ前の状態に戻す (コミット内容と同じにする)–soft
: –hard
の代わりに与えるオプションで、作業ディレクトリの内容は維持するHEAD^
: 直前のコミットを示す$ git reset --hard ORIG_HEAD
$ git revert -m 1 MERGE_COMMIT
-m
で残す親を指定する。$ reset --hard COMMIT
COMMIT
以降に登録されたコミットが削除される$ git revert COMMIT
$ git rebase -i COMMIT
pick
: このまま維持reward
:edit
: 編集squash
: 直前のコミットに統合fixup
: squash
に加え、ログ自体からも破棄exec
:drop
: コミットの削除 (conflict が起こった場合、conflict を解消するために何度も質問される)$ git checkout COMMIT
$ git checkout -f COMMIT
$ git checkout COMMIT FILE
FILE
: 戻したいファイル$ git checkout -f COMMIT FILE
FILE
: 戻したいファイル$ git cat-file -p COMMIT:FILE1 > FILE2
$ git show COMMIT:FILE1 > FILE2
COMMIT
: コミットのハッシュ値FILE1
: 戻したいのファイルFILE2
: 保存先$ git tag "TAG"
TAG
: タグ名$ git tag -a "TAG" -m "TEXT"
TAG
: タグ名TEXT
: 注釈$ git tag "TAG" COMMIT $ git tag -a "TAG" -m "TEXT" COMMIT
$ git tag
$ git tag -d "TAG"
TAG
: タグ名$ git push origin --tag
$ git branch BRANCH_NAME
BRANCH_NAME
: ブランチ名$ git branch
$ git branch -d BRANCH_NAME
BRANCH_NAME
: ブランチ名$ git branch -D BRANCH_NAME
BRANCH_NAME
: ブランチ名$ git push origin :BRANCH_NAME
BRANCH_NAME
: ブランチ名$git branch -m BRANCH_NAME NEW_NAME
BRANCH_NAME
: 変更したいブランチ名NEW_NAME
: 変更後のブランチ名$ git checkout BRANCH_NAME
BRANCH_NAME
: ブランチ名master
$ git checkout -f BRANCH_NAME
BRANCH_NAME
: ブランチ名master
$ git checkout MERGED_BRANCH $ git merge MERGE_BRANCH
MERGED_BRANCH
: マージ先ブランチ (たいていは master)MERGE_BRANCH
: マージするブランチ–ff
オプションが適用されており、fast-foward のマージになる。,-D-E-F. -A-B-C--------`G-
-A-B-C-D-E-F-
$ git checkout MERGED_BRANCH $ git merge --no-ff MERGE_BRANCH
MERGED_BRANCH
: マージ先ブランチ (たいていは master)MERGE_BRANCH
: マージするブランチ$ git commit --amend --date='Fri Aug 28 00:00:00 2019 +0900'
Fri
: 曜日を金曜日に設定する (合ってないとこの項目は無視される)Aug
: 8 月に設定する28
: 28 日 (8月の) に設定する00:00:00
: 00:00:00 に設定する2019
: 2019 年に設定する。+0900
: タイムゾーンを +0900 に設定する$ git rebase -i COMMIT
pick
から edit
にするcommit –amend
で日時を指定する$ git rebase --continue
$ git remote -v
$ git remote set-url origin NEW_URL
NEW_URL
移行先の URL