开发者

Can deleted .git be restored?

开发者 https://www.devze.com 2023-03-11 10:31 出处:网络
This happened when working with开发者_如何学C git on Ruby on Rails. several commits and branches were done and created.

This happened when working with开发者_如何学C git on Ruby on Rails. several commits and branches were done and created.

git version 1.7.3.4

I accidentally deleted the .git folder using

git -rf .git

but I have all the files and updates done on online git-hub repository. I want the .git folder restored. Questions ?

  1. Am I totally screwed up ? OR
  2. If theres a way to restore .git from my online git-hub repository, how can that be done ?


The only way you can restore a deleted .git folder is by:

  • Cloning it again from somewhere
  • Checking your recycling bin or backup (if no remote repository exists)

Since your files are from the online github repository, then its simple. Just clone it again from the directory where you deleted the .git folder:

git init
git remote add origin <repo_address>
git pull origin master

where repo_address can be git@github.com:yourname/yourproject.git

Your local checkout will be back to normal.

If you have uncommitted changes in your working copy you would want to keep, instead of using git pull use git fetch and then git reset --soft your local branch to the remote branch it should be at. The soft reset will not change your working copy


You can clone your repository to another location and simply copy the cloned .git folder to the place of your deleted .git folder.


If you have uncommited changes in your repository you can do this.

git init
git remote add origin <YOUR_REPO_ADDRESS>
git fetch
git branch master origin/master 
git reset HEAD -- .
git rebase --autostash

git branch master origin/master creates a local master branch to track remote master branch. That is required because your new repo won't have a local branch until you have made a first commit.

Rebase will put your uncommited staged on top of the code you have fetched. Autostash option will temporary stash you edits and then put them back after the rebase has completed.

Worried? Make a backup copy of your project.


I think the best bet is to Clone the repo in a throwaway folder. And copy the .git folder from that to your desired folder location (The project folder in which you've deleted .git folder).


if you compiled your work and it is in a jar format. Go to your .m2/repository/location and find that jar file. change the .jar to .zip. unzip the file and your git repository should be there.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号