Git - 停止忽略资产但保留在之前的提交中

时间:2018-02-23 09:03:43

标签: git gitignore

  1. 假设我在gitignore列表中有folderA版本控制下的项目。
  2. 在某些时候,我改变了主意,希望从现在起跟踪folderA,因此我将其从.gitignore中移除并将其添加到源代码管理中。
  3. 现在当我回到过去并在检查folderA之前签出任何提交时,该文件夹将被删除。
  4. 这种方式很有意义,因为据我所知,Git已经记录了从不存在中添加folderA并且之前忽略了它,因此它只是简单地重放了#39;及时添加,即删除文件夹。

    我的问题是:是否有可能从上面的步骤1(或者甚至2)开始,我将folderA添加到源代码控制中,当我检出任何先前的提交(仍然被忽略)时,不要删除它? (如 Git在添加之前没有假设文件夹(非)存在)。

1 个答案:

答案 0 :(得分:0)

只要您对第一次提交文件夹的今天版本感到高兴,就可以这样做。

git status # make sure you have no local changes
git tag pre-rebase # just in case this all goes wrong
git rebase -i HEAD~20 # or however many commits you have to go back to get to the one where you first ignored folderA.
# in the editor that comes up
# (if you don't know how to use vi, switch your default editor to nano
# before you start this process) 
# find the commit where you added the git ignore and replace pick at the start of the line to `e` for edit
# save the file and wait for the rebase to start
# when it stops, open `git gui &` click the amend radio button
# (if you don't use git gui, do it with whichever tool you use)
# remove the entry from .gitignore
# stage the changes (the change to gitignore and everythign in folder a)
# press the commit button
git rebase --continue

如果你很幸运,那么rebase将会完成,一切都将在你当前的分支中成为你想要的。如果不是,您可以返回pre-rebase标记然后重试。如果您不熟悉说明中的任何命令,最好在尝试之前进行查找。