summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortekkub <tekkub@gmail.com>2010-01-25 13:22:04 -0700
committertekkub <tekkub@gmail.com>2010-01-25 13:22:04 -0700
commitc26c5c7855e419a49204e7d4b5cf3a681851f666 (patch)
tree49aa5dca838b0b1da8c48d174082540a7a422501
parente7b559b62d7fde31ad59c55f537ae29f56afc19f (diff)
Fix up egit guide for the new default branch setting
-rw-r--r--_posts/2009-11-16-egit-corruption.markdown (renamed from _posts/2009-11-16-egit-corruption.textile)29
-rwxr-xr-xcss/style.css1
2 files changed, 19 insertions, 11 deletions
diff --git a/_posts/2009-11-16-egit-corruption.textile b/_posts/2009-11-16-egit-corruption.markdown
index 7d8343c..7426c8b 100644
--- a/_posts/2009-11-16-egit-corruption.textile
+++ b/_posts/2009-11-16-egit-corruption.markdown
@@ -5,7 +5,7 @@ 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:
+Due to a bug in egit's impementation of the `git push` command, remote repos can become corrupted due to missing objects:
<pre class="terminal">$ git fsck
broken link from commit 5b90a930763c442f0fc3d819685083b4eda69f8e
@@ -14,22 +14,28 @@ missing commit e1ea55d308b7808cb982f509c8dfa199ada4677e</pre>
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
+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.
+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.
+Re-pushing is a simple matter of deleting the remote branch and then pushing it again. If the branch being deleted is the default branch on the remote you'll need to replace it temporarily. We'll use the first commit in the branch so that we can ensure all the other commits are re-pushed.
-<pre class="terminal">$ git push origin :master
-$ git push origin master</pre>
+<pre class="terminal">$ git log --pretty=oneline | tail -n 1 <span class="comment"># Find the first commit</span>
+3b70d98cb968fc35f0c99acfe4d5dfa976ed2536 Initial commit
+$ git branch temp_default 3b70d98cb968fc35f0c99acfe4d5dfa976ed2536
+$ git push origin temp_default
+$ git remote set-head origin temp_default <span class="comment"># Change the remote default branch</span>
+$ git push origin :master
+$ git push origin master
+$ git remote set-head origin master <span class="comment"># Set things back to master</span>
+$ git push origin :temp_default</pre>
-You may need to do this for many branches if the remote repo has more than one branch that was pushed by egit. If one of the branches that was re-pushed was the default branch (usually master), you'll need to re-establish that default:
-
-<pre class="terminal">$ git remote set-head origin master</pre>
+You may need to do this for many branches if the remote repo has more than one branch that was pushed by egit. You can skip `git remote set-head` for these other branches.
After you've pushed and reset HEAD, testing the repo repo is just a matter of cloning it:
-<pre class="terminal">[tekkub@tekBook: ~/tmp] $ git clone git://github.com/tekkub/test.git
+<pre class="terminal">$ 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.
@@ -39,6 +45,7 @@ Resolving deltas: 100% (1139/1139), done.</pre>
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
+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
diff --git a/css/style.css b/css/style.css
index ca223e7..975629b 100755
--- a/css/style.css
+++ b/css/style.css
@@ -46,6 +46,7 @@ pre.terminal {
font-size: 0.9em !important;
}
+pre.terminal span.comment {color: #aaa;}
code {white-space: nowrap;}