Androidはワンツーパンチ 三歩進んで二歩下がる

プログラミングやどうでもいい話

GIT IMMERSIONで無料でGitを学ぶ メモ1

GIT IMMERSIONというGitのやり方を教えてくれるチュートリアルサイトがあります。
@patorashさんに教えていただきました。いいものを教えてくれて深く深く感謝します。

最初はWeb上で初め、途中からチュートリアルをダウンロードして進めます。
最近毎日これを勉強していてかなり役に立っていると思います。
StudyPlusという勉強SNSサイトで毎日メモっていたのですが、ログが溜まってきたので
自分でみるときに見やすいようにブログに写しておきます。

雑なメモなので内容は期待しないで下さい!(最初は特に雑。メモってすらいない)
翻訳しながらわかりやすく記述されているサイト様を発見したので
ご覧になってはいかがでしょうか。

※ $ git hist コマンドはGIT IMMERSION LAB11 でコマンドエイリアスを設定しているので
hist = log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
の意味です。

GIT IMMERSION LAB11まで
git addを何回かやったとすると一番最初のがステージに上る。
コミットすると一番最初にadd したもの(だけ)がコミットされる。
カレントディレクトリの全ての変更をaddするときは
git add .

ログを一行に集約したものを見るには
git log --pretty=oneline
細かいオプションは覚え切れそうにない。

$HOMEの.gitconfigにコマンドのエイリアスを設定できる。

GIT IMMERSION Lab12

「git checkout」−ブランチの切り替え
最新バージョンのmaster branchに切り替え
git checkout master

GIT IMMERSION Lab13

$ git tag v1
現在のバージョンを「v1」という名前で参照できる

以前のバージョンに「v1-beta」というタグを付ける
$ git checkout v1^
^は「v1の親」の意味
$ git tag v1-beta


タグを使ってcheckout
$ git checkout v1
$ git checkout v1-beta

git tagコマンドでタグ一覧が見れる
$ git hist master --all でもログの中にタグが表示される。

GIT IMMERSION Lab14

ステージに上げる前のローカルの変更を取り消す
git checkoutコマンドを使う
$ git checkout hello.rb ←変更を取り消すファイル

LAB 15
ステージされた後の変更を取り消す
ファイル変更→git add hello.rb→hello.rbはステージ上におりコミット待ち

git resetコマンドを使う
$ git reset HEAD hello.rb
ここではステージングは取り消されるが、ファイルの変更は取り消されていない。
変更を取り消すには
$ git checkout hello.rb
checkoutコマンドを使う

GIT IMMERSION LAB16
これやってるおかげか、最近Eclipseプラグインを使わずコマンドラインからgit コマンド叩くほうがラクになってきたかも。

コミットした変更の取り消し
何通りかやり方がある。

$ git revert HEAD
でデフォルトのエディタが起動する。
HEAD の変更を取り消す新しいコミットが作成されます。
また、新しいコミットに対するコミットメッセージが促されます。

$ git revert HEAD --no-edit
だとエディタ起動無し。

$ git hist
でログをチェックしてrevertできたか確認する。

GIT IMMERSION LAB17
ブランチからコミットを取り除く

前回のrevertコマンドはコミット取り消しの強力なコマンドであるが、
コミットの取り消し履歴はgit hist によって見えるようになっている。
履歴に出さず間違ったコミットが無かったように取り除くには。

LAB15では git reset コマンドを使ってステージを取り消した。
コミットの参照(タグ、ハッシュ)があれば reset コマンドは
現在のブランチを特定の時点のコミットに書き直す。
オプションとして、特定のコミットに一致するステージングエリアをリセットできる。
また、オプションとして、特定のコミットに一致するワーキングディレクトリをリセットできる。

まず
$ git hist
でコミット履歴を見てみよう。

履歴を取り除く前に現在のブランチにタグを付けておこう。
後で探せる。
$ git tag oops

戻りたい時点のコミットのタグ(タグを付けていない場合、ハッシュ値を使う)
は前述の$ git hist で見る。
v1 というタグのコミットに戻したいとすると

$ git reset --hard v1
コマンドを使う。
$ git hist
で見ると現在のmasterブランチがv1になっている。

    • hard オプションを付けるとワーキングディレクトリも更新される。

履歴を取り除いた後も先程のコミットはリポジトリの中に残っていて
参照することができる。

$ git hist --all
コマンドを使うと表示されなくなったものも含め全てのコミットを見ることができる。
タグを付けてないコミットはリポジトリに存在するが、ハッシュ名を使って参照する以外ない。
参照されないコミットはシステムがガーベッジコレクションを走らせるまでリポジトリに残る。

resetの危険
ローカルリポジトリは安全。リモートリポジトリの場合、リポジトリを共有している
他のユーザーを困らせることも。

続きはこちら
GIT IMMERSIONで無料でGitを学ぶ メモ2
GIT IMMERSIONで無料でGitを学ぶ メモ3
GIT IMMERSIONで無料でGitを学ぶ メモ4
GIT IMMERSIONで無料でGitを学ぶ メモ5
GIT IMMERSIONで無料でGitを学ぶ メモ6
GIT IMMERSIONで無料でGitを学ぶ メモ7
GIT IMMERSIONで無料でGitを学ぶ メモ8