高效使用git流程分享

准备

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

查询状态

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

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

text 复制代码
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

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

写代码之前

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

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

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

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

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

#例如:
git checkout -b otter_dev 

写代码之后

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

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

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

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

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

提交到远程

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

bash 复制代码
git push -u origin demo_dev

git push -u origin otter_dev

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

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

开始下一轮开发

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

假设你目前处于 develop 分支。

删除原分支并重新创建

bash 复制代码
git pull
git branch -D demo_dev
git checkout -b demo_dev

使用 rebase 来解决

bash 复制代码
git pull
git checkout demo_dev
git rebase develop

其他问题

关于在github提pr

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

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

bash 复制代码
# 查看历史记录
git log
# 输入q就可以退出了

# 可以学一下vim
	# 打开vim的时候默认不能写东西
	# 按a或者i进入编辑模式,写几个字的说明
	# 先按esc退出键退出编辑模式,再输入英文状态的冒号和wq两个字母(write,quit),代表保存并退出,然后按回车即可完成编辑,退出到终端目录
	:wq
	
# 假设(要恢复的)文件是main.py------》从最后(最新)一次的提交里把main.py复制到工作区(会覆盖)
git checkout HEAD main.py
  • 解决rebase的冲突
bash 复制代码
当在执行 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操作直到所有冲突解决完成。
相关推荐
WebCandy11 分钟前
Github Copilot:已免费,速回归!!!
编辑器·github·copilot·ai编程
神仙别闹20 分钟前
基于C#实现的(WinForm)模拟操作系统文件管理系统
java·git·ffmpeg
墨理学AI8 小时前
GitHub 桌面版配置 |可视化界面进行上传到远程仓库 | gitLab 配置【把密码存在本地服务器】
gitlab·github·github 桌面版
月如琉璃10 小时前
1.gitlab 服务器搭建流程
服务器·gitlab
刘大辉在路上10 小时前
突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
git·后端·gitlab·版本管理·源代码管理
AI理性派思考者15 小时前
【保姆教程】手把手教你在Linux系统搭建早期alpha项目cysic的验证者&证明者
后端·github·gpu
wy02_19 小时前
Linux下载RabbitMQ,并解决Github拒绝访问443的问题
linux·rabbitmq·github
落落鱼201319 小时前
cenos如何升级git到2以上版本
git
Domain-zhuo19 小时前
Git常用命令
前端·git·gitee·github·gitea·gitcode
aPurpleBerry20 小时前
解决 fatal: detected dubious ownership in repository at ‘XXXX‘ 问题
github