記一次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/*