diff options
| author | tekkub <tekkub@gmail.com> | 2011-03-07 17:20:39 -0700 |
|---|---|---|
| committer | tekkub <tekkub@gmail.com> | 2011-03-07 17:20:39 -0700 |
| commit | 42334eea114845b8069f30ef386a49aed9dc4adc (patch) | |
| tree | 1cc9eb45a2a59ce28e40e977785eb210436a2003 /_posts/2011-03-07-egit-bad-tree.markdown | |
| parent | 3ec91806feeea47390ec0d2481bd945f1a252613 (diff) | |
egit strikes again!
Diffstat (limited to '_posts/2011-03-07-egit-bad-tree.markdown')
| -rw-r--r-- | _posts/2011-03-07-egit-bad-tree.markdown | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/_posts/2011-03-07-egit-bad-tree.markdown b/_posts/2011-03-07-egit-bad-tree.markdown new file mode 100644 index 0000000..d76eb4b --- /dev/null +++ b/_posts/2011-03-07-egit-bad-tree.markdown @@ -0,0 +1,56 @@ +--- +layout: default +title: Fixing bad tree +description: How to fix the bad tree error on a github repo caused by egit +categories: troubleshooting +--- + +Due to a bug in egit's implementation of the `git rm` command, empty trees may not be removed from the index and result in a "bad tree" error on github: + + + +Fixing the repo +--------------- + +Fixing this error is fairly simple with the commandline. To fix the error you need to recreate the tree and then remove it using `git rm` to ensure it is removed correctly. + +For example, if the bad tree is at `badtree/` we would run: + +<pre class="terminal">tekkub@iSenberg ~/tmp/fixing_bad_tree master +> mkdir badtree + +tekkub@iSenberg ~/tmp/fixing_bad_tree master +> touch badtree/temp + +tekkub@iSenberg ~/tmp/fixing_bad_tree master +> git add badtree/temp + +tekkub@iSenberg ~/tmp/fixing_bad_tree master+ +> git commit -m "Fixing bad tree, step one" +[master dbe6a08] Fixing bad tree, step one + 0 files changed, 0 insertions(+), 0 deletions(-) + create mode 100644 badtree/temp + +tekkub@iSenberg ~/tmp/fixing_bad_tree master +> git rm badtree/temp +rm 'badtree/temp' + +tekkub@iSenberg ~/tmp/fixing_bad_tree master+ +> git commit -m "Fixing bad tree, step two" +[master 46ae6d2] Fixing bad tree, step two + 0 files changed, 0 insertions(+), 0 deletions(-) + delete mode 100644 badtree/temp +</pre> + +we can then confirm the tree is removed by making sure it is not listed by `git ls-tree`: + +<pre class="terminal">tekkub@iSenberg ~/tmp/fixing_bad_tree master +> git ls-tree -r HEAD | grep badtree +</pre> + +If this returns no results, push the repo and everything should be fixed! + +Avoiding future corruption +-------------------------- + +We recommend users avoid using egit to remove files from their repos. Always use `git rm` from the command line. |
