「Git/コマンド」の版間の差分
(→コンフリクト解消ツール) |
(→1つ前のコミットコメント修正) |
||
行235: | 行235: | ||
git commit --amend | git commit --amend | ||
エディタが開くのでそこで修正 | エディタが開くのでそこで修正 | ||
+ | |||
+ | ==git logをツリーで表示== | ||
+ | git log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s' |
2016年12月12日 (月) 18:50時点における版
目次
- 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 タグcheckout
- 19 作成したタグpush
- 20 エクスポート
- 21 コミット日付をタイムスタンプに復元
- 22 コミット日付をタイムスタンプに復元(例:テンプレのみ
- 23 git pull時のエラー
- 24 gitデフォユーザ設定
- 25 gitコンフィグ確認
- 26 git履歴一覧
- 27 git差分確認
- 28 gitで管理しないdir指定方法
- 29 空のdirを管理する
- 30 (no branch)にコミットしたログをマージ
- 31 gitログ削除
- 32 git_cloneが重くなった場合
- 33 コミット処理を戻す
- 34 mergeコミット処理を戻す
- 35 branchを指定してcloneする
- 36 ロールバック(ファイルも戻す)
- 37 ロールバック(ファイルは維持)
- 38 別ブランチのリビジョンを追加コミットする方法
- 39 コンフリクト解消ツール
- 40 1つ前のコミットコメント修正
- 41 git logをツリーで表示
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
ローカルブランチ削除時にerror: The branch '〜' is not fully mergedのエラーが発生した場合
マージされてないものを含んでいるブランチを消そうとしたときに発生する
消しても問題なければ以下で消せる
$ git branch -D develop
ブランチをpush
$ git branch develop $ git push origin develop
リモートブランチをローカルに
$ git branch develop origin/develop
注意)pullするのは危険(現在自分がみているブランチにマージされる恐れがある
タグ作成
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 [[ "$FILE" =~ ^public|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 #1ファイルのコード差分 $ git show [リビジョンid] --name-only #ファイルだけ
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されるので注意。 (競合するとcommitはされない)
mergeコミット処理を戻す
git revert -m 1 [リビジョンid]
-m 1 はマージされた側のオプション(基本はこちらだと思う) -m 2 はマージした側のオプション
ちなみにmerge部分を"-m"オプションを使わずに利用しようとするとエラーとなる
git revert [リビジョンid] error: Commit [リビジョンid] is a merge but no -m option was given.
branchを指定してcloneする
git clone -b develop ssh://user1@localhost/var/git/project1.git project1
ロールバック(ファイルも戻す)
git reset --hard [リビジョンid]
指定したリビジョンidが最後にコミットがされた状態まで全体ソースが戻る(ログも全て戻る)
(注)ロールバック前にpushしてしまっていると、ロールバック後にpushができなくなる(別ブランチに変えればpush出来る)
ロールバック(ファイルは維持)
git reset --soft [リビジョンid]
指定したリビジョンIDが最後にコミットがされた状態までログが戻る(ソースは維持)
別ブランチのリビジョンを追加コミットする方法
git cherry-pick [リビジョンid]
過去dateでコミットが追加される
参考 https://teratail.com/questions/58184
コンフリクト解消ツール
git mergetool
真ん中がオリジナルファイルなのでそこを修正する
1つ前のコミットコメント修正
git commit --amend
エディタが開くのでそこで修正
git logをツリーで表示
git log --graph --date=short --decorate=short --pretty=format:'%Cgreen%h %Creset%cd %Cblue%cn %Cred%d %Creset%s'