GIT 管理的常见操作总结
从Git - Branches in a Nutshell中看Git的一些常见操作,主要是设计理念和本地的操作。更复杂的远程协作和项目管理后续给出。
Git PRO
What is git
分布式版本控制系统(具有很多优点巴拉巴拉)
几个显著的技术上的特点:
- snapshot,not differences,no delta- based system
- Git thinks of tis data more like a series of a snapshots of a miniature filesystem
- every time you commit, or save the state of your project, Git basically takes a picture of what all your files look like at that moment and stores a reference to that snapshot. If the data is not changed , Git doesn’t store the file again.
- Nearly every operation is local
- you have the entire history of the project right there on your local disk, most operations seem almost instantaneous
- commit to local copy util you get to a network connection to upload
- Git has integrity
- you will see these hash values all over the place in Git because it uses them so much. In fact, Git stores everything in its database not by file name but 40 cahrs
- Git generally only adds data
- When you do actions in Git, nearly all over the place in Git because it uses them so much. It is hard to get the system to do anything that is not undoable or to make it erase in any way
- three state
- modified
- staged
- committed
基本的工作流程可以看作:
- 修改working directory的文件
- 当时觉得做的够好之后,add changed to the staging area
- 将所有暂存区的文件提交,stores that snapshot permanently to your Git directory
Getting start —- First time git setup
1 |
|
Basic topic
3.1 获取Git仓库
一种方式是将当前不受版本控制的本地目录转换为Git存储库
第二种方式是从其他地方clone现有的Git仓库
3.2 记录更改
1 |
|
工作目录中每个文件都存在 tracked or untracked
从生命周期来看,文件可以分为untracked、unmodified、modified、staged
Github将默认转换为main、但是git默认依旧是master
同时可以设置gitignore来不希望Git自动添加,甚至限制您未追踪
1 |
|
GitHub中维护了一个非常好的示例https://github.com/github/gitignore
仅仅查看更改记录不够,你希望检查更改了哪些东西
1 |
|
提交记录
1 |
|
从Git中删除文件必须将其从tracked文件中删除,也就是需要从暂存区中删除
1 |
|
3.3 查看提交的历史记录
上述操作可以完成基本的工作流。在这个基础上,创建很多次提交之后,我们可以使用现有提交历史记录的存储库,回顾一下发生了什么,我们可以使用git log
1 |
|
3.4 撤销操作
在任何staged,你都困难想撤销一些事情,通过回顾一些基本工具来保存撤销的更改
1 |
|
加入在修改两个文件之后,不小心add * 到暂存区
1 |
|
但是只想commit其中的一个,那么需要
1 |
|
注意reset是非常危险的命令,checkout也可以实现
1 |
|
在之后常用git restore而不是git reset
1 |
|
3.5 远程操作
origin是Git赋予您克隆的服务器的默认名称
1 |
|
从远程仓库连接
1 |
|
3.6 标签
和branch跟踪每次最新的commit 相反,tag是跟踪某一个特定commit的位置,如果不需要改动而仅查看的时候可以直接使用tag。推送到远程服务器需要显式的表达出tagname
1 |
|
3.7 别名 alias
创建自己snippets
3.8.1 (非常重要)分支模式
1 |
|
后序查看一些基本分支和合并的具体操作。想象一个工作流程,在网站上做一些工作,为一个新的故事创建一个分支,之后在另外分支做一些工作。因此可以参考一下的过程
1 |
|
上述导致已经会创建、合并、删除一些分支,这里还有一些分支管理工具
1 |
|
3.8.2 分支工作流程
已经有branch和merge的基础知识,应该用此做些什么?这里将轻量级分支的常见的工作流程展示,判断是否需要将其纳入自己的开发周期
常见的分类包括
- master 分支中完全稳定的代码
- develop或next 工作中用于测试稳定性,不一定总是稳定的。当它稳定之后可以合并到master
- proposed 协议更新
- topic 短生命周期的分支,用于处理一些简单的feature add
3.8.3 远程分支
- 待定