如何让Git完全忘记文件?
我正在使用我的如何让Git完全忘记文件?,git,Git,我正在使用我的master分支保存基本“材料”文件,这些文件在各种项目的子分支中使用。比方说,我在一家生产马车和滑雪板的公司工作。我的主分支将包含所有用作这些产品部件的文件。每个产品都是从master(carg分支、ski分支等)分支出来的。然后使用git-rm移除每个项目不需要的部件(尽管马车上的滑雪板听起来很有趣) 问题是,每当我将我的master分支(可能会有重大更改)合并到项目分支(carg)中时,git认为我真的想忘记对我的git rm文件所做的更改,并将它们添加回树中左侧的滑雪板主版
master
分支保存基本“材料”文件,这些文件在各种项目的子分支中使用。比方说,我在一家生产马车和滑雪板的公司工作。我的主分支将包含所有用作这些产品部件的文件。每个产品都是从master
(carg
分支、ski
分支等)分支出来的。然后使用git-rm
移除每个项目不需要的部件(尽管马车上的滑雪板听起来很有趣)
问题是,每当我将我的master
分支(可能会有重大更改)合并到项目分支(carg)中时,git
认为我真的想忘记对我的git rm
文件所做的更改,并将它们添加回树中左侧的滑雪板主版本,如下面的代码所示
我怎样才能让git真正地忘记我告诉它忘记并停止跟踪的文件
将一些部分添加到
master
,然后提交:
$ pwd
/tmp/parts
$ git init
Initialized empty Git repository in /tmp/parts/.git/
$ echo rubber > wheels
$ echo steel > skis
$ echo vinyl > seat
$ echo wood > sides
$ ls
seat sides skis wheels
$
$ git add .
$ git commit -a -m 'initial parts'
[master (root-commit) ca7610e] initial parts
4 files changed, 4 insertions(+)
create mode 100644 seat
create mode 100644 sides
create mode 100644 skis
create mode 100644 wheels
创建一个货车
项目分支,并移除货车上不需要的零件:
$ git checkout -b wagon
Switched to a new branch 'wagon'
$ ls
seat sides skis wheels
$ git rm skis
rm 'skis'
$ git rm seat
rm 'seat'
$ git commit -a -m 'initial wagon design'
[wagon 384b246] initial wagon design
2 files changed, 2 deletions(-)
delete mode 100644 seat
delete mode 100644 skis
工程队决定更换一些材料。在master
中提交这些更改,以便它们可用于我们的所有项目:
$ git checkout master
Switched to branch 'master'
$ ls
seat sides skis wheels
$
$ echo 'titanium' > skis
$ echo 'metal' > sides
$ git commit -a -m 'design requirements call for stronger sides and skis'
[master a8bf4c4] design requirements call for stronger sides and skis
2 files changed, 2 insertions(+), 2 deletions(-)
我们需要在旅行车
项目中进行一些更改,因此合并主机
以获得这些更改,但现在git抱怨:
$ git checkout wagon
Switched to branch 'wagon'
$ git merge master
CONFLICT (modify/delete): skis deleted in HEAD and modified in master. Version master of skis left in tree.
Automatic merge failed; fix conflicts and then commit the result.
我认为您可能不是将git用作源代码控制系统,而是更像一个解决方案管理器。想一想,如果您想在签出新分支时删除文件的不同部分,为什么要将文件置于源代码管理之下 功能分支是开发路径上的分支,旨在与master合并,并为整个项目带来额外的功能
您可以为每种材料创建一个repo,然后设置一个项目构建,以从材料repo获取所需的材料。我认为您可能不是将git用作源代码控制系统,而是更像一个解决方案管理器。想一想,如果您想在签出新分支时删除文件的不同部分,为什么要将文件置于源代码管理之下 功能分支是开发路径上的分支,旨在与master合并,并为整个项目带来额外的功能
您可以为每种材料创建一份回购协议,然后设置一个项目构建以从材料回购协议获取所需材料。到目前为止,我找到的最可行的解决方案是将master合并到当前分支中,然后使用
--cerial
打印出已删除更新的文件列表,然后调用xargs
删除它们:
git状态——瓷器| awk'{if($1==“DU”)打印$2}'
这不漂亮。将其插入到一个预合并
git钩子中会很好,但它显然不存在 到目前为止,我找到的最可行的解决方案是将master合并到当前分支中,然后使用--cerial
打印出已删除更新的文件列表,然后调用xargs
删除它们:
git状态——瓷器| awk'{if($1==“DU”)打印$2}'
这不漂亮。将其插入到一个预合并
git钩子中会很好,但它显然不存在 因为滑稽地漏掉了要点而竖起大拇指。你误用了git
,真的需要考虑为你正在做的事情找到一个更好的软件包。可能是这样,但如果你有其他解决方案来实现这一点,请发布它。大拇指为滑稽地错过要点而竖起。您误用了git
,确实需要考虑为您正在做的事情找到一个更好的软件包。可能是,但如果您有其他解决方案来实现这一点,请发布它。