主要内容:【Git 基本操作】
Git 基本操作
先来合个影
在 Git 里,“留影”用的命令叫做 tag
,更加专业的术语叫做“里程碑”(打 tag,或打标签)。
git tag -m "Say bye-bye to all previous practice." old_practice |
里程碑无非也是一个引用,通过记录提交 ID(或者创建 Tag 对象)来为当前版本库状态进行“留影”。
git rev-parse refs/tags/old_practice |
git describe
显示当前版本库的最新提交的版本号。格式:最近的 tag - 距离此 tag 的个数 - 该提交的 SHA1
git describe |
删除文件
rm *.txt
针对的是 工作区
,对 暂存区
和 版本库
没有任何影响。
git rm detached-commit.txt hack-1.txt new-commit.txt welcome.txt
删除动作加入了暂存区,commit 后在版本库罪行提交中删除了,在历史提交中尚在。
可以通过下面命令查看历史版本的文件列表:
git ls-files --with-tree=HEAD^ |
查看在历史版本中尚在的删除文件的内容:
git cat-file -p HEAD^:welcome.txt |
git add -u
命令会对工作区中 所有改动 以及 删除文件 添加到暂存区。
恢复删除的文件
git cat-file -p HEAD~1:welcome.txt > welcome.txt |
然后加入暂存区,提交到版本库:
git add -A |
这是通过再次添加的方式恢复被删除的文件。
git add -A
命令会对工作区中 所有改动 以及 新增文件 添加到暂存区。
移动文件
git mv welcome.txt README |
交互界面
git add -i |
文件忽略
cat > .gitignore << EOF |
查看被忽略的文件:
git status --ignored -s |
将忽略的文件强制添加到仓库中:
git add -f hello.h |
忽略只对未跟踪文件有效,对于已加入版本库的文件无效。 将 hello.h
添加到版本库后,对 hello.h
的修改都会立刻被跟踪到。.gitignore
只是对未入库的文件起作用。
本地独享式忽略文件
.gitignore 设置的文件忽略是共享式的,是因为.gitignore 被添加到版本库后成为了版本库的一部分,文件忽略在他人的工作区中同样生效。
享式忽略有两种方式:
- 在版本库.git 目录下的一个文件.git/info/exclude 来设置文件忽略。
- 通过 Git 的配置变量 core.excludesfile 指定的一个忽略文件,其设置的忽略对所有文件均有效。
git config --global core.excludesfile /home/jiangxin/_gitignore |
Git 忽略语法
#
表示开始的行被忽略。- 通配符。* 任意多字符,? 一个字符,[abc] 可选字符范围。
最后面是一个 /
表示忽略的是整个目录,同名文件不忽略,否则同名的文件和目录都忽略。最前面 !
表示不忽略。
# 这是注释行 —— 被忽略 |
文件归档
如果想压缩工作区文件归档,可能一不小心会把版本库(.git 目录)包含其中,甚至将工作区中的忽略文件、临时文件也包含其中。所以 Git 提供了一个归档命令 git archive
。
# 基于最新提交建立归档文件latest.zip |