git命令
1 | ### 配置相关命令 |
git的基本原理
- git的四个工作区域

Workspace :工作区,就是你平时存放项目代码的地方。
Index / Stage :暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
Repository :仓库区(或本地仓库) ,就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
Remote :远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。
- 本地的三个区域确切的说应该是git仓库中HEAD指向的版本:


常用命令

git文件操作
- 文件的四种状态
Untracked: 未跟踪此文件在文件夹中,但并没有加入到git库,不参与版本控制,通过git add 状态变为Staged。
Unmodify: 文件已经入库,未修改,即版本库中的文件快照内容与文件夹中完全一致,这种类型的文件有两种去处,如果它被修改,而变为Modifed ,如果使用git rm移出版本库,则成为 untracked文件。
Modified: 文件已修改,仅仅是修改,并没有进行其他的操作,这个文件也有两个去处,通过git add 可进入暂存 stagedt态使用git checkout 则丢弃修改过, 返回unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改。
Staged: 暂存状态执行 git commit则将修改同步到库中,这时库中的文件和本地文件又变为一致,文件为Unmodify 状态执行it reset HEAD filename 取消暂存,文件状态为Modified。
commit忽略文件
在git根目录下新建.gitignore文件,规则:
1 | *.txt # 忽略所有 .txt结尾的文件 |
多人协同开发
原则A、B开发者各从master分支拉取单独的分支开发,并将修改后的代码请求合并到master分支,当合并到master分支出现冲突时需要协商保存哪个人的版本。
git常用命令链接:https://gitee.com/all-about-git
git常用命令之前的文章:https://880755.xyz/zblog/?id=18
关于centos上添加了ssh公钥依然要输密码的解决办法
保存shh.pub到git服务器上,客户端在首次连接时输入一次正确的密码并使用下面的命令保存密码,下次在连接就不需要密码了
1 | 一直保存密码 |
Git的高级用法
1 | git checkout |
- 1.查看历史
1 | 每个提交在一行内显示 |
- 2.之前重置了一个不想保留的提交,但是现在又想要回滚?
1 | 获取所有操作历史 |
- 3.我把本地仓库搞得一团糟,应该怎么清理?
1 | git fetch origin |
- 4.查看我的分支和 master 的不同
1 | git diff master..my-branch |
- 5.定制提交
1 | 编辑上次提交 |
squash 提交
比方说我想要 rebase 最近 3 个提交:
git rebase -i HEAD~3
- 保留第一行的 pick,剩余提交替换为 squash 或 s
- 清理提交日志并保存(vi 编辑器中键入 :wq 即可保存)
1 | pick 64d26a1 feat: add index.js |
- 6.修正
比方说想在提交 fed14a4c 加上一些内容。

git 提交分支
1 | git add . |
- 7.rebase 的时候在每个提交上执行命令
如果特性很多,一个分支里可能有多个提交。如果测试失败了,你希望能找到导致测试失败的提交。这时候你可以使用 rebase --exec 命令在每个提交上执行命令。
1 | # 在最近 3 个提交上运行 `npm test` 命令 |

- 8.暂存
暂存不止是 git stash 和 git stash pop ;)
1 | 保存所有正在追踪的文件 |
- 9.清理
1 | 移除远程仓库上不存在的分支 |
- 10.GitHub = Git + Hub
我把 Hub 当成 git 的一个封装来用。你如果也想这么做,可以设置一个别名:alias git='hub'
1 | 打开浏览器访问仓库 url(仅限 GitHub 仓库)git browse |
- 11.额外福利:我最喜爱的 git 别名
1 | alias g='git' |
- 本文作者: 龙兄嵌入式
- 本文链接: https://hexo.880755.xyz/1970/01/01/zblog/download/101.git基本原理/