Gitコミットして変更履歴を残す。
復元はまだやったことない。
GitHubへのプッシュは別記事。
扱いたいディレクトリへ移動
コミットしたいファイルのあるフォルダへ。
$ ls 下の階層にある、cdで移動できるディレクトリを表示
$ cd ディレクトリ名 移動
git init
初期化。Initialize.
それぞれのフォルダの中に.gitという隠しファイルを作る。
初めてそのファイルをgitで扱う時には必ず行う。
そうじゃなければ飛ばす。
$ git init
Initialized empty Git repository in /Users/ディレクトリの階層ズラズラ/.git/
git add
ファイルを選択。
$ git add ファイル名
選択できたか確認。
$ git status
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: index.html
Untracked files:
(use "git add <file>..." to include in what will be committed)
../上の階層のファイル名やディレクトリ名
同じ階層のaddしてないファイル名やディレクトリ名
選択できてない場合
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
../上の階層のファイル名やディレクトリ名
./
nothing added to commit but untracked files present (use "git add" to track)
git initできてない場合
$ git status
fatal: not a git repository (or any of the parent directories): .git
git commit
変更内容や何を作ったのかコメントにつけてコミットする。
これで.gitに今のファイルの状態が保存される。
% git commit -m "トップページ作成"
[master (root-commit) b4a0bf4] トップページ作成
1 file changed, 96 insertions(+)
create mode 100644 templates/index.html
コミット履歴を確認
commitできてるか確認
$ git log
commit コミットID (HEAD -> master)
Author: 自分の名前 <メールアドレス>
Date: Sat May 16 01:46:18 2020 +0900
トップページ作成
.gitのあるディレクトリ内でgit logすることで、今までにコミットした履歴を確認できる。
コミットしたものから復元
git logで戻りたいコミットのコミットIDを調べて
$ git reset --hard [コミットid]
直前のコミットに戻る時は
$ git reset HEAD^
resetで戻ったコミット以降のコミットたちは無くなる。
フォルダごとコミットしたけど特定のファイルだけ戻したい時は
$ git checkout [コミットid] [ファイルパス]
GitHubなどのリモート上にプッシュした後ならこうする
参考:Gitでリモートリポジトリを巻き戻す
手順
リモートに今の(間違えた)状態をバックアップしたブランチを作る
`git push origin master:master_bak`
リモートのmasterを削除し、ローカルを一つ戻し、リモートにプッシュ
`git push -f origin HEAD^:master`
分解するとこういうことしてるらしい
`git push origin :master`
`git reset HEAD^`
`git push origin master `
これで順調ならバックアップを削除
`git push origin :master_bak`
addやcommitの後はstatusやlogで確認する習慣を!