トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

Git

http://blog.digital-squad.net/article/123090058.html
http://d.hatena.ne.jp/naokirin/20111201/1322576109
http://wadahiro.hatenablog.com/entry/20101110/1289401605
http://sourceforge.jp/magazine/09/02/02/0655246
http://git-scm.com/book/ja/%E4%BD%BF%E3%81%84%E5%A7%8B%E3%82%81%E3%82%8B-%E6%9C%80%E5%88%9D%E3%81%AEGit%E3%81%AE%E6%A7%8B%E6%88%90
https://qiita.com/take4s5i/items/15d8648405f4e7ea3039
https://camo.qiitausercontent.com/a6c07de17c4d1bfacbb8e406621fdaf60c7f484a/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f37303334322f30343030313061652d306431662d613237322d393362352d3431653036656330643031302e706e67
https://dackdive.hateblo.jp/entry/2016/06/06/203542
http://tm.root-n.com/unix:command:git:bash_prompt
https://qiita.com/takayukioda/items/13c65d1b10348e79461b

前提

コマンドとtigを使うのが良いと思う。
ditfftoolはwinmergeかmeld。

設定

 Windowsの場合

https://gitforwindows.org/
ポータブル版msysgit がオススメ。
DLして解凍。

 .gitconfig

localの設定

対象リポジトリの .git/config

global

~/.gitconfig

gitconfgのサンプル

 [user]
   name = ユーザ名
   email = xxxx@aaa.bb.cc
 
 [core]
 ; git statusでのマルチバイトをエスケープしない
   quotepath = false
 ; エディタ
   editor = vim -c \"set fenc=utf-8\"

   excludesfile = ~/.gitignore_global

 [color]
 ; diff, status, branchの表示に色を付ける 
   diff = auto
   status = auto
   branch = auto
 
 ; difftoolでmeldを使う
 [diff]
   tool = meld
 [difftool "meld"]
   cmd = meld $LOCAL $REMOTE
 [difftool]
   prompt = false
 
 ; mergetoolでmeldを使う
 [merge]
   tool = meld
   ff = false
 [mergetool "meld"]
   cmd = meld $LOCAL $BASE $REMOTE --auto-merge --output $MERGED
 [mergetool]
   prompt = false
 [alias]
   graph = log --graph --date=short --pretty=\"format:%C(yellow)%h %C(cyan)%ad %C(green)%an%Creset%x09%s %C(red)%d%Creset\"
 [pull]
   ff = only

 .bashrc

git-completionを使えるようにしておくと便利。
また、プロンプトにgitの状況を表示するために.bashrcに以下を追記しておくと見やすい。

# git
gitps1=true
GIT_CONTRIB_DIR=/usr/share/git-core/contrib
if [ -r ${GIT_CONTRIB_DIR}/completion/git-prompt.sh ]; then
  . ${GIT_CONTRIB_DIR}/completion/git-prompt.sh
  gitps1="__git_ps1"
fi 
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWUNTRACKEDFILES=true
GIT_PS1_SHOWSTASHSTATE=true
GIT_PS1_SHOWUPSTREAM=auto

export PS1='[\u@\h \W$(${gitps1})]\$ '
# デフォルト
# '[\u@\h \W]\$ '

使い方

 proxy を設定する

git config http.proxy http://my.proxy.url:80

とか

git config http.proxy http://user:pass@my.proxy.url:80

恒久的に設定するには --global オプションを使って

 git config --global http.proxy http://my.proxy.url:80

 リポジトリ作成

cd path/to/repo
git init

git init --bare

とするとになります。(bareリポジトリ)
bareリポジトリは、サーバ側のリモートリポジトリとして使うリポジトリを作成する際に使用します。

 基本的なコマンド

