常用:
// 多人协作开发
// 默认在个人分支开发cym
git add . // 提交工作区的代码到暂存区
git commit -m '修改的主题' =》 先把个人分支上的代码提交到本地仓库
git checkout master/dev =》切换到master/dev分支
git pull =》 把远程 master/dev 分支上的最新代码更新到本地master/dev
git merge cym // 合并个人开发分支代码到本地master/dev
// 有冲突处理冲突,没有直接push
git push origin master
git checkout cym // 切换到个人开发分支cym
git merge master/dev // 把 master/dev 分支上的代码合并到个人分支cym
git push origin cym // 把最新代码push到远程个人分支
// 注意:合并代码的时候有冲突的时候需要手动解决冲突,解决完成后需要重新add . 和commint
- 提交规范
# 主要type
feat: 增加新功能
fix: 修复bug
# 特殊type
docs: 只改动了文档相关的内容
style: 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
build: 构造工具的或者外部依赖的改动,例如webpack,npm
refactor: 代码重构时使用
revert: 执行git revert打印的message
# 暂不使用type
test: 添加测试或者修改现有测试
perf: 提高性能的改动
ci: 与CI(持续集成服务)有关的改动
chore: 不修改src或者test的其余修改,例如构建过程或辅助工具的变动
# git查看远程仓库地址
```js
git remote -v // 查看远程仓库的地址
1、切换远程仓库地址:
方式一:修改远程仓库地址
【git remote set-url origin URL】 更换远程仓库地址,URL为新地址。
方式二:先删除远程仓库地址,然后再添加
【git remote rm origin】 删除现有远程仓库
【git remote add origin url】添加新远程仓库
回滚到上一个版本
git log // 查看记录
`git log`命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是`append GPL`,上一次是`add distributed`,最早的一次是`wrote a readme file`。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上`--pretty=oneline`参数:
git reset --hard HEAD^ // 回退到上一个版本
// 或者是
git reset --hard 1094axxxxxx // 回退到指定版本
撤销上一次提交
- 在 Git 中,如果你想撤销上一次提交,有几种常见的方法,具体取决于你想要达到的效果。以下是几种常用的方式:
撤销上一次提交,但生成一个新的提交来反转更改(推荐,因为它不会重写历史)
- 如果你想撤销上一次提交,但保留历史记录(即生成一个新的提交来反转更改),可以使用 `git revert`。
git revert HEAD
- **效果**:
- 生成一个新的提交,内容是撤销上一次提交的更改。
- 历史记录会保留,适合已经推送到远程仓库的情况。
撤销上一次提交,但保留更改(软重置)
git reset --soft HEAD~1
- **效果**:
- 撤销上一次提交,但保留更改到暂存区(`git status` 会显示这些更改)。
- 你可以重新修改文件并提交。
撤销上一次提交,并丢弃更改(硬重置)
git reset --hard HEAD~1
- **效果**:
- 撤销上一次提交,并丢弃所有更改。
- 工作目录和暂存区都会恢复到上一次提交的状态。
- **注意**:此操作不可逆,谨慎使用!


如果有代码需要初始化提交:
- 1.现有代码初始化提交到新的仓库
git init
git add .
git commit -m "first commit"
git remote add origin https://gitee.com/summer2020/qf-mini-app.git
git push -u origin master
- 2.已存在远程仓库的代码提交到新的仓库
git remote -v // 1.查看远程仓库的地址
git remote set-url origin URL // 2.更换远程仓库地址,URL为新地址(方法一)
// 方式二:先删除远程仓库地址,然后再添加
git remote rm origin // 删除现有远程仓库
git remote add origin url // 添加新远程仓库
git init // 初始化本地仓库
git pull origin master // 重点,一定要走这步否则会报错,如图
git add .
git commit -m 'first'
git push origin master
git fetch 和 git remote update origin --prune 的区别
git fetch 拉取分支,远程被删除的分支不会同步删除本地origin的分支(origin/xxxx)
- 比如你有个本地分支feat,然后也有本地origin/feat,假设remote新增了test分支且其他人删除了remote的feat.
- 否则git fetch可以在本地产生origin/test(但没有本地分支test,这个要你checkout到test的时候才会产生),但不会删除本地的origin/feat.
git update origin --prune:必须带有–prune,否则跟git fetch等价。**除了会拉取新分支,还会删除掉别人远程删除的分支**
- 按上面的例子,执行这个命令后可以拉取origin/test(但没有本地分支test),**且删除本地的origin/feat**(但不会删除你本地的分支feat).
- 在remote add后不要着急git add,一定要git pull origin master,出现这个原因.
- 是因为你在码云创建的仓库有ReadMe文件,而本地没有,造成本地和远程的不同步,
- 那么有两种方案可以解决:
第一种 :
本地没有ReadMe文件,那么就在本地生成一个:
git pull --rebase origin master 本地生成ReadMe文件
git push origin master
第二种:
那我就强制上传覆盖远程文件,
git push -f origin master
(这个命令在团队开发的时候最好不要用)
- 3.第三方子模块更新与提交参考:blog.csdn.net/weixin_4397…
常见错误:


其他
git branch --list // 查看分支
git add . // 提交工作区的代码到暂存区
git status // 查看代码的状态 、如果是绿色的就说明已经保存了

git status // 红色代表发生修改上半部分是修改的文件、下面是新增的文件

本版回退:https://www.liaoxuefeng.com/wiki/896043488029600/897013573512192
git pull 报错:
fatal: It seems that there is already a rebase-merge directory, and
case, please try
git rebase (--continue | --abort | --skip)
If that is not the case, please
rm -fr ".git/rebase-merge"
and run me again. I am stopping in case you still have something
valuable there


git rebase --abort 中止变基



解决方法
# git rebase --abort =>中止变基
# git log =>找到上一个或者是当前最新的提交记录
# git reset --hard xxxx(记录git reset --hard e8704a38dc030a2749a614d27438560d57570c76)
# git checkout cym 自己的开发分支
# git merge master
# 修改自己开发分支的代码。重新提交
# git checkout master
# git pull 拉起最新远程代码
# git merge cym(自己开发分支的代码)
# git psuh origin master
删除分支:git branch -d 分支名称

拉取远端分支

- 解决方法:
- 关联
git bbranch --set-upstream-to=origin/dev - git pull
- 关联
切换本地git账号
有的时候我们有两个甚至多个git账号(公司的git账号和自己的git),我们需要在提交之前查看自己的git账号必要时进行切换。
- 查看当前git用户名:
git config user.name - 查看当前git邮箱:
git config user.email - 切换git用户名:
git config --global user.name "YOURUSERNAME" - 切换git邮箱:
git config --global user.email "YOUREMAIL"