Git使用失误,导致删除项目的经历

记一次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掉了。

 

经验:

  1. 对于gitignore文件,千万要慎重!!!!
  2. 对于add到缓存区的文件,千万要慎重,如果从没commit过,那么一旦清除,就相当于rm了。
  3. 正确的gitignore忽略写法:
    1. 如果文件少,直接add -f,强制添加忽略的文件,只要添加一次就能保持track
    2. !/src/,然后要紧跟着/src/*

你可能感兴趣的:(闲)