目录
一 参考资料
二 git 配置&检查
1.配置
2.检查
三 命令使用
1.提交
2.版本回退
3.跟踪对比
4.撤销修改
5.分支管理
四 使用流程图
五 常见问题
一 参考资料
参考资料1
git信息配置
二 git 配置&检查
1.配置
git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。
环境变量存放的位置:
/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
设置用户名和邮件地址后,在以后的每一个 Git 提交中都会使用这些信息,它们会写入到你的每一次提交中,不可更改
git config --global 进行全局安装 ,之后无论在该系统上做任何事情, Git 都会使用那些信息,若想要针对某个项目使用特定信息时,可在该项目目录下进行无–global命令来配置
git config --global user.name “liulina11” — 设置用户姓名
git config --global user.email “liulina11@meituan.com” — 设置邮箱
git config --local 为本地的工程里面添加单独的配置,可以使用不同的用户名和密码
git config 和 git config --local作用相同
git config --worktree
// 待补充
2.检查
若想要检查git配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置
图片中可以看到,红线部分就是第一步我们所配置的个人信息
若想针对某一项进行查看可通过 git config : 来检查 Git 的某一项配置
例如: git config user.name
git remote -v
查看远程库的信息
三 命令使用
1.提交
git add . & git add -p . (添加文件到暂存区,以便commit)
git add -p .增加了“补丁模式”的变化,这是一个内置的命令行程序。它遍历了每个更改,并要求确认是否要执行它们
当前文件已被加载到缓存去当中,这个时候文件已经可以开始追踪文件的变化。所谓 追踪也就是当文件进行修改时,git status命令就可以捕获到文件的变化信息
git commit -m ‘提交备注’
将文件提交到本地库
git commit -a -m “提交说明”
对那些被修改的文件单尚未暂存和提交的文件进行暂存和提交。(注意:对未暂存的新增文件无效。)
git status 查看相关文件的状态
git status -s 来查看简写的状态
M - 被修改,A - 被添加,D - 被删除,R - 重命名,?? - 未被跟踪 等等
git restore --staged <file文件路径> 撤销缓存
例如: git restore --staged client/pages/matrix/index.js
git stash [save message] 参考链接
stash命令可用于临时保存和回复修改,可跨分支
git stash pop //取出修改或者取出暂存
git pull 从远程拉取代码到本地
git push 将本地仓库已经提交的内容发布到远端
2.版本回退
git log 查看提交历史
不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面
git log --patch
会显示每次提交所引入的差异(按 补丁 的格式输出)
也可以限制显示的日志条目数量,例如: 使用 -1选项来只显示最近的一次提交:
git log -p -1
git log --stat
可以看到每次提交的简略统计信息
git log --pretty=oneline
可以使用不同于默认格式的方式展示提交历史
比如 oneline 会将每个提交放在一行显示,在浏览大量的提交时非常有用
另外还有 short,full 和 fuller 选项,它们展示信息的格式基本一致,但是详尽程度不一
git log --pretty=short git log --pretty=full git log --pretty=fuller
2.git reset 回退版本
当前版本–HEAD, 上上一个版本–HEAD^^, 往上100个版本–HEAD~100
未回退之前的信息:
git reset --hard HEAD^
git reflog 用来记录操作的每一次命令
git reset --hard ‘commitId’ 回退版本号再恢复到未回退之前的版本
版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。
此commitId可以在git reflog 查询出的信息中找到
(git push -f || git push --force )+ origin 分支名称
将回退的当前版本强行推送到远端
3.跟踪对比
git diff HEAD – 文件名 该命令可以查看工作区和本地版本库里面最新版本的区别
git diff 本地分支 origin/xxxx 该命令可以查看工作区和远程版本库里面最新版本的区别
4.撤销修改
git checkout . & git checkout 文件名 丢弃工作区的修改
丢弃工作区修改有两种情况:
一种是自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。
已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
git reset HEAD 文件名 把暂存区的修改撤销掉,重新放回工作区
git reset --hard origin/develop //使用指定分支的代码(此处develop)强制覆盖代码
5.分支管理
创建&合并分支
git checkout -b 分支名
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:
git branch 分支名(查看本地当前分支)& git checkout 分支名 (切换分支)
git checkout -b dev origin/dev 切换并推送到远程
git push origin newbranch:newbranch 新建一个远程分支(同名字的远程分支)
git push --set-upstream origin newbranch 把本地的新分支,和远程的新分支关联
git branch --set-upstream-to=origin/<分支> 本地分支名称
git branch -r 查看远程分支
查看本地分支与远程分支的追踪:git branch -vv
git fetch origin master:dev 从远程拉取分支并创建本地分支
git fetch 更新本地所有分支
git fetch origin 分支名 只更新《分支名》分支到本地
git checkout -b newBrach origin/master 在远程origin/master分支的基础上,创建一个新分支newBrach,并切换到newBranch上
git merge 合并分支
例如:将feature分支合并到master分支:
a、切换到master分支:git checkout master
b、合并分支:git merge feature
git merge --no-ff -m “目标分支” dev(源分支)
git push origin 分支名 本地分支推送到远端
git push -u
举个例子:我要把本地分支mybranch1与远程仓库origin里的分支mybranch1建立关联。
(如果使用下列途径1的话,首先,你要切换到mybranch1分支上(git checkout mybranch1))
两个途径:1. git push -u origin mybranch1 2. git branch --set-upstream-to=origin/mybranch1 mybranch1
这两种方式都可以达到目的。但是1方法更通用,因为你的远程库有可能并没有mybranch1分支,这种情况下你用2方法就不可行,连目标分支都不存在,怎么进行关联呢?所以可以总结一下:git push -u origin mybranch1 相当于 git push origin mybranch1 + git branch --set-upstream-to=origin/mybranch1 mybranch1
git branch -m current-branch-name new-branch-name
git branch -d 分支名 删除本地分支(要强行删除,需要使用大写的-D参数)
git push origin --delete 分支名
删除远程分支
git push origin --delete dev
注意: 在删除远程分支时,同名的本地分支并不会被删除,所以还需要单独删除本地同名分支
合并master代码到本地分支
git pull origin master
Rebase-变基
// 待完善
操作步骤
首先切换到目标(master)分支,git pull拉取最新的分支状态
然后切回local分支
通过git rebase -i 将本地的多次提交合并为一个,以简化提交历史。本地有多个提交时,如果不进行这一步,在git rebase master时会多次解决冲突(最坏情况下,每一个提交都会相应解决一个冲突)
git rebase master 将master最新的分支同步到本地,这个过程可能需要手动解决冲突(如果进行了上一步的话,只用解决一次冲突)
然后切换到master分支,git merge将本地的local分支内容合并到master分支
git push将master分支的提交上传
代码块
git checkout master
git pull
git checkout local
git rebase -i HEAD~2 //合并提交 --- 2表示合并两个
git rebase master---->解决冲突--->git rebase --continue
git checkout master
git merge local
git push
四 使用流程图
五 常见问题
1.git status 和 git diff 的区别
// 待补充
2.git fetch 与 git pull的区别
// 待补充
3.git merge & git rebase 原理
// 待补充
4.git merge squash 和 rebase 区别
// 待补充
5.merge 的几种形式
普通的 merge
rebase merge
squash merge
// 待完善