git用法总结
====================================以下内容拷贝自第四期一生一芯的讲义
#查看存档信息
使用
git log
查看目前为止所有的存档.
使用
git status
可以得知, 与当前存档相比, 哪些文件发生了变化.
#存档
你可以像以前一样编写代码. 等到你的开发取得了一些阶段性成果, 你应该马上进行"存档".
首先你需要使用 git status
查看是否有新的文件或已修改的文件未被跟踪, 若有, 则使用 git add
将文件加入跟踪列表, 例如
git add file.c
会将 file.c
加入跟踪列表. 如果需要一次添加所有未被跟踪的文件, 你可以使用
git add -A
但这样可能会跟踪了一些不必要的文件, 例如编译产生的 .o
文件, 和最后产生的可执行文件. 事实上, 我们只需要跟踪代码源文件即可. 为了让 git
在添加跟踪文件之前作筛选, 你可以编辑 .gitignore
文件(你可以使用 ls -a
命令看到它), 在里面给出需要被 git
忽略的文件和文件类型.
把新文件加入跟踪列表后, 使用 git status
再次确认. 确认无误后就可以存档了, 使用
git commit
提交工程当前的状态. 执行这条命令后, 将会弹出文本编辑器, 你需要在第一行中添加本次存档的注释, 例如"fix bug for xxx". 你应该尽可能添加详细的注释, 将来你需要根据这些注释来区别不同的存档. 编写好注释之后, 保存并退出文本编辑器, 存档成功. 你可以使用 git log
查看存档记录, 你应该能看到刚才编辑的注释.
#读档
如果你遇到了上文提到的让你悲痛欲绝的情况, 现在你可以使用光玉来救你一命了. 首先使用 git log
来查看已有的存档, 并决定你需要回到哪个过去. 每一份存档都有一个hash code, 例如 b87c512d10348fd8f1e32ddea8ec95f87215aaa5
, 你需要通过hash code来告诉 git
你希望读哪一个档. 使用以下命令进行读档:
git reset --hard b87c
其中 b87c
是上文hash code的前缀: 你不需要输入整个hash code. 这时你再看看你的代码, 你已经成功地回到了过去!
但事实上, 在使用 git reset
的hard模式之前, 你需要再三确认选择的存档是不是你的真正目标. 如果你读入了一个较早的存档, 那么比这个存档新的所有记录都将被删除! 这意为着你不能随便回到"将来"了. (因此,不要随便用reset --hard)
#第三视点
当然还是有办法来避免上文提到的副作用的, 这就是 git
的分支功能. 使用命令
git branch
查看所有分支. 其中 master
是主分支, 使用 git init
初始化之后会自动建立主分支.
读档的时候使用以下命令
git checkout b87c (哇!还能这样用?太神奇了!)
而不是 git reset
. 这时你将处于一个虚构的分支中, 你可以
- 查看
b87c
存档的内容 (能看内容) - 使用以下命令切换到其它分支
git checkout 分支名
- 对代码的内容进行修改, 但你不能使用
git commit
进行存档, 你需要使用
git checkout -B 分支名
把修改结果保存到一个新的分支中, 如果分支已存在, 其内容将会被覆盖
不同的分支之间不会相互干扰, 这也给项目的分布式开发带来了便利. 有了分支功能, 你就可以像第三视点那样在一个世界的不同时间(一个分支的多个存档), 或者是多个平行世界(多个分支)之间来回穿梭了.
#更多功能
以上介绍的是 git
的一些基本功能, git
还提供很多强大的功能, 例如使用 git diff
比较同一个文件在不同版本中的区别, 使用 git bisect
进行二分搜索来寻找一个bug在哪次提交中被引入(TODO:以后可以好好了解下这玩意儿)...
其它功能的使用请参考 git help
, man git
, 或者在网上搜索相关资料.
=====================================感谢一生一芯认真设计的讲义!
2. git常见报错之一
某些git服务器会要求clone的人提供身份,当你没有公钥(或是没有登录)时,就会拒绝让你clone。
解决方案:生成一对密钥(一个公钥一个私钥),把自己的公钥添加到github的个人设置中,接着就能clone了。
知识来源:https://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E7%94%9F%E6%88%90-SSH-%E5%85%AC%E9%92%A5(也是中文版pro git)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?