【GitHub】清空 GitHub 仓库中的所有内容,只保留 `README.md` 文件

简介: 【GitHub】清空 GitHub 仓库中的所有内容,只保留 `README.md` 文件

写在最前面

在删除github静态网页的CNAME指向后,

这个网址yutong-a.github.io,还是会自动跳转到已过期域名https://lightrain.top/上,因此进行原因查找

在仓库中搜索时,发现之前自带的资源导致了这一原因,因此尝试清空一个 GitHub 仓库中的所有内容,但想要保留 README.md 文件和 .git 目录(.git 目录实际上不会被推送到 GitHub,但它包含了仓库的版本历史和配置信息)。

最终结果

清空github仓库

可以按照以下步骤操作:

注意事项

  • 这个过程会清除你仓库中的大部分内容,只留下 README.md 文件。请确保你已经备份了所有重要数据。
  • .git 目录是 Git 用来跟踪和管理版本历史的目录,它位于仓库的顶级目录下。这个目录在正常的 Git 操作中是不会被删除的,也不会被推送到远端仓库(GitHub),所以你的版本历史会被保留。
  • 如果你在 GitHub 上直接进行操作,而不是在本地仓库,你需要手动删除每个文件(除了 README.md),因为 GitHub 不允许通过网页界面直接删除所有文件。

这些步骤允许你清理仓库内容,同时保留 README 文件和版本历史,适合于想要重新开始但保留一些基本信息的场景。

一、初始化本地仓库

如果没有初始化本地仓库,会报错:

git init

二、设置远程仓库

遇到这个问题通常是因为 Git 无法识别远程仓库 origin,或者你没有正确设置远程仓库的 URL。这可能是由于以下几个原因造成的:

1. 远程仓库 URL 没有设置或设置错误

可以通过以下命令查看远程仓库的设置:

git remote -v

这将列出所有远程仓库的 URL。如果 origin 没有列出,或者 URL 不正确,你需要添加或修改它。

添加远程仓库

如果 origin 不存在,你需要使用 git remote add 命令来添加远程仓库:

git remote add origin https://github.com/用户名/仓库名.git

将 用户名 和 仓库名 替换为你的 GitHub 用户名和仓库名。

修改远程仓库

如果 origin 的 URL 不正确,你可以用 git remote set-url 来修改它:

git remote set-url origin https://github.com/用户名/仓库名.git

同样,记得替换 用户名 和 仓库名。

2. 访问权限问题

如果远程仓库的 URL 是正确的,但你仍然看到“Could not read from remote repository”的错误,可能是因为你没有正确设置访问权限。

  • 确保你的 GitHub 用户名和密码是正确的。如果你启用了两因素认证(2FA),你可能需要使用个人访问令牌(PAT)作为密码。
  • 确保你使用的是 HTTPS 或 SSH URL,且 URL 是正确的。SSH URL 需要你在 GitHub 上配置 SSH 密钥。

3. 仓库不存在

如果你的 URL 是正确的,且你有正确的访问权限,那么请确保 GitHub 上的仓库确实存在。如果仓库被删除或重命名,你需要更新你的远程仓库 URL 来反映这些变化。

检查和解决步骤

  1. 检查远程仓库 URL:使用 git remote -v 查看并确认 origin 的 URL 是正确的。
  2. 添加或修改远程仓库:根据需要添加或修改 origin。
  1. 检查访问权限:确保你有权限访问该仓库,特别是如果仓库是私有的。
  2. 确认仓库存在:在 GitHub 上确认仓库确实存在。

完成这些步骤后,尝试再次推送你的更改。

三、克隆仓库到本地(如果尚未克隆)

首先,确保你有该仓库的一个本地副本。如果没有,需要先克隆仓库:

git clone https://github.com/用户名/仓库名.git
cd 仓库名

四、删除除了 README.md 外的所有文件

在仓库的根目录中,删除所有文件和目录,除了 README.md。这可以通过以下命令完成:

# 在仓库根目录执行
# 注意: 这将删除除了 README.md 外的所有文件和目录,请确保已备份必要内容
find . -not -name 'README.md' -not -name '.git' -not -name '.' -not -name '..' -delete

如果你的 README.md 文件位于仓库的子目录中,你可能需要调整上面的命令,或者手动删除其他文件和目录。

当你尝试使用 find 命令来删除除 README.md 和 .git 外的所有文件和目录时,你可能会遇到“Directory not empty”的错误。这是因为 find 命令在尝试删除非空目录时会遇到问题。为了解决这个问题,你可以采取一种分步的方法来先删除目录内的所有文件(保留 README.md),然后再删除空目录。下面是一种改进的方法,它会先删除所有非目录文件(除了 README.md),然后删除空的目录:

1. 删除所有非目录文件(除了 README.md)

你可以使用 find 命令匹配所有非目录文件,并排除 README.md,然后删除它们:

find . -type f -not -name 'README.md' -delete

