高效使用git流程分享
准备
假设你已经 clone 了当前仓库,并且你的终端位置已经位于仓库目录中。
查询状态
查询状态常用的命令有 git status
和 git 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
会尽力去自动修复代码问题,因此这时候你应该尝试重复前面的 add
和 commit
步骤。
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操作直到所有冲突解决完成。