高效使用git流程分享

准备

假设你已经 clone 了当前仓库,并且你的终端位置已经位于仓库目录中。

查询状态

查询状态常用的命令有 git statusgit branch

前者用于查询更改文件情况,后者用于展示所有分支。

chatbot-system$ git status
On branch develop
Your branch is up to date with 'origin/develop'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        doc/

nothing added to commit but untracked files present (use "git add" to track)
chatbot-system$ git branch
* develop
  lhy_dev
  main
  master

这里星号表示你当前所在的分支。

写代码之前

# 首先安装 pre-commit
pip install pre-commit          # 安装 pre-commit 用于检查提交
pre-commit install              # 将 pre-commit 挂载到 git 操作

git pull                        # 更新代码,始终基于最新版本进行开发

假设你现在已经在 develop 分支了,如果不在,请执行 git checkout develop

然后,你需要创建你自己的分支,进行代码开发。

git checkout -b demo_dev        # 请自行把 demo 换成你的标识符,表示基于当前分支创建分支 demo_dev 并且切换到新分支上

#例如:
git checkout -b otter_dev 

写代码之后

你这时候已经写完了代码,你需要进行如下操作。

git add <file>                  # 添加 <file>,表示准备提交这个文件,如果 <file> 是个目录,表示准备(递归地)提交这个目录下的所有文件
git commit -m <commit-message>  # 提交,<commit-message> 需要是字符串,如 "add function",用来给你本次的提交进行备注

通常来说,git commit 可能会失败,因为 pre-commit 的检查。

但是因为 pre-commit 会尽力去自动修复代码问题,因此这时候你应该尝试重复前面的 addcommit 步骤。

git add .
git commit -m "update handgesture"
git pull (更新使获取最新的仓库代码,此步可选)
git push

提交到远程

如果远程没有你的分支,你一般需要

git push -u origin demo_dev

git push -u origin otter_dev

这样就能提交,如果已经有了你的分支,你通常只需要 git push 即可。

(如果提示你远程存在冲突,那么请额外加上 -f 参数)

开始下一轮开发

如果你的提交已经通过 Merge Request 进入了 develop 分支,一般需要你更新 develop 分支,并重新创建你自己的分支,当然你也可以使用 rebase

假设你目前处于 develop 分支

删除原分支并重新创建

git pull
git branch -D demo_dev
git checkout -b demo_dev

使用 rebase 来解决

git pull
git checkout demo_dev
git rebase develop

其他问题

关于在github提pr

  • pr名称要概括内容
  • 一定要解决所有冲突
    • 一般是rebase main解决,保证合并、无冲突
    • 正确可merge的图
      在这里插入图片描述
# 我现在在自己的分支上,然后我需要执行以下四行,
# 确保最终提交时已经更新完毕没有冲突且在自己的分支上提交
git checkout main
git pull
git checkout [your_branch]
git rebase main
  • 当提交pr的时候没有显示绿色对号可以成功提交时,可能是中途别人提交了新的commit,导致版本不一致,此时需要更新一下本地版本

    # 此时是在自己的分支下
    # 从上游更新一下最新代码
    git fetch upstream
    
    # 把远程的最新代码合并到自己的分支中
    git merge upstream/main
    
    # 再执行git push推送上去
    git push
    
    # 此时再回到网页快点去提交pr就可以了;
    
  • 其他

# 查看历史记录
git log
# 输入q就可以退出了

# 可以学一下vim
	# 打开vim的时候默认不能写东西
	# 按a或者i进入编辑模式,写几个字的说明
	# 先按esc退出键退出编辑模式,再输入英文状态的冒号和wq两个字母(write,quit),代表保存并退出,然后按回车即可完成编辑,退出到终端目录
	:wq
	
# 假设(要恢复的)文件是main.py——》从最后(最新)一次的提交里把main.py复制到工作区(会覆盖)
git checkout HEAD main.py
  • 解决rebase的冲突
当在执行 git rebase 过程中遇到冲突时,Git会暂停rebase操作,并告诉你需要手动解决这些冲突。解决冲突的步骤如下:

打开有冲突的文件,可以使用代码编辑器或文本编辑器进行编辑。
在冲突标记 <<<<<<<, =======, >>>>>>> 之间进行修改,根据需要保留或删除代码。
==保存文件后,使用 git add 命令标记已解决的冲突文件==。
例如:

bash
Copy code
git add path/to/conflicted_file
==继续执行 git rebase --continue 命令,告诉Git你已经解决了冲突并且可以继续rebase操作==。
如果你不想解决这个冲突并且直接跳过这个提交,你可以使用 git rebase --skip 命令来跳过当前提交。

如果你想放弃rebase操作并返回到rebase之前的状态,可以使用 git rebase --abort 命令来中止rebase操作,回到rebase之前的状态。

请注意,在执行 git rebase 过程中,如果有多个提交冲突,你需要逐个解决并标记它们,然后继续rebase操作直到所有冲突解决完成。

相关推荐

  1. 2. git 分支使用流程

    2024-03-15 12:20:05       20 阅读
  2. git教程——日常工作git使用流程

    2024-03-15 12:20:05       42 阅读
  3. 项目使用git开发流程

    2024-03-15 12:20:05       6 阅读
  4. Git Submodule 全流程使用指南

    2024-03-15 12:20:05       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-15 12:20:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-15 12:20:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-15 12:20:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-15 12:20:05       20 阅读

热门阅读

  1. 简易线程池的实现

    2024-03-15 12:20:05       20 阅读
  2. mac springboot com.spotify Docker 容器化部署

    2024-03-15 12:20:05       22 阅读
  3. 字符串基础

    2024-03-15 12:20:05       18 阅读
  4. Spring MVC相关

    2024-03-15 12:20:05       15 阅读
  5. 23.查询所有列

    2024-03-15 12:20:05       17 阅读
  6. 前端协商缓存和强缓存

    2024-03-15 12:20:05       17 阅读
  7. JVM-3

    JVM-3

    2024-03-15 12:20:05      18 阅读
  8. python-0006-django路由

    2024-03-15 12:20:05       25 阅读
  9. Django 数据库表模型与迁移

    2024-03-15 12:20:05       20 阅读