LoginSignup
32
49

More than 5 years have passed since last update.

git,githubのコマンド チートシート

Last updated at Posted at 2014-03-19

git使った開発で使うコマンド色々。最初はadd,commit,pushさえ覚えておけばOK!

基本

commit, push関連

ブランチ情報チェック(自分のいるブランチ、変更したファイル)

$ git status

ワークツリーからインデックスに追加

$ git add -p 追加するものを選択
$ git add -A すべて追加

差分チェック

$ git diff インデックスとワークツリーの差分(addする前の差分)
$ git diff --cached インデックスと最新コミット(addしてからの差分)
$ git diff HEAD ワークツリーと最新コミット

commit

$ git commit -a  インデックスへadd,commit(git add -u -> git commitと同等)
$ git commit -v   verbose
$ git commit --amend 直前のコミットをやり直す

push (githubのへのpush)

githubにブランチも作って、そこにpush

# git push origin <ローカルでのブランチ名>:<githubでのブランチ名>

ローカルとgithubのブランチ名はだいたい同じにするので、

$ git push origin change_hoge:change_hoge

とか。

すでにgithubにブランチ作っている場合

$ git push

merge

今のブランチにmasterブランチをマージしたい場合

$ git merge master

addの取り消し

個別にaddしてしまったファイルを取り消す場合

$ git rm --cached hoge.txt

まとめてaddしたものを取り消したい場合

$ git reset HEAD

commitの取り消し

ワークディレクトリ(ローカルの作業)ごと取り消す場合

$ git reset --hard HEAD^

ワークディレクトリは残しつつ、コミットのみ取り消す場合

$ git reset --soft HEAD^
  • ポイント:HEADは直前のコミット。HEAD^は一つ前のコミット。 HEAD^とすることで、1つ前のコミットまでリセットする、という意味。

gitignoreの反映

一旦 ignoreしたいfileを削除する

$ git rm -r --cached filename or directory  例 log/*.log
$ vi .gitignore      //ignore対象ファイルを加える
$ git add .gitignore
$ git commit -m ".gitignore is now working"
$ git push origin master

ブランチ切替関連

ブランチ情報など取得(fetch,mergeを両方やる)

$ git pull

現在のブランチを表示

$ git branch 

ブランチの切り替え

$ git checkout ブランチ名

rename

ブランチのrename

$ git branch -m <oldname> <newname>

リモート(github)のブランチ切り替え方法

$ git fetch  (リモートからレポジトリ取得)
$ git status ステータスを確認
$ git checkout -b hoge -t  origin/hoge  (githubにあるorigin/hogeと同じ内容のブランチhogeを作る)  
$git branch  (ブランチがhogeになっているか確認)

 新しいブランチをgithubに空コミットする

$ git checkout -b new_branch   (ブランチ作成)
$ git commit --allow-empty -m "make pull request" (空コミットを許可してコミット)
$ git push origin new_branch:new_branch (githubへpush)

ちょっと応用

git, githubからブランチを削除

例としてsearchというブランチを削除する

git からの削除

$ git branch -d search

githubからも削除する

git push プッシュ先リポジトリ ローカルのブランチ名:リモートのブランチ名
ここでは

プッシュ先リポジトリ origin

ローカルのブランチ名 (削除済み)

リモートのブランチ名 search

なので

$ git push origin :search

git, githubから履歴も含めファイルを削除(パスワードファイルとか誤っていれてしまって削除する場合)

$ git filter-branch -f --index-filter 'git update-index --remove "filename"' HEAD
$ git push --force

レポジトリの取得プロトコル方法を変更する

githubの二段階認証を有効にすると、httpsプロトコルでは毎回アクセストークンを入力しなくてはならなくなるので、sshに変更する

$ git remote -v
origin  https://github.com/***/***.git (fetch)
origin  https://github.com/***/***.git (push)
$ git remote set-url origin git@github.com:***/***.git
$ git remote -v
origin  git@github.com:***/***.git (fetch)
origin  git@github.com:***/***.git (push)

gitのリポジトリ作成

$ git init

gitの空レポジトリをコミットする

$ git commit --allow-empty -m "make pull request"

backup リポジトリ作成

  • 空のレポジトリ作る
$ mkdir /pub/repository/backup.git
$ cd /pub/repository/backup.git  
$ git --bare init  
  • 履歴をコピー
$ cd {workdir}/  
$ git push /pub/repository/backup.git master  

(もとのディレクトリは捨てる rm -rf {workdir}

  • 作業時はバックアップリポジトリからcloneする
$ git clone /pub/repository/backup.git {workdir}  
  • 作業が終わったらバックアップリポジトリに書き戻す
$ git push origin master  
origin -> もとのリポジトリ(ローカルブランチ) master->マスタブランチ  

エラー関連

fatal: remote origin already exists.が出るとき

$ git remote add origin git@github.com:example/test.git  
fatal: remote origin already exists.  

原因は既に同じ名前でリモートリポジトリが登録されている事。異なる名前でリモートリポジトリを作成する

$ git remote -v
origin  git@github.com:example/test.git
$ git remote add origin2 git@github.com:example/test.git
$ git remote -v
origin  git@github.com:example/test.git
origin2 git@github.com:example/test.git
32
49
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
49