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有更新

需要测试updatefix是否可使用

# 此时 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
分类: 默认分类 标签: Git

评论

暂无评论数据

暂无评论数据

目录