Skip to content

Instantly share code, notes, and snippets.

@shiro01
Last active August 27, 2022 05:16
Show Gist options
  • Save shiro01/0f61c6aaf451128958d6cb8692f77528 to your computer and use it in GitHub Desktop.
Save shiro01/0f61c6aaf451128958d6cb8692f77528 to your computer and use it in GitHub Desktop.
Gitメモ
### ブランチ
ブランチの作成と同時にチェックアウト(ブランチ切り替え)
$ git checkout -b bugFix
作成するだけの場合
$ git branch issue1
現在のブランチ確認(*がついているブランチが現在のブランチ、-aをつけると追跡中のリモート含め表示)
$ git branch
削除対象のブランチ以外にチェックアウト
$ git checkout master
現在のブランチ確認
$ git branch
ローカルで不要なブランチ削除
$ git branch -D bugFix
ブランチ名変更(oldbranch指定なしは現在のブランチ名変更。mとMは同じ)
git branch(-m | -M)[<oldbranch>] <newbranch>
$ git branch -m main
ブランチ削除
$ git branch -d BRANCHNAME
$ git push origin :BRANCHNAME # リモートの不要なブランチを削除(1つずつ削除する)
ブランチが削除されていることを確認
$ git branch
リモートで削除されたブランチをローカルでも削除
$ git fetch origin --prune
or
$ git remote prune origin
リモートへのブランチプッシュ
$ git checkout otherbranch # プッシュするブランチ以外にチェックアウト
$ git push origin branch1
### タグ
リモートで消えたタグをローカルから削除
$ git fetch origin --prune 'refs/tags/*:refs/tags/*'
remoteとlocalのリポジトリを紐づけ
git branch (ローカルブランチ名) -u origin/(リモートブランチ名)
タグ削除
git tag -d TAGNAME
git push origin :TAGNAME # リモートの不要なタグを削除(1つずつ削除する)
### リモート
リモート追加
git remote add hoge GIT_URL
リモートを指定してプッシュ
git push origin master
git push hoge master
リモートブランチをプル
git pull <remote> <branch>
リモートブランチとローカルブランチの紐づけ??
git branch --set-upstream-to=origin/<branch> master
リモートブランチとローカルブランチのプッシュ先紐づけ?
git push --set-upstream origin master
リモートURL変更
git remote set-url origin hogehoge.git
リモート名変更
git remote rename origin newname
リモートの登録削除
git remote rm origin
### revert
既存のコミットを取り消す
参考:https://qiita.com/chihiro/items/2fa827d0eac98109e7ee
git revert <commit> # -e を付けた場合と同じ
git revert <commit> -n # コミットはせずインデックスに入れる
### その他
addした後のdiff表示
git diff --cached <filename>
br1ブランチのfoo/bar.tx と br2ブランチのhoge/fuga.txtを比較したい場合
git diff br1:foo/bar.txt br2:hoge/fuga.txt
異なるブランチ間の同じファイルを比較する場合
git diff br1 br2 foo/bar.txt
特定のブランチと現在編集中ファイル間の同じファイルを比較
git diff br2 foo/bar.txt
diffで変更したファイル名のみ表示する。
$ git diff --name-only
2つのブランチを比較した場合でも使用可能。
$ git diff <ブランチ1> <ブランチ2> --name-only
直前コミットの打ち消す(修正内容は残す)
git reset --soft HEAD^
add の取り消し(取り消しのみで変更はそのまま)
git reset HEAD .
編集内容の取り消し
git checkout <filename>
git checkout .
別ブランチからファイル取得
git checkout <取得元ブランチ> <取得ファイル>
新規作成したファイルをすべて削除
git clean -df .
ファイルの権限は無視する
git config core.filemode false
Gitでは改行コードを変換をしない。
git config --global core.autoCRLF false
リベース
git checkout <リベース対象ブランチ>
git rebase <リベース先ブランチ>
コンフリクトが起こったら修正し対象をgit addして以下を実行する
git rebase --continue
修正したことでリベース先と差異がない場合は以下を実行する.(ログが出る→ No changes - did you forget to use 'git add'?)
git rebase --skip
git pull
git push
リベースの取りやめる場合
git rebase --abort
vscodeでパスワード毎回聞かれるのが嫌な場合、以下を実行すると良いらしい。(まだ試していない。)
https://help.github.com/articles/caching-your-github-password-in-git/
git config --global credential.helper wincred
gitの認証情報の設定については以下を参照する。
https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E3%83%84%E3%83%BC%E3%83%AB-%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%81%AE%E4%BF%9D%E5%AD%98
他のサイトの認証情報が邪魔して403になる場合、以下の手順で認証情報を削除すると良い。
https://cpoint-lab.co.jp/article/201804/windows%E7%89%88git%E3%81%A7%E8%AA%8D%E8%A8%BC%E6%83%85%E5%A0%B1%E3%82%92%E6%B6%88%E3%81%99%E6%96%B9%E6%B3%95/
下記GitHubではURL手順で取得できるnoreplyメールアドレスを設定するとメールを晒さなくてすむ。
https://help.github.com/articles/about-commit-email-addresses/
https://help.github.com/ja/github/setting-up-and-managing-your-github-user-account/setting-your-commit-email-address
$ git config --local user.name 名前
$ git config --local user.email "メールアドレス"
リポジトリ作成
git init
最初のコミット(空のコミット)
git commit --allow-empty -m "first commit"
~/.gitconfig にalias追加("git ll"または"git g" でログ表示)
[alias]
ll = log --graph --oneline --decorate=full
gg = log --graph --date=short --format=\"%C(yellow)%h%C(reset) %C(magenta)[%ad] %C(cyan)@%an%C(reset) %C(reset)%C(auto)%d%C(reset) %s\"
git コマンド出力の色を有効化
git config --global color.ui true
git コマンド補完機能を有効化
$ sudo find / -name git-completion.bash
/usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.bash
$ sudo find / -name git-prompt.sh
/usr/share/doc/git-1.8.3.1/contrib/completion/git-prompt.sh
試しに実行して確認。(ログアウトすると消える。.bashrcなどログイン時に読み込むファイルに記入する。)
$ source /usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.bash
$ source /usr/share/doc/git-1.8.3.1/contrib/completion/git-prompt.sh
.bashrcに追記
source /usr/share/doc/git-1.8.3.1/contrib/completion/git-completion.bash
source /usr/share/doc/git-1.8.3.1/contrib/completion/git-prompt.sh
PS1='[\u@\h \w$(__git_ps1)]$ '
$ source .bashrc
主な設定値:
\d : 日付
\h : ホスト名(ドメイン名なし)
\H : ホスト名(ドメイン名あり)
\s : シェルの名前
\t : 時間(24時間制 HH:MM:SS形式)
\T : 時間(12時間制 HH:MM:SS形式)
\@ : 時間(12時間制 HH:MM AM/PM形式)
\u : ユーザ名
\w : カレントディレクトリ
\W : カレントディレクトリのベース名
! : コマンドの履歴番号を表示
# : コマンドのコマンド番号
$ : rootなら#、それ以外のユーザなら$を表示
\ : バックスラッシュ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment