文章目录
- [0 前言](#0 前言)
- [1 初始化配置](#1 初始化配置)
- [2 创建仓库](#2 创建仓库)
- [3 工作区域和文件状态](#3 工作区域和文件状态)
- [4 添加和提交文件](#4 添加和提交文件)
- [5 git reset 回退版本](#5 git reset 回退版本)
- [6 git diff](#6 git diff)
- [7 分支](#7 分支)
- [8 合并分支](#8 合并分支)
0 前言
本篇文章分享的是一些git的使用方法,掌握这些方法基本就可以满足日常的开发需求了。
1 初始化配置
git config --global user.name "your name" # 配置用户姓名
git config --global user.email "your email" # 配置用户邮箱
git config --global --list # 查看当前配置信息
2 创建仓库
-
git init,初始化一个本地仓库,并关联到远程仓库
1.在本地创建一个新的目录,进入目录后执行 git init 即可初始化仓库,初始化之后文件夹里面会有一个.git的隐藏目录,这说明这个目录已经是一个git管理的仓库了 2.然后创建一个远程的空仓库,一般来说都是在github上创建的 3.通过 git remote add origin '远程仓库地址',将本地仓库和远程仓库关联起来,通过 git remote -v即可查看远程仓库的地址 4.我们在github上创建的新仓库的分支名叫main,但是我们本地初始化的仓库的分支名一般是master,所以我们要先将本地的分支名重命名,git branch -m main,将本地分支重命名为 main 5.完成这些之后就可以将本地代码和远程仓库代码进行同步了,也就还是把本地的代码推到远程仓库,在推送之前需要先pull一下,也就是将远程仓里的内容同步更新到本地仓库,这是会出现两种情况: 一是,如果远程仓库已经有了提交历史记录,那么本地和远程就具有不同的提交历史,就会导致pull失败,所以要改用git pull origin main --allow-unrelated-histories,然后就pull成功了。此时,本地和远程仓里的提交记录也会合并,可以使用git log查看全部的提交历史记录 二是,如果远程仓库没有提交记录,那么就直接推送成功 6.执行git add . 和 git commit -m "initial commit" 将本地仓库的内容提交 7.通过 git push -u origin main,将本地的内容全部推送到远程新建的仓库,-u是将本地分支和远程分支关联起来,这样之后push、pull的时候就不需要输入远程分支的信息了。要想确保推送成功,需要本地仓库不是空的,否则会报错:error: src refspec main does not match any
-
git clone,将已有的远程仓库拉取到本地
1.git clone '远程仓库地址' 2.通过 git remote -v,即可查看关联的远程仓库地址
3 工作区域和文件状态
-
工作区域分为:工作区、缓存区、本地仓库
-
文件状态分为:
未跟踪:未被 git 追踪的文件,一般是新建的文件,可以通过 git add 进行跟踪 未修改:没有被修改的文件 已修改:已被修改但没有add到暂存区的文件 已暂存:已经被修改而且被add到暂存区的文件 被忽略:一般指 .gitignore 文件中定义的文件
4 添加和提交文件
- git status:查看当前处于哪一个分支和当前文件的状态
- git add:将修改的文 件添加到暂存区,以便后续的commit操作
- git commit:提交暂存区的文件,这个操作不会提交未添加到暂存区的文件
- git log:查看提交的历史记录。也可以添加 --oneline 参数来查看简洁版的提交记录
5 git reset 回退版本
- git reset --soft '版本id':保存工作区和暂存区的内容
- git reset --hard '版本id':不保存工作区和暂存区的内容
- git reset --mixed '版本id':保存工作区内容,不保存暂存区内容,这也是resert的默认参数
- git ls-files:查看暂存区的文件
- git reflog:查看所有的操作记录,这个可以保证我们可以回退到任何一个版本
6 git diff
- git diff:比较工作区和暂存区之间的不同
- git diff HEAD:比较工作区和版本库之间的差异
- git diff --cached:比较暂存区和版本库之间的差异
- git diff "版本一ID" "版本二ID":比较两个版本之间的差异
- git diff "分支一" "分支二":比较两个分支之间的差异
7 分支
- git branch 分支名:创建分支
- git checkout 分支名:切换分支
- git switch 分支名:创建分支,并切换到分支,比较推荐
- git merge 分支名:合并分支到主干
- git branch -d 分支名:删除分支
- git log --graph --oneline --decorate --all:图形化查看分支的情况
8 合并分支
-
merge合并
1.当前在主干上,将其他的分支合并到主干上:git merge 分支名 2.解决合并分支时的冲突:直接手动编辑冲突的文件并保存,然后就可以添加和提交了,最后就合并成功了 3.如果不想继续合并了,使用 git merge --abort 终止合并
-
rebase合并
1.将当前分支合并到另一个分支上,这里有两种情况: 一是,当前在分支上,将分支合并到主干上,这里是将分支剪切并合并到主干上了:git rebase 分支名 二是,当前在主干上,这会将主干与另一分支共同提交之后的提交进行剪切,然后合并到分支上:git rebase 分支名 2.无论如何,最终的结果就是只有一个分支了,另一个分支就没有了
-
merge和rebase的区别
1.merge的优缺点 优点:不会破坏原分支的提交历史,方便回溯和查看 缺点:会产生额外的提交节点,分支图比较复杂 2.rebase的优缺点 优点:不会新增额外的提交记录,形成线性历史,比较直观和干净 缺点:会改变提交历史,改变了当前分支branch out的节点。避免在共享分支使用