git init
リポジトリ作成
git --bare init
bare作業ファイルがなく、管理ファイルのみのリポジトリ(bareリポジトリ)作成。
git add .
現在のワークツリーを記録する。コミットはされない。
git add -u
ワークツリー内の全てのファイルを記録する。
git add -A
新しく作成されたファイルを含めてインデックスに記録する。
git add -p
どの変更を次回のコミットに含めるかを選択して、インデックスに記録する。
git commit
-mオプションを省略すると、エディタが起動し、ログメッセージを残せる。
git commit -m "最初のコミット"
コミットする。
git commit -a -m "ログメッセージ"
gitt add -u した後すぐ git -commitのと同義。
git commit -v
git commit、git diffの結果がまとめて表示される。
git commit --amend
一つ前のコミットを破棄して新しくコミットする。
git diff
前回のgit add 以降に加えた変更が確認できる。
git diff HEAD
前回のgit commit 以降に加えた変更が確認できる。
git diff --cached
最新のコミットと、インデックスの違いを表示。
git status
git commitを実行した場合にどのファイルへの変更がコミットされ、どのファイルへの変更はコミットされないかと確認できる。
git log --grep=パターン
ログメッセージを文字列を元に検索。複数の--grepオプションを指定した場合はOR検索になる。AND検索にするには--all-matchオプションを加える。
git show
最新のコミットの内容を表示。
git reset
インデックスを現在のHEADと同じにする。
git revert
指定したコミットID へ戻す
git checkout
ブランチを変更する
git checkout -b ブランチ名
新規にブランチを作成してそのブランチに移動する。
git branch ブランチ名
ブランチ名のブランチを作成する
git branch
ブランチを全て表示する。現在のブランチの横に*が表示される。
git merge ブランチ名
現在のブランチと、指定したブランチをマージする。
git merge -Xignore-all-space ブランチ名
現在のブランチと、指定したブランチをスペースを無視してマージする。
git clone A.git B.git
Aリポジトリをコピーする。

使い方いろいろ

ローカルの変更内容確認

git difftool -d 

コミット予定の内容確認

git difftool -d --staged

または

git difftool -d --cached

ログをツリー表示する

log --graph --date=short --pretty="format:%C(yellow)%h %C(cyan)%ad %C(green)%an%Creset%x09%s %C(red)%d%Creset"

または、.gitconfigに

[alias]
   graph = log --graph --date=short --pretty=\"format:%C(yellow)%h %C(cyan)%ad %C(green)%an%Creset%x09%s %C(red)%d%Creset\"

を設定して

git graph

他のブランチのコミットを適用する

git cherry-pick ハッシュ

範囲でコミットを指定するときは

git cherry-pick ハッシュ..ハッシュ

始点となるコミットは 実際に cherry-pick したいコミットの1つ前を指定する

複数のコミットを1つのコミットにまとめる

git rebase -i ハッシュ

指定するコミットはまとめるコミットの始点の1つ前をしていする
コマンド 説明
(p)pick コミットをそのまま残す。
(r)reword コミットメッセージを変更。
(e)edit コミット自体の内容を編集。
(s)squash 直前のpickを指定したコミットに統合。メッセージも統合。
(f)fixup 直前のpickを指定したコミットに統合。メッセージは破棄。

1つ前のコミットを修正する

git commit --amend

stagedされているファイルがない場合はコミットメッセージを修正する。
stagedされているファイルがあれば、stagedされているファイルが1つ前のコミットに追加される。

コミット前に戻す

 git reset HEAD
 git reset --head HEAD
 git clean
 git clean -f

コミット同士の差分

git diff ハッシュ ハッシュ

リモートの情報表示

git remote

ブランチの追跡情報表示

git branch -vv

リモート追跡を設定する(上流ブランチをセットする)

git branch --set-upstream-to=origin/<branch> ローカルブランチ

リモート追跡をやめる(上流ブランチをアンセットする)

git branch --unset-upstream ローカルブランチ

過去のコミットからブランチを作る

git checkout -b branch_name 336e00890fc03ba55563998d7459771649fb46b5

指定した文字列を含む変更をログから探す

git log -S "hogehoge"
git log -p -S "hogehoge"

-p は指定した文字列を含む変更箇所を表示する

操作を誤った時

マージしていないブランチを消したとかreset --hardしてしまった場合、

git reflog

ローカル操作の履歴が見れる。

指定したハッシュ値がどのブランチに含まれているか確認

git name-rev

でハッシュ値をhuman-readableな形式を返す。

 タグ

タグをつける

git tag タグ名

タグをリモートへプッシュ

git push --tags 

タグを削除

ローカル

git tag -d タグ

リモート

git push origin :refs/tags/タグ名

Gitでよく使われるコマンドをイラストで説明

https://qiita.com/kozzy/items/b42ba59a8bac190a16ab
Gitでよく使われるコマンドをイラストで説明

GUIツール

 git標準

http://www.devlog.alt-area.org/?p=1874

gitk
gitk --all
git gui


[カテゴリ: プログラミング全般]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2019年07月21日 16時17分44秒