深入了解Git
总览
git常见命令、git提交对象和校验和、git分支和冲突处理、开源协议
# Bash
Bash,Unix的一种,Linux与Mac OS X都将它作为默认shell。
- Git Bash 就是一个shell,是Windows下的命令工具,可以执行Linux命令
- 基于CMD的,在CMD的基础上增添新的命令与功能
# Git CMD
- 命令提示行CMD,是Windows操作系统上的命令行解释程序
# Git命令
git status
查看文件状态
git reset
版本回退,git通过HEAD指针记录当前版本,总是指向最后一次提交
git reset --hard HEAD^
回退到上一个版本
git add .
将所有文件加入暂存区
git commit -m ""
将暂存区内容添加到本地仓库
git log
查看提交的历史
git reflog
查看记录的每一次提交历史不会被回退影响
git remote
查看远程仓库
git remote add (name)(url)
添加远程仓库
git branch --set-upstream-to=origin/master
建立关联,上游分支
git push
推送
git config push.default simple
默认 找远程仓库中相同名称的分支
git config push.default current
找远程仓库中相同名称的分支,若没找到则新建一个
git tag v1.0
打标签
git push origin v1.0
推送
# Git 校验和
git中所有的数据在存储前都计算校验和,然后以校验和来引用。校验和机制叫做SHA-1散列(hash哈希)由40个十六进制字符组成的字符串
# Git提交对象
git/object
在进行提交操作时,Git会保存一个提交对象(commit object) :该提交对象会包含—个指向暂存内容快照的指针; 该提交对象还包含了作者的姓名和邮箱、提交时输入的信息以及指向它的父对象的指针;首次提交产生的提交对象没有父对象,普通提交操作产生的提交对象有一个父对象;而由多个分支合并产生的提交对象有多个父对象;
# Git 分支和冲突原理
最开始HEAD指向master,新建分支后HEAD指向对应分支
删除分支原理是删除HEAD引用指针,并不是删除分支提交历史。
# Git 创建关联远程仓库
1.关联远程仓库
git remote add origin 地址
2.设置上游分支
git fetch origin main
git branch --set-upstream-to=origin/main
3.合并没有共同base的分支
git merge --allow-unrelated-histories
4.推送
git config push.default upstream
最简方法
git checkout main
# Git远程分支
git checkout --track origin/main
git branch -d master
删除分支
推送新分支 git push origin 分支
这样也行 git branch --set-upstream-to=origin/分支
如果你尝试检出的分支(a)不存在且(b)刚好只有一个名字与之匹配的远程分支,那么Git 就会为你创建一个跟踪分支
git checkout 分支
# Git rebase 和 git merge
merge用于记录git的所有历史,那么分支的历史错综复杂,也全部记录下来;
rebase用于简化历史记录,将两个分支的历史简化,整个历史更加简洁;永远不要在主分支上使用rebase
主分支使用rebase的情况,会污染主分支