繁体   English   中英

在Git中,如何在不触摸其他文件夹的情况下从源分支中删除文件夹中的文件?

[英]In Git, how do I remove files in a folder when they have been removed from the source branch without touching other folders?

我使用以下命令从一个分支到另一个分支检出文件夹:

git checkout master foldername

它从主文件夹到当前分支获取文件夹的更新,但是当从主文件夹中删除文件时,它不会删除当前分支中的文件。 我不想合并整个分支。 从母版中删除文件后,是否有办法删除当前分支文件夹中的所有文件,而不是一步一步地手动删除?

背景:

最近,我们将一百多个项目从CVS存储库迁移到了GIT存储库。 我们在git中创建了四个分支-master(dev),qa,pt,prod-来指示不同环境的代码。 为了将一个项目的代码从一个环境移动到另一个环境而不合并其他项目,我们切换到目标环境,然后使用以下代码从具有文件夹名称的源环境中检出:

git checkout qa
git checkout master foldername

它可以很好地检出更新的文件。 但是我们发现,从源分支中删除文件后,它不会删除目标分支中的文件。 我们可能无法使其仅合并整个分支,因为可能会有一些项目部署到dev上,但尚未准备好进行质量检查。 我猜这可能不是将许多项目放在一个存储库中的好方法,但是由于项目太多,而且许多项目相互依赖,所以将它们分开很可怕。

您可以使用以下命令删除文件

  rm <path-to-file>

然后,在提交之前,您需要执行以下操作

  git rm <path-to-file>

然后,git add然后提交。

将这些更改推送到远程,以反映您在本地所做的更改。

对于索引/工作树管道,请从git read-tree 查看git checkout-index以了解专门的工作树操作(以及git update-index了解专门的索引操作)。 您将需要一些变化

git read-tree -um --prefix=foldername master:foldername

根据您所说的“更新”的意思-这个变体是批发替代品,但是您可以通过给它更多的树来查看,从而使read-tree传播或合并相对于基线的更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM