Pro Git --- 读书笔记 (Chaptero2)
获取Git仓库
- 初始化
git init
- 有一个尚未进行版本控制的目录,可以初始化一个仓库,初始化后,目录内的文件还没被跟踪
- 克隆
git clone <url>
- 默认配置下远程Git仓库中的每一个文件的每一个版本都将被拉取下来
- 这会在当前目录下创建一个目标目录,然后初始化一个.git目录,从远程仓库中拉取所有的数据放入.git中,然后从中读取最新版本的文件拷贝。
记录那次更新到仓库
- 工作目录下的文件不外乎两种状态:已跟踪或未跟踪
- 已跟踪的文件是指被纳入了版本控制的文件,在上一次快照中有它们的记录,工作一段时间后,它们的状态可能是未修改、已修改或放入暂存区。
- 未跟踪的文件,既不存在与上一次的快照中,也不存在暂存区中
检查当前文件状态
git status
- 用于检查哪些文件处于什么状态
跟踪新文件/暂存已修改文件
git add <file>
- 开始跟踪某一个文件
- 如果是一个目录名,将会递归地跟踪该目录下的所有文件
- 将已跟踪发生修改后还没放入暂存区的文件,暂存这次更新
- 将命令理解为“精确地将内容添加到下一次提交中”
- 提交时,提交的版本是当前文件执行
add
命令时的版本,而不是执行提交时的文件当前版本,所以在add
之后又修改了文件,需要重新执行add
将最新版本暂存
忽略文件
文件.gitignore的格式规范:
- 所有空行或者#开头的行都会被Git忽略
- 可以使用标准的glob模式,会递归地应用在整个工作区
- 匹配模式可以以(/)开头防止递归
- 匹配模式可以以(/)结尾指定目录
- 要忽略指定模式之外的文件或目录,可以在模式之前加上(!)取反
查看差异
git diff
- 比较的是工作目录中当前文件和暂存区的快照的差异
git diff --staged
- 比较的是已暂存的和已提交的差异
提交更新
- 提交时记录的放在暂存区的快照,任何还没暂存文件的仍然保持已修改状态,可以在下一次提交时纳入版本管理
git commit -a
- 跳过使用暂存区,将所有已经跟踪的文件暂存并提交
移除文件
git rm
- 从已跟踪的文件清单中删除(从暂存区中移除),并连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件中
git rm --cached
- 希望从暂存区中移除,但是希望仍然保留在工作目录中
查看提交历史
git log
- 会按照提交的时间排列,默认按照时间最新提交的排列
git log -p
- 会显示提交的差异
撤销操作
git commit --amend
- 提交后发现漏了几个文件没有提交,或者提交信息错误,可以带上这个选项重新提交
取消暂存的文件
git reset HEAD <file>
- 可以将已修改暂存的文件,取消暂存
撤销对文件的修改
git checkout -- <file>
-
对这个文件的任何本地修改都会消失,Git会用最近提交的版本覆盖它
-
记住,在Git中任何已提交的东西几乎都是可以恢复的
远程仓库的使用
查看远程仓库
git remote
- 会列出指定的每一个远程服务器的简写
git remote -v
- 会显示远程仓库使用的Git保存的简写与其对应的URL
添加远程仓库
git remote add <shortname> <url>
- 添加一个远程仓库,同时指定一个简写
从远程仓库中抓取或拉取
git fetch <remote>
-
访问远程仓库,从中拉取所有本地还没有的文件,执行之后,将会拥有那个远程仓库中所有分支的引用
-
注意,这个命令只会将数据下载到本地,并不会自动合并或修改当前的工作
git pull
- 如果当前分支设置了跟踪远程分支,可以用这个命令,会自动抓取后合并该远程分支到当前分支
推送到远程仓库
git push <remote> <branch>
- 推送项目到上游
查看远程仓库
git remote show <remote>
- 查看到某个远程仓库的具体信息
远程仓库的重命名和移除
git remote rename <old> <new>
- 重命名
git remote remove <remote>
- 所有和这个远程仓库相关的远程跟踪分支以及配置信息都会一起被删除
打标签
- 给仓库历史的某一次提交打上标签
列出标签
git tag
git tag -l "v1.8.5*"
- 匹配标签名
创建标签
-
轻量标签,很像一个不会改变的分支,它只是某个特定提交的引用
-
附注标签,是在Git数据库中一个完整的对象,会包含打标签者的名字、电子邮件地址、日期时间和一个标签信息
git tag -a <tagname> -m <message>
- 创建附注标签
git show <tag>
- 显示标签信息和对应的提交信息
git tag <tagname>
- 创建轻量标签
git tag -a <tagname> <commit>
- 对历史提交打标签
git push <remote> <tagname>
- 标签默认不会推送到远程仓库,需要显示推送
git push <remote> --tags
- 会将远程仓库中没有的标签全部推送到远程仓库
git tag -d <tagname>
- 删除标签
git push <remote> --delete <tagname>
- 删除远程仓库的标签
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?