已經在 stage 的文件再配置到 .gitignore 不生效

背景:

在管理一個版本庫時,有時候不想要管理某些文件,如自己的測試文件,或涉及到有密碼的配置文件。這時我們只需要把這些不想被管理的文件(文件夾)配置到 .gitignore 文件中即可。
但對於已經被 staged 文件,加入 .gitignore 文件時一定先要從 stage 中移除,.gitignore 配置才能生效。
下面就給出一個具體的實例:
本實例是不想要 target 文件夾下所以的文件,並保存。

1、把 target 配置到 .gitignore 文件中

protrait/target/*

2、在執行 git status 命令。

D:\project\sz\tagging-system>git status
On branch master
Your branch is up-to-date with ‘origin/master’.
Changes not staged for commit:
(use “git add …” to update what will be committed)
(use “git checkout – …” to discard changes in working directory)

    modified:   portrait/target/classes/test/Test.class
    modified:   portrait/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
    modified:   portrait/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
    modified:   portrait/target/portrait-1.0-SNAPSHOT-jar-with-dependencies.jar

3、發現 target 文件夾並沒有消失,這是怎麼回事?

這時需要把 target 從 stage 中刪除

3.1、執行 git rm –cached portrait/target/*

D:\project\sz\tagging-system>git rm –cached portrait/target/*

rm ‘portrait/target/classes/cn/sz/changephone/BdsChangeDeviceDMapper.classrmportrait/target/classes/cn/sz/changephone/BdsChangeDeviceD MidReducer.class’
rm ‘portrait/target/classes/cn/sz/changephone/BdsChangeDeviceDReducer.classrmportrait/target/classes/cn/sz/changephone/BdsChangeDeviceD.classrmportrait/target/classes/cn/sz/changephone/OdsChangeDeviceD Mapper.class’
rm ‘portrait/target/classes/cn/sz/changephone/OdsChangeDeviceDReducer.classrmportrait/target/classes/cn/sz/changephone/OdsChangeDeviceD.classrmportrait/target/classes/cn/sz/sex/MyIKAnalyzer.classrmportrait/target/classes/cn/sz/sex/TrainingData.classrmportrait/target/classes/cn/sz/sex/TrainingOnlineData Bean.class’
rm ‘portrait/target/classes/cn/sz/sex/TrainingOnlineData.class’
rm ‘portrait/target/classes/cn/sz/sourcedata/GetFeatureDataMapper.classrmportrait/target/classes/cn/sz/sourcedata/GetFeatureData Reducer.class’
rm ‘portrait/target/classes/cn/sz/sourcedata/GetFeatureData.class’
rm ‘portrait/target/classes/cn/sz/utils/FileUtil.class’
rm ‘portrait/target/classes/cn/sz/utils/MiscUtil.class’
rm ‘portrait/target/classes/test/Test.class’
rm ‘portrait/target/maven-archiver/pom.properties’
rm ‘portrait/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst’
rm ‘portrait/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst’
rm ‘portrait/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst’
rm ‘portrait/target/portrait-1.0-SNAPSHOT-jar-with-dependencies.jar’

3.2、執行 git status 命令

D:\project\sz\tagging-system>git status
On branch master
Your branch is up-to-date with ‘origin/master’.
Changes to be committed:
(use “git reset HEAD …” to unstage)

    deleted:    portrait/target/classes/cn/sz/changephone/BdsChangeDeviceD$Mapper.class
    deleted:    portrait/target/classes/cn/sz/changephone/BdsChangeDeviceD$MidReducer.class
    deleted:    portrait/target/classes/cn/sz/changephone/BdsChangeDeviceD$Reducer.class
    deleted:    portrait/target/classes/cn/sz/changephone/BdsChangeDeviceD.class
    deleted:    portrait/target/classes/cn/sz/changephone/OdsChangeDeviceD$Mapper.class
    deleted:    portrait/target/classes/cn/sz/changephone/OdsChangeDeviceD$Reducer.class
    deleted:    portrait/target/classes/cn/sz/changephone/OdsChangeDeviceD.class
    deleted:    portrait/target/classes/cn/sz/sex/MyIKAnalyzer.class
    deleted:    portrait/target/classes/cn/sz/sex/TrainingData.class
    deleted:    portrait/target/classes/cn/sz/sex/TrainingOnlineData$Bean.class
    deleted:    portrait/target/classes/cn/sz/sex/TrainingOnlineData.class
    deleted:    portrait/target/classes/cn/sz/sourcedata/GetFeatureData$Mapper.class
    deleted:    portrait/target/classes/cn/sz/sourcedata/GetFeatureData$Reducer.class
    deleted:    portrait/target/classes/cn/sz/sourcedata/GetFeatureData.class
    deleted:    portrait/target/classes/cn/sz/utils/FileUtil.class
    deleted:    portrait/target/classes/cn/sz/utils/MiscUtil.class
    deleted:    portrait/target/classes/test/Test.class
    deleted:    portrait/target/maven-archiver/pom.properties
    deleted:    portrait/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
    deleted:    portrait/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
    deleted:    portrait/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
    deleted:    portrait/target/portrait-1.0-SNAPSHOT-jar-with-dependencies.jar
    deleted:    portrait/target/portrait-1.0-SNAPSHOT.jar

3.3、看還在,需要繼續執行命令 git commit -m “describe for this commit”

D:\project\sz\tagging-system>git commit -m “commit DeviceSexAlgorithm.java”
[master ca4f9e0] commit DeviceSexAlgorithm.java
26 files changed, 234 insertions(+), 206 deletions(-)
create mode 100644 portrait/src/main/java/cn/sz/sex/DeviceSexAlgorithm.java
delete mode 100644 portrait/src/main/java/test/Test.java
delete mode 100644 portrait/target/classes/cn/sz/changephone/BdsChangeDeviceDMapper.classdeletemode100644portrait/target/classes/cn/sz/changephone/BdsChangeDeviceD MidReducer.class
delete mode 100644 portrait/target/classes/cn/sz/changephone/BdsChangeDeviceDReducer.classdeletemode100644portrait/target/classes/cn/sz/changephone/BdsChangeDeviceD.classdeletemode100644portrait/target/classes/cn/sz/changephone/OdsChangeDeviceD Mapper.class
delete mode 100644 portrait/target/classes/cn/sz/changephone/OdsChangeDeviceDReducer.classdeletemode100644portrait/target/classes/cn/sz/changephone/OdsChangeDeviceD.classdeletemode100644portrait/target/classes/cn/sz/sex/MyIKAnalyzer.classdeletemode100644portrait/target/classes/cn/sz/sex/TrainingData.classdeletemode100644portrait/target/classes/cn/sz/sex/TrainingOnlineData Bean.class
delete mode 100644 portrait/target/classes/cn/sz/sex/TrainingOnlineData.class
delete mode 100644 portrait/target/classes/cn/sz/sourcedata/GetFeatureDataMapper.classdeletemode100644portrait/target/classes/cn/sz/sourcedata/GetFeatureData Reducer.class
delete mode 100644 portrait/target/classes/cn/sz/sourcedata/GetFeatureData.class
delete mode 100644 portrait/target/classes/cn/sz/utils/FileUtil.class
delete mode 100644 portrait/target/classes/cn/sz/utils/MiscUtil.class
delete mode 100644 portrait/target/classes/test/Test.class
delete mode 100644 portrait/target/maven-archiver/pom.properties
delete mode 100644 portrait/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
delete mode 100644 portrait/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
delete mode 100644 portrait/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
delete mode 100644 portrait/target/portrait-1.0-SNAPSHOT-jar-with-dependencies.jar
delete mode 100644 portrait/target/portrait-1.0-SNAPSHOT.jar

3.4、再執行 git status 看下

D:\project\sz\tagging-system>git status
On branch master
Your branch is ahead of ‘origin/master’ by 2 commits.
(use “git push” to publish your local commits)
nothing to commit, working tree clean

4、這下就 OK 了。

5、簡單總結下:

如果不想再管理已經被 stage 的文件(文件夾)
可以按照下面的步驟來處理。

1、先從 stage 中刪除不想再被管理的文件(文件夾)

git rm –cached file

2、提交更新

git commit -m “describe for this commit”

3、把該文件(文件夾)配置到 .gitignore 文件中,當然了這一步也可以先做。

4、在執行 git status 命令就可以得到自己想要的結果了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章