学会正确的Git工作流
1 原工作流
# Remote
main(master): init
# Local
main(master): init
# Disk
main(master): init
2 正常流程
2.1 正常push origin
git clone
# 在Local建立 my-feature branch
git checkout -b my-feature
# 在Disk改动后,可查看变化
git disff
# git add .
git add <change_file>
# commit 到 Local, 此时Local的main并没有改动
# 使 Local 工作流 my-feature: init->fix
# Remote工作流 my-feature: init
git commit -m "fix"
# push 到 Remote 的 my-feature (自动创建)
# 使 Remote 工作流 my-feature: init->fix
git push origin my-feature
2.2 合并commit
如果有多个commit,使用rebase进行合并:
git rebase -i HEAD~4 # HEAD~4表示合并最近四个commits
在打开的编辑器中,你会看到一列commit列表,每个commit前都有一个命令提示符,默认是pick
。将除了第一个commit之外的其他commit前的pick
改为squash
或者s
。
# 修改commit信息
git rebase --continue
# 再 push 到 Remote
git push -f origin my-feature
2.3 PR
接收PR:Squash and merge
进行合并所有commit成update2
这个commit
然后手动删除Remote上的my-feature
然后Local/Disk:
# 删除 Local/Disk 的my-feature
git checkout main
git branch -D my-feature
# 拉取 Remote 的 main
git pull origin master
3 Commit时Remote有更新
3.1 正常push origin
git clone
# 在Local建立 my-feature branch
git checkout -b my-feature
# 在Disk改动后,可查看变化
git disff
# git add .
git add <change_file>
# commit 到 Local, 此时Local的main并没有改动
# 使 Local 工作流 my-feature: init->fix
# Remote工作流 my-feature: init
git commit -m "fix"
# push 到 Remote 的 my-feature (自动创建)
# 使 Remote 工作流 my-feature: init->fix
git push origin my-feature
3.2 Commit时Remote有更新
需要测试update
下fix
是否可使用
# 此时 Remote 的mian有更新: update
# 此时的Remote工作流 my-feature: init->update
# 此时的Remote工作流 my-feature: init->fix
# 首先需要 Disk 切换到 main
git checkout -b main
# Local 与 Disk 同步 Remote 的mian
git pull origain master
# Local 再切换到 my-feature
git checkout my-feature
# 让 my-feature 同步 Remote 的mian
# 使 Disk/Local 的工作流为 init->update->fix
git rebase main
rebase
后有可能会有rebase confit
,需要手动选择需要哪一段代码。选择/修改完后,重新强制推送到Remote
git push -f origin my-feature
3.3 合并commit
如果有多个commit,使用rebase进行合并:
git rebase -i HEAD~4 # HEAD~4表示合并最近四个commits
在打开的编辑器中,你会看到一列commit列表,每个commit前都有一个命令提示符,默认是pick
。将除了第一个commit之外的其他commit前的pick
改为squash
或者s
。
# 修改commit信息
git rebase --continue
# 再 push 到 Remote
git push -f origin my-feature
3.4 PR
接收PR:Squash and merge
进行合并所有commit成update2
这个commit
然后手动删除Remote上的my-feature
然后Local/Disk:
# 删除 Local/Disk 的my-feature
git checkout main
git branch -D my-feature
# 拉取 Remote 的 main
git pull origin master
版权申明
本文系作者 @ATRAY 原创发布在ATRAY站点。未经许可,禁止转载。
暂无评论数据