高效使用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操作直到所有冲突解决完成。
相关推荐
唔知小罗6 小时前
git config是做什么的?
git
用户3157476081357 小时前
成为程序员的必经之路” Git “,你学会了吗?
面试·github·全栈
墨染8668 小时前
HP G10服务器ESXI6.7告警提示ramdisk tmp已满
github
油泼辣子多加10 小时前
2024年11月13日Github流行趋势
github
叫我龙翔10 小时前
【项目日记】仿mudou的高并发服务器 --- 整体框架搭建 ,实现时间轮模块
运维·服务器·网络·c++·github
不是鱼11 小时前
新人程序猿必备的git技能(超实用基础版)
git·github
Srlua13 小时前
从创建 GitHub 项目到推送代码:Git 命令行操作全流程
github·gittee
Exclusive_Cat15 小时前
Git的使用(基础语句)
git
江上清风山间明月15 小时前
git撤销、回退某个commit的修改
git·commit·版本·撤销·回退·特定
cui_win15 小时前
Redis高可用-主从复制
redis·git·github·主从复制·哨兵