ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

git用法总结

2022-02-24 22:34:00  阅读:155  来源: 互联网

标签:总结 文件 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 , 或者在网上搜索相关资料.

 

=====================================感谢一生一芯认真设计的讲义!

 

标签:总结,文件,git,存档,用法,跟踪,使用,分支
来源: https://www.cnblogs.com/yinhuachen/p/15933859.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有