记一次Git使用失误,导致删除项目的经历。
1.在NS/下建立.gitignore文件,初识git:git init
gitignore:
#just track scratch/duola_dos.cc and ...dos.cc/ .h
/*
!.gitignore
!scratch/duola_dos.cc
!src/aqua-sim-ng/model/aqua-sim-routing-ddos.cc
!src/aqua-sim-ng/model/aqua-sim-routing-ddos.h
2.add . 只添加了ignore,觉得不对劲,就把ignore重新写了一遍。然后add .发现等了好久,觉得奇怪,git status, 发现add了好多文件,原来是把src都忽略了。想清理add
gitignore:
#just track scratch/duola_dos.cc and ...dos.cc/ .h
/*
!.gitignore
!scratch/duola_dos.cc
!/src/
!/src/aqua-sim-ng/model/
!/src/aqua-sim-ng/model/
!/src/aqua-sim-ng/model/aqua-sim-routing-ddos.cc
!/src/aqua-sim-ng/model/aqua-sim-routing-ddos.h
3 查了一下,用reset就行。我就reset到唯一的HEAD: init了。然后发现src/下所有文件都没了,rm了。直接懵逼。
问题分析:
我回到init状态,本来是想完整的回去,可是没想到人家是按照ignore来的。开始src/那些文件都是被忽略的,但是把ignore改了,再reset的时候,git会根据新的规则去定。新的ignore把/src下所有文件track了。那么以前/src里面啥都没有,现在多了这么多track的文件,只好rm掉了。
经验:
- 对于gitignore文件,千万要慎重!!!!
- 对于add到缓存区的文件,千万要慎重,如果从没commit过,那么一旦清除,就相当于rm了。
- 正确的gitignore忽略写法:
- 如果文件少,直接add -f,强制添加忽略的文件,只要添加一次就能保持track
- 先!/src/,然后要紧跟着/src/*