* HACKING: describe how to find a misplaced change-set
authorJim Meyering <meyering@redhat.com>
Wed, 16 Jul 2008 10:25:00 +0000 (12:25 +0200)
committerJim Meyering <meyering@redhat.com>
Wed, 16 Jul 2008 13:29:04 +0000 (15:29 +0200)
HACKING

diff --git a/HACKING b/HACKING
index 457048e60206d20808c00d6588be02a7e8af039c..b83565224cfbf5418d64b825bf07b08ce80856ae 100644 (file)
--- a/HACKING
+++ b/HACKING
@@ -360,6 +360,22 @@ Miscellaneous useful git commands
       you an interface with which you can reorder and modify arbitrary
       change sets on that branch.
 
       you an interface with which you can reorder and modify arbitrary
       change sets on that branch.
 
+  * if you "misplace" a change set, i.e., via git reset --hard ..., so that
+    it's no longer reachable by any branch, you can use "git fsck" to find
+    its SHA1 and then tag it or cherry-pick it onto an existing branch.
+    For example, run this:
+      git fsck --lost-found HEAD && cd .git/lost-found/commit \
+       && for i in *; do git show $i|grep SOME_IDENTIFYING_STRING \
+       && echo $i; done
+    The "git fsck ..." command creates the .git/lost-found/... hierarchy
+    listing all unreachable objects.  Then the for loop
+    print SHA1s for commits that match via log or patch.
+    For example, say that found 556fbb57216b119155cdda824c98dc579b8121c8,
+    you could run "git show 556fbb57216b119" to examine the change set,
+    or "git checkout -b found 556fbb5721" to give it a branch name.
+    Finally, you might run "git checkout master && git cherry-pick 556fbb5721"
+    to put that change on the tip of "master".
+
 -------------------------------------------
 
 Finding things to do
 -------------------------------------------
 
 Finding things to do