Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
![git add したあと、commit するの忘れてて reset --hard しちゃったけど、取り戻したい #git - Qiita [キータ]](https://cdn-ak-scissors.b.st-hatena.com/image/square/3497e19aeb570cec80fba59ff266cacc1cb77b64/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9Z2l0JTIwYWRkJTIwJUUzJTgxJTk3JUUzJTgxJTlGJUUzJTgxJTgyJUUzJTgxJUE4JUUzJTgwJTgxY29tbWl0JTIwJUUzJTgxJTk5JUUzJTgyJThCJUUzJTgxJUFFJUU1JUJGJTk4JUUzJTgyJThDJUUzJTgxJUE2JUUzJTgxJUE2JTIwcmVzZXQlMjAtLWhhcmQlMjAlRTMlODElOTclRTMlODElQTElRTMlODIlODMlRTMlODElQTMlRTMlODElOUYlRTMlODElOTElRTMlODElQTklRTMlODAlODElRTUlOEYlOTYlRTMlODIlOEElRTYlODglQkIlRTMlODElOTclRTMlODElOUYlRTMlODElODQmdHh0LWFsaWduPWxlZnQlMkN0b3AmdHh0LWNvbG9yPSUyMzFFMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZzPTZhNjcxZDUwM2Y2MmU5YmMyZmQyMzcxNTEzZGJiNmMz%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDB5b3NoaW9yaSZ0eHQtY29sb3I9JTIzMUUyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZmNjY2MxYWI5ZmIyNThkNmU1NDY1YTUwMDRiZjcyN2E%26blend-x%3D142%26blend-y%3D436%26blend-mode%3Dnormal%26txt64%3DaW4gQ09PS1BBRA%26txt-width%3D770%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%25231E2121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D36%26txt-x%3D156%26txt-y%3D536%26s%3D373832f692384daa95854903f5b66d98)
前回 git diff を図に書いてみたところ、自分の中で意外と整理できたので、これまたなんとなく使っていた git reset についてもまとめてみた。 とりあえず結論を先にまとめよう。 git reset とは? HEAD の位置を変更するコマンド。 オプションによってインデックス、ワーキングツリーの内容も変更できる。 git reset のオプションは? --soft、--mixed(オプションなしと同等)、--hard オプションがあり、影響度の小さい順に以下のようになる。 --soft HEAD の位置のみを変更する。インデックス、ワーキングツリーには影響なし。 --mixed (またはオプションなし) HEAD の位置とインデックスを変更する。ワーキングツリーには影響なし。 --hard HEADの位置、インデックス、ワーキングツリーをすべて変更する。 さて、git reset
いままでなんとなく使ってきたけど、ようやく使い方が分かったような気がするのでメモ。 前提知識 インデックスとワーキングツリーが理解できていること HEAD が何か分かっていること git diff ワーキングツリーとインデックスの差分を表示。 git add した後にさらに修正したけど、そういえばどの時点で git add したのかなー、というときに使う? git add したらすぐにコミットする自分には関係なさそう。 git diff --cached HEAD とインデックスの差分を表示。 git add して、コミットする前に差分を確認したい時に使うんだと思う。 自分は git diff よりもこっちの方をよく使う。 git diff HEAD HEAD とワーキングツリーの差分を表示。 前にコミットした時からどれくらい編集したか確認したい時に使う。 HEAD の部分はコミット(HE
how_to_get_cleared_stash_on_git `��jU �� �jU h1. 変更が消えてしまった!?その対応 せっかく実施したコードへの修正が消えてしまう、これほど開発者をがっかりさせることは無いでしょう。 Gitを使えば、消えてしまったように見える変更を復活できることがあります。 h2. 大原則 復活できる可能性があるのは、「何らかの形でGitに履歴を残してある歴史」だけです。 たとえば、以下のファイルを復活させることはできません。 <pre> $ touch foo.txt $ vim foo.txt $ rm foo.txt この時点で、foo.txtの復活は不可能 </pre> 逆に言えば、Gitに変更の痕跡があれば、復活の可能性は大いにあります。 例.1-1 <pre> $ touch foo.txt $ vim foo.txt $ git add . $
まだあわてるような時間ではございません。 インデックス 1.コミットメッセージを間違えちゃった! -- 直前のコミットのやり直し 2.そろそろブランチを整理しなきゃ! -- ブランチの名称変更と削除 3.間違ってコミットしちゃった! -- コミットを取り消す3つのリセット 4.別のブランチをプッシュしちゃった! -- リモートブランチのリセットと削除 5.コミットの順番を間違えちゃった! -- コミットログの並べ替えと削除 6.コミット細かすぎィ! -- コミットログの統合と編集 7.あのコミットさえあれば…! -- 他のブランチのコミットを適用する 8.やばい!ハードリセットしたら消えちゃった! -- 過去の状態の復元 9.masterにマージ後にバグ発生!どうする!? -- コミットを打ち消すコミット 1.コミットメッセージを間違えちゃった! -- 直前のコミットのやり直し エディタが
git notes 使い方 オブジェクトにノートを加える ノートは、(コミットメッセージに書くことができなかった)注釈をコミット自体を変更せずに書き加えるために使用される。 コミットにノートを加えるには git notes add git notes add HAED~3 git notes add <sha1> のようにする。コミットの指定を省略した場合は HEAD が対象になる。 エディタが起動して入力画面になるので、ノートを入力する。 ノートは git log で見ることができる。 オブジェクトに加えられたノートを調べる git notes または git notes list とするとノートとオブジェクトの sha1 が表示される。 コミットを指定して git notes list <sha1> とすると対象のコミットに加えられたノートの sha1 が表示される。 ノートを編集する
以下の nippo.rb をダウンロードしパスの通ったディレクトリに配置する GitHub のリポジトリを clone してきた作業ディレクトリで $ nippo.rb と実行する その日のコミットログメッセージが GitHub へのリンクつきで表示される 日報がわりにコピペすると便利です(サボってると一目瞭然なので真面目に仕事しようという気になります) #!/usr/bin/env ruby remote = `git remote -v | grep origin | awk '{print $2}'`.split("\n").first.chomp.sub(/.*:(.*)/, '\1').sub(/\.git/, '') puts "### #{remote} ###" puts "" `git log --after=yesterday --author='Kensuke Nag
[2013-01-07 14:57:22] ふと,今日はどんだけコミットしたんか,これまで一日当たりにどんだけコミットしたんか,知りたくなりました. 全期間のコミット数 % git log --date=short --pretty=format:'%cd %an'|uniq -c 11 2013-01-07 peccu 4 2013-01-06 peccu 25 2013-01-05 peccu 6 2012-12-30 peccu 7 2012-12-28 peccu 13 2012-12-27 peccu 3 2012-12-26 peccu 1 2012-12-20 peccu 2 2012-12-19 peccu 4 2012-11-23 peccu 9 2012-11-02 peccu 4 2012-11-01 peccu 7 2012-10-31 peccu 5 2012-1
むちゃくちゃわかりやすい例を考えてみた 今あなたは、羊を数えるプロジェクトをGitで開始しました。 羊を1匹数えるごとに1コミットして、3コミットまで終わりました。 ひつじが1ぴき (←1コミット目) ひつじが2ひき (←2コミット目) ひつじが3ひき (←3コミット目) masterブランチの歴史 (左から右に進みます) 1ぴき 2ひき 3ひき ○ - ○ - ○ ワイルドプログラマ、wildブランチを作る ここで突然ワイルドプログラマのスギちゃんが登場します。 スギちゃんは、masterブランチをもとにwildブランチを作成して、そこで1コミットずつ発言をワイルドに変えてしまいました。 ひつじが1ぴきだぜぃ ひつじが2ひきだぜぃ ひつじが3ひきだぜぃ wildブランチの歴史 (左から右に進みます) 1ぴき 2ひき 3ひき 1ワイルド 2ワイルド 3ワイルド ○ - ○ - ○ -
YAPC::Asia Tokyo 2012に参加してきました。今年もたくさん発表が聞けたり、ひさびさに会う方々といろいろお話できました。みなさまありがとうございました!発表のためにコード書いたり、YAPCでいろいろ話聞いたりするので、だいたい秋あたりが一番元気がでてくる感じがします。 Perl 今昔物語でnaoyaさんもおっしゃってましたが、京都からの参加組はどうしても同窓会っぽい感じになってしまうのですが、それはそれで楽しい! 僕はホームディレクトリに埋もれた便利なコードをさがせ!という発表をしてきました。 ホームディレクトリに埋もれた便利なコードをさがせ! from Yohei Fushii ホームディレクトリにうまっているようなちょっとしたコードは社内でどんどん共有すると捗るよ! という話です。はてな社内で最近使っていた、Guitaという gist clone の紹介もしました。 ス
サポート情報を追記しました。 アリスとボブのGitシリーズとは、4年前の2008年9月5日から始まる以下の一連の日記です。 アリスとボブになりきってgitをちゃんと理解したい! - ザリガニが見ていた...。 アリスとボブのコラボレーション、gitをちゃんと理解したい! - ザリガニが見ていた...。 アリスとボブのサーバー、git pushをちゃんと理解したい! - ザリガニが見ていた...。 アリスがチャレンジなコードを書く時、git branchをちゃんと理解したい! - ザリガニが見ていた...。 これらの日記は、最近になってもじわじわブックマークされ続けている隠れた人気記事です。(ありがたいことです、感謝) 上記の日記がベースとなって、書籍化のお話を頂き、半年かけて執筆しました。(超スローペースです) アリスとボブのGit入門レッスン(Amazonへのリンク) アリスとボブのGi
問題 git submodule で他のリポジトリ(以下「サブモジュール」)の内容を埋め込むことが簡単にできるのですが、 ごく稀に追加したサブモジュールを削除したくなる場合があります。 サブモジュールの追加や更新は git submodule add や git submodule update で簡単にできるものの、 何故か git submodule rm サブコマンドはありません。 どうすれば削除できるのでしょうか。 解決方法 submodule_name='The name of a submodule you want to remove.' submodule_path="$(git config --file .gitmodules --get "submodule.$submodule_name.path")" git rm --cached "$submodule_pat
基本 git remote show [remotename] 引数なしでpull、pushした場合に何を取ってくるかわかる。 git pull [remote] [remotebranch] リモートのブランチをpullする git push [remote] [localbranch] 新しくブランチをpushする場合 git push -u [remote] [localbranch] 新しくブランチをpushする場合(pullもできるようにする。上記のではpushのみしかできない) git push [remote] [localbranch]:[remotebranch] リモートのブランチの名前を変えたい場合 git push [remote] :[remotebranch] リモートにあるブランチを削除 git status -uno アントラックファイルを無視してステータス
Gitでとても便利だと思っているのが、rebaseというコマンド。 ブランチを切った時点からオリジナルは刻一刻と変化していくわけで、 自分のブランチはあくまで現在最新のオリジナルに対するパッチである 必要がある場合は、このrebaseというコマンドを使って、オリジナル(HEAD)と マージすると、最新のオリジナル(HEAD)に対して、ブランチを切ったことになります。 これチョー便利じゃね? 以下、git-rebaseから引用 git-rebase を使用して一連のパッチを最新に保つ リモート追跡ブランチ "origin" の上にブランチ "mywork" を作成し、幾つかコミットを作成したとします: $ git checkout -b mywork origin $ vi file.txt $ git commit $ vi otherfile.txt $ git commit ... m
概要 Git道場 - Git道場 (Git Dojo) 対象者が merge / rebaseにちょっと自信がない conflictが怖い まさにそんな状況だったので、打破するために参加しました。 心「Git総論、心構え」 @iwamatsuさんの講義 Gitにはリモートリポジトリ、ローカルリポジトリがある 集中型のリポジトリにはリモートリポジトリとローカルリポジトリの区別がない 皆のリポジトリなので履歴参照などはすべてリポジトリを見にいかなければならない 分散型では、主な作業はローカルで行い、データを管理できる ローカルリポジトリからリモートリポジトリに反映(プッシュ)する事で他人と共有 ローカルリポジトリは俺のもの、リモートリポジトリは皆のもの Gitは頑健である Gitは時間的な変遷を管理する 昨日のこの時間何してたかな? testブランチを消してもコミットは残っている 作業履歴が残
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く