日常开发场景Git使用技巧记录
09/10
本文最后更新于
2025年09月10日,已超过
3天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
记录日常开发场景中常遇到的Git使用技巧备查。
撤销修改场景
工作区文件修改了,但还没有进入版本管理,现在不想要了,如何回退、撤销已有的修改
# 建议使用restore命令
git restore file
# 也可以使用checkout
git checkout -- file
合并本地多次提交记录场景
场景:有时开发某一个功能时会提交很多次commit,这样会显得版本日志很乱,尤其是在多人协作的开发场景中。这时可以将多个紧密相关的commit合并成一个。
简单情况:只是对最新一次的commit进行修正的话,可以使用
git commit -v --amend
更复杂情况:
git rebase -i HEAD~4 # 合并最近4次提交记录
# 进入vi编辑模式,根据提示对相应commit选择命令,常用的包括pick,edit,squash,fixup
s cacc52da add: qrcode
s f072ef48 update: indexeddb hack
s 4e84901a feat: add indexedDB floder
p 8f33126c feat: add test2.js
合并成功后,git log
会发现四个版本信息变成了一个。
如果异常退出vi编辑窗口,可以执行
git rebase --edit-todo
#进入编辑窗口继续编辑保存
git rebase --continue
不要合并已经提交远程分支的记录,否则会报错
error: cannot 'squash' without a previous commit
## 拉取主分支最新版本到个人开发分支场景
这在团队开发中很常见,主分支频繁更新,个人开发特性分支相比主分支会落后,需要及时更新master主分支最新变动
方法一:使用git merge master
合并主分支最新变动,但git日志里会出现merge
信息。
方法二:如果希望保持干净的commit,使用git rebase。
git rebase master
# 如果出现冲突,需要解决冲突,然后git add
git add something
git rebase --continue
# 后悔选项,终止rebase操作
git rebase --abort
代码版本回滚场景
理解GIT三种模式:工作区、暂存区、版本库
- 场景1:工作目录代码文件修改完,但还未
git add
纳入了暂存区
使用git checkout .
使用暂存区文件覆盖工作区文件
- 场景2:已经执行
git add
纳入暂存区,但还没提交commit到版本库中。
git reset #先用HEAD指针覆盖当前的暂存区内容
git checkout . #再用暂存区内容覆盖工作区内容
或者
git reset --hard #直接使用HEAD覆盖当前暂存区和工作区
- 场景3:已经commit提交到本地版本记录中,但还没有推送到
git push
远程仓库.
git reset --hard <last_commit_id> #覆盖本地版本库、暂存区和工作区
- 场景4: 已经
git push
推送到远程仓库
git reset --hard <commit_id>
git push origin <remote_branch> --force
误在主分支开发场景
项目规定develop分支为开发主分支,成员不能直接在该分支上修改提交,必须创建类似feature/xxx
特性分支进行开发。但有时候拉取版本后忘记了创建特性分支,直接在develop分支修改。此时如何处理?
# 暂存develop分支修改内容
git stash
# 然后创建特性分支
git checkout -b new_branch
# 将暂存修改放到新建分支中
git stash pop
# 此时可以正常使用git add继续开发
除master分支外删除其它分支场景
在开发过程中根据分配的任务可能会创建很多特性分支、BUG修正分支等等,希望批量删除这些分支场景。
git stash && git checkout master && git branch | grep -v "master" | xargs git branch -D