ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#### 删除文件 直接在工作区删除,对暂存区和版本库没有任何影响。本地删除如果要反映在暂存区中应该用git rm命令,对不想删除的文件执行git checkout -- <file>,可以让文件在工作区重现。用git rm命令执行删除后,删除动作加入了暂存区,这时执行提交动作就从真正意义上执行了文件删除,不过文件只是在版本库的最新提交中被删除了,在历史提交中尚在。 $ git add -u  将本地有改动(包括修改和删除)的文件标记到暂存区。 #### 恢复删除的文件 ~~~ $ git cat-file -p HEAD^:test.txt > test.txt 从前一提交中恢复test.txt文件 $ git show HEAD^:test.txt > test.txt 效果相同 $ git checkout HEAD^ -- test.txt 也可以 $ git add -A 将工作区的所有改动及新增文件添加到暂存区 ~~~ 然后执行commit操作,则文件被恢复 #### 移动文件(改名操作) 改名操作相当于对旧文件执行删除,对新文件执行添加,git mv可以由git rm和git add两条命令取代 $ git mv oldname newname 完成改名操作 #### 查看版本号 $ git describe 查看当前版本号 git log命令的--decorate参数可以在提交ID的旁边显示该提交关联的引用(里程碑或分支) #### 选择性添加文件 $ git add -i可以进入一个交互式界面操作 文件忽略功能 若把编译的目标文件及其他临时文件加入版本库中,浪费存储空间不说,甚至还会造成冲突。 可以创建一个.gitignore文件,其作用范围是所处目录及其子目录,编辑好要忽略的文件,然后添加到版本库中。如果不希望添加到库里,也不希望.gitignore文件带来干扰,可以在忽略文件中忽略自己。 被忽略以后,只有使用git status命令的--ignore参数,才会在状态显示中看到被忽略的文件。添加时git add -A和git add .都失效,只有在添加操作的命令行中明确写入文件名并提供-f参数才能真正添加。忽略只对未跟踪文件有效,对于已加入版本库的文件无效。 文件.gitignore设置的文件忽略是共享式的。之所以被称为“共享式”,是因为.gitignore被添加到版本库后成为了版本库的一部分,当版本库共享给他人(克隆),或者把版本库推送(PUSH)到集中式的服务器或他人的版本库时,这个忽略文件就会在他人的工作区中同样生效。相对应的是独享式,有两种方式: 第一种是针对具体版本库的,即在版本库.git目录下的一个文件.git/info/exclude来设置文件忽略; 另一种是全局的,即通过Git的配置变量core.excludesfile指定的一个忽略文件,其设置的忽略对所有本地版本库均有效。 如果文件忽略对于所有使用此版本库工作的人都有益,就通过在版本库相应目录下建一个.gitignore文件建立忽略;否则,如果是需要忽略工作区中创建的一个试验目录或试验性的文件,则使用本地忽略。 **忽略语法:** 忽略文件中的空行或以#开始的行会被忽略 可以使用通配符,参见Linux手册:glob(7) 如果名称的最前面是一个路径分割符(/),表明要忽略的文件在此目录下,而非子目录的文件 如果名称的最后面是一个路径分割符(/),表明要忽略的是整个目录,同名文件不忽略,否则同名的文件和目录都忽略 通过在名称的最前面添加一个感叹号(!),代表不忽略 #### 文件归档 git archive命令,可以对任意提交对应的目录树建立归档。 ~~~ $ git archive -o latest.zip HEAD  基于最新提交建立归档文件latest.zip $ git archive -o partial.tar HEAD src doc  只把目录src和doc建立到归档partial.tar中 $ git archive --format=tar --prefix=1.0/ v1.0 | gzip > foo-1.0.tar.gz  基于里程碑v1.0建立归档,并且为归档中的文件添加目录前缀1.0 ~~~ 在建立归档时,如果使用树对象ID进行归档,则使用当前时间作为归档中文件的修改时间,而如果使用提交ID或里程碑等,则使用提交建立的时间作为归档中文件的修改时间。 如果使用tar格式建立归档,并且使用提交ID或里程碑ID,还会把提交ID记录在归档文件的文件头中。记录在文件头中的提交ID可以通过git tar-commit-id命令获取。 如果希望在建立归档时忽略某些文件或目录,可以通过为相应文件或目录建立export-ignore属性加以实现。