From 8c5c38ec4854f3deec8b654013507ca34af3e305 Mon Sep 17 00:00:00 2001 From: tekkub Date: Mon, 16 Nov 2009 13:47:28 -0700 Subject: Add egit corruption guide --- _layouts/default.html | 3 +- _posts/2009-06-17-troubleshooting-ssh.textile | 3 +- _posts/2009-11-16-egit-corruption.textile | 40 +++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 _posts/2009-11-16-egit-corruption.textile diff --git a/_layouts/default.html b/_layouts/default.html index a722d2f..fc53b65 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -1,6 +1,7 @@ --- sidebar_cats: - setup +- troubleshooting - repos - collaborating - mac @@ -16,7 +17,7 @@ sidebar_cats: Help.GitHub - + diff --git a/_posts/2009-06-17-troubleshooting-ssh.textile b/_posts/2009-06-17-troubleshooting-ssh.textile index 27395a9..c355a8d 100644 --- a/_posts/2009-06-17-troubleshooting-ssh.textile +++ b/_posts/2009-06-17-troubleshooting-ssh.textile @@ -2,7 +2,8 @@ layout: default title: Troubleshooting SSH issues description: Solutions to common SSH issues -categories: setup +categories: setup troubleshooting +main_category: troubleshooting --- This guide contains the solutions to the most common SSH connection issues encountered on GitHub diff --git a/_posts/2009-11-16-egit-corruption.textile b/_posts/2009-11-16-egit-corruption.textile new file mode 100644 index 0000000..a6e1e17 --- /dev/null +++ b/_posts/2009-11-16-egit-corruption.textile @@ -0,0 +1,40 @@ +--- +layout: default +title: Fixing egit corruption +description: How to fix corruption in a remote repo caused by egit +categories: troubleshooting +--- + +Due to a bug in egit's impementation of the `git push` command, remote repos can become corrupted due to missing objects: + +
$ git fsck
+broken link from  commit 5b90a930763c442f0fc3d819685083b4eda69f8e
+              to  commit e1ea55d308b7808cb982f509c8dfa199ada4677e
+missing commit e1ea55d308b7808cb982f509c8dfa199ada4677e
+ +This can prevent cloning and fetching from the repo. The objects were never pushed to the remote repo, therefore support cannot recover the repo directly for the user. The only solution is for the user that pushed the commits to push them again from the command line. + +h2. Correcting the remote repo + +To correct the remote repo the missing objects need to be re-pushed from an uncorrupted repo. This should be done from the command line, not from egit. To start, run @git fsck@ on your local repo to ensure it has not been corrupted. If you do not receive any errors about broken links or missing objects, you're clear to continue. + +Re-pushing is a simple matter of deleting the remote branch and then pushing it again. + +
$ git push origin :master
+$ git push origin master
+ +You may need to do this for many branches if the remote repo has more than one branch that was pushed by egit. After you've pushed, testing the repo repo is just a matter of cloning it: + +
[tekkub@tekBook: ~/tmp] $ git clone git://github.com/tekkub/test.git
+Initialized empty Git repository in /Users/tekkub/tmp/test/.git/
+remote: Counting objects: 1815, done.
+remote: Compressing objects: 100% (838/838), done.
+remote: Total 1815 (delta 1139), reused 1552 (delta 961)
+Receiving objects: 100% (1815/1815), 537.69 KiB | 549 KiB/s, done.
+Resolving deltas: 100% (1139/1139), done.
+ +If you have re-pushed all branches in your repo and cloning still fails, please "contact support":http://support.github.com and open a ticket. Be sure to include a link to your repo and mention that you've already performed the steps on this page. + +h2. Avoiding future corruption + +We recommend users avoid using egit to push their repos. Always push from the command line. \ No newline at end of file -- cgit v1.3.1