2. 删除所有空目录

然后,你可以使用另一个 find 命令来删除所有空的目录。请注意,由于某些目录可能只在删除其子目录后变为空,你可能需要运行命令多次:

find . -type d -empty -delete

你可能需要运行上面的删除空目录命令几次,直到所有空目录都被删除。

提交更改前看一下本地仓库,确认是否是所需要的。

五、提交更改并推送

接下来,将这些更改提交到本地仓库,并推送到 GitHub:

git add *
git commit -m "清空仓库,保留 README.md"
git push origin main

如果你的默认分支不是 master,请将上述命令中的 master 替换为你的默认分支名(如 main)。

六、强制更新

 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to 'https://github.com/YuTong-a/YuTong-a.github.io'
hint: Updates were rejected because the remote contains work that you do not
hint: have locally. This is usually caused by another repository pushing to
hint: the same ref. If you want to integrate the remote changes, use
hint: 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

遇到这个问题是因为你的本地仓库落后于远程仓库,远程仓库包含了一些你本地没有的提交。Git 默认要求在推送之前本地仓库需要是最新的,这是为了防止潜在的冲突。这里有几种解决方法:

方法 1: 拉取远程仓库的更改并合并

如果你想保留远程仓库的更改,并将它们合并到你的本地更改中,可以使用以下命令:

git pull origin main

这会拉取远程仓库的更改并自动尝试合并到你的本地分支。如果存在合并冲突,Git 会提示你解决它们。解决冲突后,你可以继续提交并推送。

方法 2: 强制推送(慎用)

如果你确定想要覆盖远程仓库的更改(例如,你的目标是重置远程仓库以匹配你的本地仓库),你可以使用强制推送。请注意,这将会丢失远程仓库中的所有更改,只有在你完全确定这是你想要的操作时才使用。

git push origin main --force

或者使用更新的语法:

git push origin main --force-with-lease

--force-with-lease 选项比 --force 更安全一些,因为它会在远程分支没有被更新时阻止你进行强制推送。这是一个防止不小心覆盖他人更改的安全措施。

选择适合你情况的方法

  • 如果你想保留远程仓库中的更改并将它们合并到你的工作中,选择方法 1。
  • 如果你需要清空远程仓库以匹配你的本地版本,并且你确定这样做不会意外丢失重要的更改,选择方法 2。

在进行强制推送之前,确保与团队中的其他成员沟通,确认这个操作不会影响他们的工作。

目录
相关文章
|
11天前
|
开发工具 git
GitHub显示无法在此仓库中合并不相关的历史记录
GitHub显示无法在此仓库中合并不相关的历史记录
10 2
|
19天前
|
开发工具 git
【看这一篇就够了】如何删除gitHub仓库中的文件
【看这一篇就够了】如何删除gitHub仓库中的文件
22 1
|
11天前
|
Shell 开发工具 git
如何使用git上传代码github仓库
如何使用git上传代码github仓库
|
2月前
|
人工智能 Linux 开发工具
[oeasy]python018_ 如何下载github仓库_git_clone_下载仓库
在这个文档中,作者讨论了如何继续进行编程学习,特别是关于GitHub的使用。首先,回顾了从编写简单代码到管理大量代码的过程。然后,提到了通过“保存运行一条龙”操作来处理代码,以及GitHub作为全球最大的开源软件平台的重要性。在GitHub上,用户可以找到各种软件项目,包括Linux、Python和Blender等。 作者解释了GitHub的基本操作,如点赞(star)、 fork(复制项目)和watch(关注项目更新)。还介绍了如何下载项目到本地,通过`git clone`命令复制仓库的URL并将其粘贴到终端进行下载。如果遇到问题,可以尝试更换HTTP链接或等待一段时间重试。
201 2
|
2月前
|
SQL 关系型数据库 Java
实时计算 Flink版操作报错之在阿里云DataHub平台上执行SQL查询GitHub新增star仓库Top 3时不显示结果,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
26天前
如何在Github上删除一个仓库
如何在Github上删除一个仓库
|
2月前
|
开发工具 git
【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件
【Github】sync fork后,意外关闭之前提交分支的pr申请 + 找回被关闭的pr请求分支中的文件
35 5
|
2月前
|
缓存 网络安全 开发工具
【尝试】域名验证:配置github二级目录下的txt文件
【尝试】域名验证:配置github二级目录下的txt文件
48 2
|
2月前
|
Shell 开发工具 git
[oeasy]python019_ 如何在github仓库中进入目录_找到程序代码_找到代码
本文档介绍了如何在终端环境下使用Git克隆仓库后,通过`cd`、`pwd`和`ls`命令导航并找到下载的文件。首先,使用`ls`查看当前目录,然后通过`cd`逐层进入目标文件夹,最后到达包含游戏文件game.py的位置。文章还提到了如果`git clone`失败,可以直接进行下一节实验。
25 0