Git 这是忽略文件的正确方法吗?
我正在做一个Git 这是忽略文件的正确方法吗?,git,Git,我正在做一个Iinteractiverebase并试图从我的历史记录中删除所有bin和obj文件夹。我的回购协议的文件夹结构如下 MyRepo MyClass . . bin obj . MyTestClass . . bin obj . . . . 我修改了我的第一次提交,并添加了一个带有内容的
I
interactiverebase
并试图从我的历史记录中删除所有bin
和obj
文件夹。我的回购协议的文件夹结构如下
MyRepo
MyClass
.
.
bin
obj
.
MyTestClass
.
.
bin
obj
.
.
.
.
我修改了我的第一次提交,并添加了一个带有内容的.gitignore
/MyClass/bin
/MyClass/obj
/MyTestClass/bin
/MyTestClass/obj
并将其放入MyRepo中
但是,当我去提交时,我仍然看到我不想要的文件在那里(
.exe
,.pbd
,等等)。忽略文件的最好方法是使用
第二个是要理解,您放入其中的所有模式都将忽略未提交(未跟踪)的文件。一旦出错,git rm--cached就是您的朋友 忽略文件的最佳方法是使用
第二个是要理解,您放入其中的所有模式都将忽略未提交(未跟踪)的文件。一旦出错,git rm--cached就是您的朋友 那么,您去提交文件,文件首先被添加到哪里,然后仅使用该更改进行修改?好。。。。您还必须对文件进行rm(在相同的修改操作上),以便它们能够继续前进。使用cherry pick(…或甚至使用filter branch)从原始分支复制以下所有修订,然后就好像这些文件从未在该分支上存在一样。@Edmundo您能提供一系列用于执行此操作的命令的概要吗?我想象我从
git-rebase-I--root
开始,然后将第一次提交改为edit
,而不是pick
,然后一旦重新启动,我就执行git-commit--ammend
,添加.gitignore
文件,对gitignore
下的文件运行git-rm
,然后提交--aaahh。。。我跟不上。这是我要做的。首先,在添加文件的修订版上设置两个分支,并签出要更正内容的分支:git branch fix start;git签出-b已更正分支
。现在,修改.gitignore文件,使其具有正确的值(如果还没有),并删除“错误”添加的文件(如果希望将它们保留在工作树上,可以git rm--cache
)。现在git commit--amend--no edit
这样您就得到了一个“干净的修正版”。下一条消息的更多内容现在复制您在原始分支上的所有更改:git cherry pick fix start..original branch
。现在你的分支应该是干净的,你可以让原来的分支指向当前的修订版。那么,你去提交文件最初添加的地方,然后只修改了那个地方?好。。。。您还必须对文件进行rm(在相同的修改操作上),以便它们能够继续前进。使用cherry pick(…或甚至使用filter branch)从原始分支复制以下所有修订,然后就好像这些文件从未在该分支上存在一样。@Edmundo您能提供一系列用于执行此操作的命令的概要吗?我想象我从git-rebase-I--root
开始,然后将第一次提交改为edit
,而不是pick
,然后一旦重新启动,我就执行git-commit--ammend
,添加.gitignore
文件,对gitignore
下的文件运行git-rm
,然后提交--aaahh。。。我跟不上。这是我要做的。首先,在添加文件的修订版上设置两个分支,并签出要更正内容的分支:git branch fix start;git签出-b已更正分支
。现在,修改.gitignore文件,使其具有正确的值(如果还没有),并删除“错误”添加的文件(如果希望将它们保留在工作树上,可以git rm--cache
)。现在git commit--amend--no edit
这样您就得到了一个“干净的修正版”。下一条消息的更多内容现在复制您在原始分支上的所有更改:git cherry pick fix start..original branch
。现在,您的分支应该是干净的,您可以使原始分支指向当前版本。