我对使用 Git 和 GitBash 非常陌生。
我在 GitHub 上有一个名为“RepoA”的存储库,其中已经有一些文件(假设来自 FolderA 的文件)。我使用 GitBash 中的添加、提交和推送将它们上传到那里。由于一些问题,我不得不删除FolderA中的“.git”文件夹,现在我尝试在其中创建另一个“.git”文件夹,但问题是GitBash没有检测到已上传的文件。我假设我必须 git clone 存储库(?),因为我读了一些有关该问题的答案。但问题是我的分支名称“main”(我实际上想推送到它;RepoA 的一部分)显示为“master”,因此我无法提交或推送任何内容。
我的主要问题是:
我意识到手动上传也是可能的,但我真的很想尝试使用 GitBash 甚至 CMD 命令。
我再次尝试初始化 .git,但这导致所有文件都未被跟踪,我必须再次手动提交和推送。
我尝试过 RepoA 的 git 克隆,但所做的只是将文件从 RepoA 复制到我的文件夹 A 中。
.git
文件夹是 git 保存所有内务信息的地方。如果删除它,之前的工作副本将变成一个包含文件和子文件夹的基本文件夹。它会丢失所有版本控制信息、上游存储库等。 所以不要乱搞.git
,除非你知道自己在做什么。
如果您运行
git init
创建一个新的 .git
文件夹,这是一个新存储库,没有历史记录,没有跟踪文件,也没有与您的 github 存储库的连接。您可以这样做,但您将丢失所有以前的历史记录以及与 github 上所谓的上游存储库的连接。
要找回您的存储库,我会这样做:重命名您的本地存储库文件夹,然后将 github 中的
git clone
重命名为现有工作树之外的新文件夹。正如您所看到的,这将为您提供远程存储库 (github) 所拥有的内容。它还可以让你恢复版本历史记录和所有其他 git 内容。
如果您对删除
.git
文件夹的目录中的文件进行了更改,则新克隆的存储库将不会有这些更改。您可以将所有内容复制到新克隆的存储库文件夹中。但不要复制 .git
文件夹,否则你会再次覆盖 git 元数据,你将不得不重新开始。通过这样做,您将丢失 github 所拥有的内容和删除 .git
文件夹时之间的提交信息,因此您将丢失该历史记录。没有办法解决这个问题,除非你有可以恢复的备份。但至少您会保留对任何文件的最新更改。根据需要将 git add
和 git commit
和 git push
发送到 github。
至于
main
与 master
:这只是 github 或本地 git 配置中的设置。您可以运行此命令来获取设置:
git config --global --get init.defaultBranch
和
git config --global init.defaultBranch main
--global
表示您的所有存储库。如果您忽略它并在工作树(存储库)中运行该命令,它将仅适用于该存储库。
您可以通过运行例如来切换 git 中的分支,
git checkout main
或
git switch main
当你提交一个 github 不知道的分支时,你可以推送该分支并告诉 github 连接这些分支。
autoSetupRemote
选项可以自动执行此操作;请参阅使用 git 自动跟踪远程分支
git config --global push.autoSetupRemote true