Git原理及常用操作命令总结
git原理介绍及操作
git 原理——🏁
1.直接记录快照,而非差异比较
2.近乎所有操作都是本地执行
3.时刻保持数据完整性
4.多数操作仅添加数据
1.直接记录快照,而非差异比较
git 只关心文件数据的整体是否发生改变,而大多数其他系统则只关心文件内容的具体差异。
git 并不保存这些前后变化的差异数据。git 更像把变化的文件作快照后,记录在一个微型的文件系统中,每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为了提高性能,若文件没有变化,git 不会再次保存,而只对上次保存的快照作一链接。(这是git 同其他版本管理工具的重要区别)
2.近乎所有操作都是本地执行
在git中的绝大多数操作都只需要访问本地文件和资源,不用联网。
因为git 在本地磁盘上就保存着所有当前项目的历史更新,所以处理起来速度飞快。
举个例子,如果要浏览项目的历史更新摘要,git 不用到服务器上去取数据,直接从本地数据库读取后展示给你看,所以任何时候你都可以马上翻阅,无需等待。如果想要看当前版本的文件和一个月前的版本之间有何差异,git 会取出一个月前的快照和当前文件作一次差异运算,而不用请求远程服务器来做这件事,或是把老版本的文件拉到本地来作比较。
3.时刻保持数据完整性
在保存到git 之前,所有数据都要进行内容的校验和计算,并将此结果作为数据的唯一标识和索引。换句话说,不可能在你修改了文件或目录之后,git 一无所知,这项特性作为git 的设计哲学,建在整体的架构的最底层。所以如果文件在传输时变的不完整,或者磁盘损坏导致文件数据缺失,git 都能立即察觉。
4.多数操作仅添加数据
常用的 git 操作大多仅仅把数据添加到数据库。因为任何一种不可逆的操作,比如删除数据,都会使回退或重现历史版本变得困难重重。
git 代码提交过程——🚩
1.查看目前代码的修改状态 (git status)
2.查看代码修改内容
3.暂存需要提交的文件 (git add + file soureces)
4.提交已经暂存的文件 (git commit)
5.同步到服务器 (git push origin + master)
1.查看目前代码的修改状态
提交代码前,首先应该检查目前所做的修改,在终端里输入
git status
然后会有如下状态指示:
a> changes to be committed (已暂存)
b> changed but not updated (已修改)
c> untracked files (未追踪)
根据提示状态决定是否进行修改或者暂存
2.查看代码修改的内容
git diff <file>
比较某文件与最近提交节点的差异
注意:
如果该文件已暂存,那么应该使用 git diff -cached<file>
git diff <hashcode><hashcode> <file>
比较某文件在提交节点a,节点b的差异
技巧:
如果省略后面一个hashcode,则默认表示与上一提交节点比较
3.暂存需要提交的文件
git add <file>
在提交前,我们发现一些文件不需要提交,这时候可以:
git rm <file>,这样就可以临时将该文件从本地仓库移除 (慎用!)
在提交前,我们发现一些不希望add却已经添加的文件,我们可以:
git reset <file>,这样可以撤销添加文件 (挺好用的)
4.提交已暂存的文件
git commit
然后填写注释,通过 ctrl + c 退出注释界面,通过 :wq 进行保存并退出。
(命令 :!q 为不保存强制退出)
也可以通过 git commit -m "注释内容" 来填写注释并进行提交
git commit —amend
修改最近一次的提交,在上次提交注释书写有误或者漏提文件的情况下,可以使用此文件。
5.同步到服务器
同步到服务器钱前首先需要将服务器代码同步到本地
git pull origin master
如果执行失败,就按照提示还原有冲突的文件,然后再次尝试同步
(初次使用git 的同学可能在此处出现问题,记住按照提示修改原有的冲突文件,可以联系我)
当我们pull失败时,不如试试 git fetch origin master,然后再 git merge origin/master
这样做的原因是 git pull 会直接覆盖原有的代码,而 git fetch 会根据代码是否更改决定是否更新原有代码。
查找提示命令:
git checkout —<有冲突的文件路径> (很好用)
同步到服务器,在前两步没问题后,咱们就可以将代码提交到远程仓库了
git push origin <本地分支名>
若执行失败,一般是没有将服务器代码同步到本地导致的。先执行上面的git pull命令。
总结:今天给大家总结了git 原理和git 相关操作指令,有疑惑可以留言,我会尽快解答您的疑惑。
文章内容均为总结,禁止转载!