【问题标题】:Using git, upload new directory after deleting the existing subdirectories to Github without removing the currently deleted dir. from Github使用 git,将现有子目录删除后上传新目录到 Github,而不删除当前删除的目录。来自 Github
【发布时间】:2021-08-05 04:57:30
【问题描述】:

我有 文件夹 A(git 已初始化),其中还有两个 文件夹 1 和 2,这两个文件夹中有一些文件。我第一次在 master 分支上做 add commit push,一切都在 Github 上可见。

现在,我删除了 文件夹 1(从本地)并创建了另一个 文件夹 3(其中包含一些文件)。

我的问题是,如何只将文件夹 3 推送到 GitHub 而不从那里删除文件夹 1? 我希望使用子树,但使用子树命令强制推送会导致文件夹/文件被覆盖GitHub 并且只有 文件夹 3 的内容可见。

git push origin `git subtree split --prefix 3 master`:master --force

更新

正如 cmets 中提到的,这不是 Git 的工作方式,通过 Git 是不可能的。

【问题讨论】:

  • 你不推送文件夹,你推送提交。如果您不想删除文件夹1,则不能在丢失的地方进行提交。这意味着最终你也不能在本地删除它。
  • 是否可以只提交文件夹 3 并将其与其余文件夹远程合并? @j6t
  • 没有。那不是 Git。
  • 知道了,谢谢解释。

标签: git github git-subtree


【解决方案1】:

在进行提交时,我们可以指定要提交的文件。

以下命令将仅添加要提交的文件夹 3 更改并将其推送到 Github。

git 添加 3 git commit -m "添加文件夹 3" git推送

【讨论】:

  • 您好,感谢您的回复。这样做的方式是只暂存文件夹 3,依此类推,但是由于 git 也在跟踪已删除的文件,因此它的对象文件夹继续增长,并且没有办法让 git 在不弄乱对象文件夹的情况下永久忘记已删除的文件在 .git 目录中。有什么想法吗?
  • 嗨,我们可以使用 .gitignore 文件从 .git 中的跟踪中删除文件夹/文件。我们可以运行 $git rm -r --cached 1/ 并在内容“1/”的基础目录中手动创建 .gitignore //不确定这是否有助于您的要求。
  • 感谢 Vinayagam,在阅读了 git 以及它如何跟踪文件之后,我意识到无法通过 Git 实现它。
猜你喜欢
  • 2019-08-31
  • 2010-12-29
  • 2017-07-08
  • 1970-01-01
  • 2013-01-07
  • 2012-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多