文章目录
article
git
AI文章摘要
qwen-turbo-latest
加载中...
基本概念
Git是世界上最先进的分布式版本控制系统.
- git跟踪文本内容而不是文件, git的add命令将新文件或新修改的文件快照暂存到index中, 准备好下一次提交
- commit对象
- tree对象: 一个tree实体关联一个或多个blob实体, 一个tree实体可以关联两外一个tree实体, 从而构建目录结构
- blob对象
- tag对象
adduser -r -c 'git version control' -d /home/git -m git
# 设置用户名和邮箱,在~/.gitconfig文件中保存以下信息
git config --global user.name "xxxxx"
git config --global user.email "xxxxx@xxxxx"
git config --get remote.origin.url # 查看远程仓库地址
git config -l # 查看仓库参数
git push -u origin main
单分支管理
# 创建仓库有两种方式,一是通过git初始化一个仓库,二是通过git克隆一个远程仓库到本地
git clone xxx
git init # --bare指定一个没有工作目录的仓库, 一般用于服务器仓库,用作其他仓库的数据共享
# 修改工作目录文件,并添加文件到暂存区.
git add xxxx
git diff --cached #查看暂存区即将被提交的修改
git status #查看git管理状态o
# 提交暂存区内容到版本库, git每次提交都需要输入改动注释。:commit注释最好以一行短句子作为开头,来简要描述一下这次
# commit所作的修改(最好不要超过50个字符);然后空一行再把详细的注释写清楚。这样就可以很方便的用工具把
# commit释变成email通知,第一行作为标题,剩下的部分就作email的正文.
git commit # -a选项可以未保存到暂存区的已修改文件(不包含新建文件)存入暂存区并进行一次提交
# 分支创建、切换、合并、冲突处理
git branch #查看所有分支,后面如果指定了分支名则创建分支,-d参数可以删除一个已合当前分支合并的分支,-D表示删除没合并的分支
git checkout xxx # 切换分支
git merge xxx # 分支合并,隐含一个提交操作。若没有冲突则自动合并完毕,若合并失败,暂存区会进入特殊状态,直到你把冲突解决和才能提交成功。
git diff # 若分支合并失败,使用该命令查看冲突位置,手动解决后通过commit进行一次提交
gitk # 该命令可以以图形化方式展示git信息
# 差异比较
git diff 分支1..分支2
git diff 分支 # 查看当前工作目录与指定分支间的差异
git diff --cached # 查看暂存区与上次提交的差异
git diff HEAD # 查看工作目录与上次提交的差异
# 回滚
git reset --hard HEAD # reset命令可以回退版本库状态,并重置暂存库和工作区。--hard模式直接重置暂存区将工作区会退到版本库状态。已经提交合并操作可以使用--hard ORIG_HEAD模式回退
git revert # 迭代回滚,他和reset的区别是revert是向前迭代进行回滚的,会记录信息,而reset是删除信息。
# 日志
git log # 显示git提交记录,--stat显示文件更改信息,--pretty可以格式化日志,--graph会有一个终端图形效果
# 远程仓库同步
git remote add xxx xxxx # 给远程仓库起别名,该别名可以在pull和push中使用
git pull 仓库别名或仓库地址 分支
git push 仓库别名或仓库地址 分支
git fetch 仓库别名/分支
git merge 仓库别名/分支
多分支管理
git-merge
git-rebase
变基自动分析当前分支与上游分支的共同提交与差异提交,设置当前分支以上游分支为基础并尝试将当前分支上的差异提交应用进来。若当前分支与上游分支的不同提交有冲突时,则需要进行冲突修正之后才能继续进行变基,变基的过程中还可以操控当前分支不同提交应用到上游分支的过程(例如修改某个当前分支不同提交中的某个提交的提交日志)。
变基的上游分支为当前分支的历史提交节点时称为伪变基,伪变基主要应用于对当前分支的的提交节点的修改,例如它可以修改任意时间节点的提交的提交日志。
变基的特点:
- 变基将直接设置当前分支以上游分支为基础再进行后续操作。
- 变基结果上等价于拷贝上游分支到本地分支并应用当前分支上的差异提交,
- 变基不创建一个新的合并提交,在应用当前分支差异提交时自行解决冲突问题。
变基常用于保持提交记录的整洁,一般功能性的分支使用变基保持简洁的提交记录,当功能性分支稳定后通过合并合并到主分支。变基优先接受
git rebase [<upstream> [branch]]