可以删除.git吗?

bic*_*jai 31 git github

在Ruby on Rails上使用git时发生了这种情况.完成并创建了几个提交和分支.

git version 1.7.3.4
Run Code Online (Sandbox Code Playgroud)

我不小心删除了git的文件夹中使用

git -rf .git
Run Code Online (Sandbox Code Playgroud)

但我在在线git-hub存储库上完成了所有文件和更新.我想恢复.git文件夹.问题?

  1. 我完全搞砸了吗?要么
  2. 如果有一种从我的在线git-hub存储库恢复.git的方法,怎么办呢?

Moh*_*our 46

恢复已删除.git文件夹的唯一方法是:

  • 从某个地方再次克隆它
  • 检查回收站或备份(如果不存在远程存储库)

由于您的文件来自在线github存储库,因此它很简单.只需从删除.git文件夹的目录中再次克隆它:

git init
git remote add origin <repo_address>
git pull origin master
Run Code Online (Sandbox Code Playgroud)

哪里repo_address可以是git@github.com:yourname/ yourproject.git

您当地的结账将恢复正常.

如果您在工作副本中有未提交的更改,则需要保留,而不是使用git pulluse git fetch,然后git reset --soft将本地分支应用于远程分支.软重置不会更改您的工作副本

  • 为了扩展上述内容,如果你想保留工作副本中未提交的更改,而不是使用`git pull`使用`git fetch`然后`git reset --soft`你的本地分支到远程分支它应该在.软重置不会更改您的工作副本. (13认同)
  • 如果在删除`.git`之前有本地*未刷新*更改,则应安全地保留工作副本,然后在从github克隆后修补更改. (6认同)
  • 或者克隆到另一个目录并将 `.git` 子目录移动到它应该在的地方。 (2认同)

小智 20

您可以将存储库克隆到其他位置,只需将克隆的.git文件夹复制到已删除.git文件夹的位置即可.


Len*_*ter 5

如果您的存储库中有未提交的更改,您可以执行此操作。

git init
git remote add origin <YOUR_REPO_ADDRESS>
git fetch
git branch master origin/master 
git reset HEAD -- .
git rebase --autostash
Run Code Online (Sandbox Code Playgroud)

gitbranchmasterorigin/master创建本地 master 分支来跟踪远程 master 分支。这是必需的,因为在您进行第一次提交之前,您的新存储库不会有本地分支。

Rebase 会将未提交的暂存放在您已获取的代码之上。自动存储选项将临时存储您编辑的内容,然后在变基完成后将它们放回原处。

担心?制作项目的备份副本。