「Git/コマンド」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→ロールバック) |
(→ロールバック(ファイルは変更しない)) |
||
行210: | 行210: | ||
(注)ロールバック前にpushしてしまっていると、ロールバック後にpushができなくなる(別ブランチに変えればpush出来る) | (注)ロールバック前にpushしてしまっていると、ロールバック後にpushができなくなる(別ブランチに変えればpush出来る) | ||
− | ==ロールバック( | + | ==ロールバック(ファイルは維持)== |
git reset --soft [リビジョンid] | git reset --soft [リビジョンid] | ||
指定したリビジョンIDが最後にコミットがされた状態までログが戻る(ソースは維持) | 指定したリビジョンIDが最後にコミットがされた状態までログが戻る(ソースは維持) |
2016年12月9日 (金) 00:56時点における版
目次
- 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 ロールバック(ファイルは維持)
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 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が最後にコミットがされた状態までログが戻る(ソースは維持)