2013-02-28 205 views
0

我想了解如何使用Git进行本地版本控制。我使用Xcode作为我的IDE。当我发现有3000个未分离的更改时,我试图添加最新的更改。我在不知不觉中上演了他们。然后我进入我的项目根目录,在里面找到同一个目录,里面有相同的文件,等等。我删除了它,并且由于演示文件丢失,存储库进入了损坏状态。我实际上应该做什么?这怎么会发生?Git仓库损坏

+1

即使在本地使用时,最好有两个副本,即推送到的“上游”存储库和克隆你在哪里做实际的工作和提交。这样,如果事情失灵,只需再次克隆“上游”并继续从最后推送。你不能真正地破坏上游的副本,所以即使你推坏东西,旧版本仍然存在。 – hyde 2013-02-28 05:42:16

+0

你怎么做的..只是告诉我什么谷歌... :) – 2013-02-28 05:45:07

回答

3

如果您删除.git文件夹,则删除了实际的本地存储库克隆。打捞你的资源(希望你有一个好的版本),并从头开始创建一个新的资源库。


如果你想创建一个备份库中,当你已经有一个,你做的工作,这也许是最简单的方法,确保你有你想保留(bash的命令没有提交的修改后,但你,即使你不使用bash的想法,我敢肯定):

cd work/myproject 
cd ../.. 
mkdir backup-upstream 
cd backup-upstream 
git clone --no-checkout ../work/myproject 

然后你再也不需要再直接触摸备份。现在,你可以设置你当前的工作/项目,以遵循,但它是最简单和最容易出错的只是做一个新的克隆,从上述持续关:

cd ../work 
mv myproject myproject-backup 
git clone ../backup-upstream/myproject 
cd myproject 

现在,它可以启发检查出的差异这些文件,看看有什么实际改变:

cat .git/config 
cat ../myproject-backup/.git/config 

然后你work/myproject下照常工作,当你想创建备份,以防git push。 backup-upstream下的克隆应该被认为是任何远程上游repo,例如github,它实际上是从本地文件系统访问并不重要。请注意,如果您创建新的分支机构,则需要单独推送它们,请参阅:How to copy a local Git branch to a remote repo

+1

yep ive做到了这一点。但我失去了我的一个分支。 – 2013-02-28 06:09:12

+0

是啊,目前没有签出的所有版本都存储在'.git' ... – hyde 2013-02-28 06:46:20

+0

,但如何在地球上可以递归文件夹的事情发生......它似乎很难甚至有意地做... – 2013-02-28 06:58:06