Git/コマンド
提供: 初心者エンジニアの簡易メモ
目次
- 1 gitクローン作成
- 2 gitのインデックスに追加する場合
- 3 ローカルの変更を元に戻す場合
- 4 全ソースをある地点まで戻す
- 5 git pushがnon-fast-forwardエラーとなりpushできない際
- 6 削除したファイルをコミットするには
- 7 現在のブランチ確認
- 8 現在のブランチ確認(リモートも含める場合
- 9 ブランチ作成
- 10 ブランチのマージ
- 11 ブランチ削除
- 12 ブランチをpush
- 13 リモートブランチをローカルに
- 14 ローカルブランチの削除
- 15 タグ作成
- 16 タグリスト
- 17 タグ削除
- 18 タグ削除(リモート)
- 19 タグcheckout
- 20 作成したタグpush
- 21 エクスポート
- 22 コミット日付をタイムスタンプに復元
- 23 コミット日付をタイムスタンプに復元(例:テンプレのみ
- 24 git pull時のエラー
- 25 gitデフォユーザ設定
- 26 gitコンフィグ確認
- 27 git履歴一覧
- 28 git差分確認
- 29 gitで管理しないdir指定方法
- 30 空のdirを管理する
- 31 (no branch)にコミットしたログをマージ
- 32 gitログ削除
- 33 git_cloneが重くなった場合
- 34 コミット処理を戻す
gitクローン作成
$ git clone ssh://user1@localhost/var/git/project1.git project1
gitのインデックスに追加する場合
全てのファイル
$ git add .
新しく作成されたファイルも含めるとき
$ git add -A
ローカルの変更を元に戻す場合
$ git checkout file1
全ての場合
$ git checkout .
全ソースをある地点まで戻す
git checkout リビジョンid git pull origin master // 戻した後、ソースを最新にする場合
git pushがnon-fast-forwardエラーとなりpushできない際
push先の子孫でない場合発生
$ git merge origin master
を実行してからpush
もしくは強制的に・・
$ git push --force
削除したファイルをコミットするには
$ git add -u $ git commit
現在のブランチ確認
$ git branch * master
現在のブランチ確認(リモートも含める場合
$ git branch -a * master remotes/origin/master
ブランチ作成
$ git branch develop $ git branch * master develop
ブランチのマージ
ブランチをマスターにしてからdevelopブランチをマージ
$ git checkout master $ git merge develop
ブランチ削除
$ git branch -d develop
ブランチをpush
$ git branch develop $ git push origin develop
リモートブランチをローカルに
$ git branch develop origin/develop
注意)pullするのは危険(現在自分がみているブランチにマージされる恐れがある
ローカルブランチの削除
git branch -D hoge
タグ作成
git tag -a v1.0
タグリスト
$ git tag v1.0
タグ削除
git tag -d v1.0
タグ削除(リモート)
git push origin :v1.0
タグcheckout
git checkout v1.0
作成したタグpush
git push origin v1.0
エクスポート
svn exportと同じ(ファイルだけ出力したいとき
$ git archive [branchname] | tar -x -C [filename] $ git archive master | tar -x -C /var/www/project1
コミット日付をタイムスタンプに復元
for FILE in `git ls-files`; do TIME=`git log --pretty=format:%ci -n1 $FILE` echo $TIME'\t'$FILE STAMP=`date -d "$TIME" +"%y%m%d%H%M.%S"` touch -t $STAMP $FILE done
参考:http://d.hatena.ne.jp/iww/20121011/pretty
コミット日付をタイムスタンプに復元(例:テンプレのみ
for FILE in `git ls-files`; do if fuel/app/views|fuel/app/themes ; then TIME=`git log --pretty=format:%ci -n1 $FILE` echo $TIME'\t'$FILE STAMP=`date -d "$TIME" +"%y%m%d%H%M.%S"` touch -t $STAMP $FILE fi done
git pull時のエラー
You asked me to pull without telling me which branch you want to merge with, and 'branch.master.merge' in
以下コマンドで対応
$ git config branch.master.remote origin
gitデフォユーザ設定
$ git config --global user.name="sampleuser" $ git config --global user.email="sampleuser@example.com"
gitコンフィグ確認
$ git config --list
git履歴一覧
$ git log $ git log --stat # ファイル名一覧付き $ git log --name-status # ファイル名一覧付き M A D付き $ git log --since=2013-07-10 --until=2013-07-16 # 期間指定 $ git log --name-status --since="2013-07-10 10:10:10" | grep '^M' | grep -v '^Merge' | cut -f 2 $ git log --name-status --since="2013-07-10 10:10:10" | grep '^A' | grep -v '^Author' | cut -f 2
git差分確認
$ git show [リビジョンid] $ git show [リビジョンid] test.php
gitで管理しないdir指定方法
.gitignoreをトップdirにおき無視ファイルを記載
$ vi .gitignore *~ *.bak Thumbs.db desktop.ini .DS_Store .buildpath .project .settings *.tmproj fuel/app/logs/*/*/* fuel/app/cache/*/* build nbproject/ .idea logs/* # .svnディレクトリ無視 .svn *.swp
.gitignoreに追加したと同時に無視設定が反映される
空のdirを管理する
空dir内に.gitkeepファイルを作成
$ touch .gitkeep
(no branch)にコミットしたログをマージ
$ git branch # とすると以下のように表示される場合 * (no branch) master $ git checkout master # masterブランチに戻る > 2516532 readme記述 # などとコミットログが出力される $ git merge 2516532 #マージする
Previous HEAD position was 923c794... result文言修正
gitログ削除
直近ログ削除なら問題ないが、昔のログ削除は競合しまくって難しいかも。
$ git rebase -i 103b8e948f1fee1e5b024cd444e46dee0d6f0057 # 最もさかのぼりたい過去のコミットを記述 pick 6896fde gitignore修正 pick 630644c version置換対応 pick e12c899 dbダンプ最新 # ↑削除したいものだけddで削除する git rebase --continue git status # 競合を直す git add -u
git_cloneが重くなった場合
ダンプなどの重いdataをcommitした場合は重くなるので履歴から削除
git filter-branch --tree-filter 'rm -fr db/hoge_dump.tar.gz';
コミット処理を戻す
git revert [リビジョンid]
実行すると戻し修正されて、commitされるので注意。