Git文件操作
一、删除文件
保存进度: git stash
恢复进度: git stash apply
rm *.txt只是删除了工作区的文件,暂存区和版本库的还在。
法一:
git rm a.txt b.txt c.txt
git commit -m "delete trash files"
当然,文件只是在版本库的最新提交中被删除了,历史提交中还有捏:
git ls-files --with-tree=HEAD^ #查看历史文件目录树
git cat-file -p HEAD^:a.txt #查看删除文件的内容
法二:
git reset --hard HEAD^ #丢弃法一中的提交
git stash apply -q #恢复保存的进度 -q使命令进入安静模式
rm *.txt
git status -s #状态显示本地删除了文件,暂存区的还在
git add -u #将被版本库追踪的本地文件的变更全部记录到暂存区中。
git status -s #工作区删除的文件被标记为下次提交时删除
git commit -m "delete trash files(git add -u)"
二、恢复删除的文件
git cat-file -p HEAD~1:a.txt > a.txt
或 git show HEAD~1:a.txt > a.txt
或 git checkout HEAD~1 -- a.txt
then git add -A #将工作区中的所有改动及新增文件添加到暂存区
git status -s
git commit -m "restore file:a.txt"
选择性添加文件到版本库中:git add -i 进入交互式界面
添加里程碑: git tag -m "tag" hello_1.0 #里程碑是人为的对提交进行的命名
查看现在的版本号: git describe
三、移动文件
git mv welcome.txt WELCOME #文件改名,相当于rm + add
git commit -m "rename file's name" #提交改名操作
四、文件忽略
$ cat > .gitignore << EOF #将要忽略的文件写入.*文件的单独行中,可忽略自己
> hello
> *.o
> *.h
> EOF
$ git add .gitignore #若不希望添加到版本库中且文件不带来干扰,可忽略自己
$ git commit -m "ignore object files"
忽略文件(如上面的.gitignore)的作用范围是其所处的目录及其子目录,文件被加到版本库后,就不再受忽略文件的影响了。
.gitignore设置的文件忽略是共享式的。另有针对具体版本库的独享式忽略(.git/info/exclude),全局的独享式忽略(通过git
的配置变量core.excludesfile指定一个忽略文件)。
eg: 设置一个全局的独享文件:
git config --global core.excludesfile /home/kai/.gitignore
git config core.excludesfile
五、文件归档:
基于最新提交建立归档文件: git archive -o latest.zip HEAD
只将目录src和doc建立到归档partial.tar中:git archive -o partial.tar HEAD src doc
如果希望在归档是忽略文件或目录,可为相应文件或目录建立export-ignore属性实现。
查看提交次数:
git rev-list HEAD | wc -l