Git实际开发场景

日常工作的Git流程

工作流程1

1.git clone //到本地
2.git checkout -b xxx //切换至新分支xxx
(相当于复制了remote的仓库到本地的xxx分支上
3.修改或者添加本地代码(部署在硬盘的源文件上)
4.git diff //查看自己对代码做出的改变
5.git add //上传更新后的代码至暂存区
6.git commit -m 注释 //可以将暂存区里更新后的代码更新到本地git
7.git push origin xxx //将本地的xxxgit分支上传至github上的git
-——————————————————————————————–
(如果在写自己的代码过程中发现远端GitHub上代码出现改变)
1.git checkout main //切换回main分支
2.git pull origin main //将远端修改过的代码再更新到本地

​ (即将远程origin主机的master分支拉取过来和本地的当前分支进行合并)
3.git checkout xxx //回到xxx分支
4.git rebase main //我在xxx分支上,先把main移过来,然后根据我的commit来修改成新的内容
(中途可能会出现,rebase conflict —–》手动选择保留哪段代码)
5.git push -f origin xxx //把rebase后并且更新过的代码再push到远端github上
(-f —》强行)
6.原项目主人采用pull request 中的 squash and merge 合并所有不同的commit
-———————————————————————————————
远端完成更新后
1.git branch -d xxx 删除本地的git分支
2.git pull origin main 再把远端的最新代码拉至本地

工作流程2

1
2
3
4
5
6
7
8
9
git rebase 
while(存在冲突) {
git status
找到当前冲突文件,编辑解决冲突
git add -u
git rebase --continue
if( git rebase --abort )
break;
}
1
2
3
4
5
git pull
编辑冲突文件
git add .
git commit -m "feat: this is a comment"
git push

删除其他分支

这个是经常会用到的,因为本地开发多次之后,使用 git branch 之后会发现有很多分支还在,为了保证「干净卫生」,所以就了解一下,可以执行如下命令。

  • 增强命令(master)

可以删除除开 master 以外的分支,但类似 mr/master/xxx 这样的带有 master 的删除不了。

1
git stash && git checkout master && git branch | grep -v "master" | xargs git branch -D
  • 增强命令(release)
1
git stash && git checkout release && git branch | grep -v "release" | xargs git branch -D

rebase 命令很强大,git rebase -i HEAD~[num]git pull --rebase 等。

推荐阅读

彻底搞懂 Git-Rebase

  • git merge适合公共分支,将其他分支合并到公共分支,merge操作两个分支最新的提交点会形成新的一个提交点,使后合并进来的commit记录仍然保持在后边。(merge以后会多出无意义的一条提交记录“Merge … to …”)
  • git rebase适合个人分支(只自己一个人提交)。日常开发过程中,个人分支代码需要和公共分支代码保持一致最新,定期合并公共分支代码到个人分支。执行rebase操作后,会从指定分支上合并别人新的commit在我们的commit之前。(缺点是rebase以后就不知道当前分支最早是从哪个分支拉出来的了,因为基底变了)

回滚操作

代码 git commit 到本地分支,但没有 git push 到远程

git log # 得到你需要回退一次提交的commit id
git reset –hard # 回到其中你想要的某个版本
git reset –hard HEAD^ # 回到最新的一次提交
git reset HEAD^ # 此时代码保留,回到 git add 之前


Git实际开发场景
https://macbook-pro-gala.github.io/2023/04/22/Git实际开发场景/
作者
lyh
发布于
2023年4月22日
许可协议