【问题标题】:git - start tracking untracked remote files/directoriesgit - 开始跟踪未跟踪的远程文件/目录
【发布时间】:2017-01-16 00:09:59
【问题描述】:

假设我这样做:

mkdir some_repo
cd some_repo
git init
git touch dummy.txt
git commit -m 'dummy commit'
git remote add -f some_other_remote_repo path/to/.git
git merge --no-ff --no-commit merge remotes/some_other_remote_repo/master

不输入git status 我看到类似:

new: f1/some.txt
new: f1/some11.txt
new: f2/some2.txt
new: f3/some3.txt

所以现在我只想添加特定的目录及其内容。我可以这样做:

git reset f2/
git reset f3/

现在正在运行git status

new: f1/some.txt
new: f1/some11.txt

untracked: f2/some2.txt
untracked: f3/some3.txt

所以它可以满足我的需要,我可以提交和删除本地添加的 f2f3 目录。但是,如果以后我决定现在要跟踪 f2 目录及其内容,该怎么办?

不,如果我再次运行git merge --no-ff --no-commit merge remotes/some_other_remote_repo/master,它会说一切都是最新的。所以它现在忽略那些未跟踪的目录。他们是一种告诉 git 仅跟踪远程的特定目录的方法吗?

【问题讨论】:

  • 这里值得一提的是,Git 本身并不跟踪目录。相反,如果在结帐时,Git 需要创建一些目录f1 以便拥有一个文件f1/some.txt,它只是这样做;当从提交 X 移动到提交 Y 时,如果提交 X 有 f1/some.txt 并且提交 Y 在 f1 中没有任何内容,并且 f1 变为空,Git 倾向于删除 f1。 (这些年来,我见过很多 Git 无法删除空目录的极端案例,所以你不应该过多地计算第二个行为。)
  • @torek 是的,我明白了。我自己也注意到了。虽然在我的情况下,每个子目录都是一个模块。所以应该包括或排除整个目录。

标签: git git-merge git-reset


【解决方案1】:

解决方案

再次合并远程分支。这会(再次)拉入文件。

免责声明

我认为这是非常糟糕的做法。在您第一次与已删除文件合并后,您的 git 历史记录中已成功合并 - 但是,显然情况并非如此。

推荐

相反,您应该在remote/master 之上创建一个新分支some_feature,删除这些文件,然后合并some_feature。 如果您决定要所有文件,请完全合并 remote/master

如果文件some.txtsome1.txt、……都添加到不同的提交中,你也可以挑选那些只有少数的提交。

【讨论】:

  • 我真的很喜欢你的推荐。它提供了更多的控制权。我要试试。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-15
  • 2023-01-05
  • 2016-12-26
  • 2016-12-19
  • 2017-12-30
  • 2017-08-04
  • 2018-07-21
相关资源
最近更新 更多