Git场景使用操作及相关知识
前言
最近公司推出了开发人员提交规范,不再允许每位开发人员都直接对develop
分支进行操作,而是从develop
分支单独拉出单独的分支进行任务的开发。那这种场景下就需要频繁进行新建分支,切换分支,合并分支,回退提交等操作。在此总结一下常用的操作备份一下,以后有需要可以直接在博客上查看,不必再去网上查了。
另外也建议多使用Git命令,不要强依赖于IDE工具集成的Git操作,这样在临时切换工具的时候,也可以直接使用Git命令来操作,再说了敲命令不比在IDE上点来点去来的快(装逼)。
实际场景
实际场景解决操作会随着工作中的使用场景逐步更新。
1.拉取代码之后运行报错,需要回退到拉代码之前的状态
暂存本地修改
git stash
执行git reflog命令查看你的历史变更记录;
git reflog
使用git reset --hard 4efaf3aa 进行回退(4efaf3aa为你拉代码之前的提交记录)
git reset --hard 4efaf3aa
使用上一次的暂存
git stash pop
2. Merge Request被项目负责人退回,需要回退上一次提交修改代码重写提交
理解一件事情,你的merge
请求被拒绝了,也就说远程分支是没有你的这一部分代码的,那么你只需要将本地代码回滚到未commit
状态,对代码进行修改之后,重新进行commit
和push
操作,再提交新的merge请求即可,具体操作如下:
使用git log命令找到最近一条提交记录前一条记录的commit id
git log
再使用git reset – soft commit_id操作进行代码回退,此操作会回退到你提交的这个版本之前的状态,同时保留你有改动的代码。
git reset --soft <commit_id>
3.Merge合并分支后发现合并错误,需要回滚Merge操作
例如我把feature分支的代码merge到develop分支之后,发现有问题,需要回滚合并操作,那就可以按照如下步骤操作:
第一步:git checkout到你要恢复的那个分支上
git checkout
第二步:git reflog查出要回退到merge前的版本号
git reflog
第三步:git reset --soft [版本号]就回退到merge前的代码状态了
git reset --soft f82cfd2
四个等级
Hard
-
移动本地库HEAD指针
-
重置暂存区
-
重置工作区
意思就是,回滚后,本地代码就是你回退版本的代码
Soft
- 移动本地库HEAD指针
意思就是,回滚后,仅仅是把本地库的指针移动了,而暂存区和你本地的代码是没有做任何改变的。而你上次改动已提交committed到本地库的代码显示是绿色即未提交
Mixed
-
移动本地库HEAD指针
-
重置暂存区
意思就是,回滚后,不仅移动了本地库的指针,同时暂存区的东西也没了,意思就是你上次添加到暂存区的文件没了
Keep
-
移动本地库HEAD指针
-
暂存区不变
-
重置工作区
意思就是,回滚后,本地代码就是你回退版本的代码,而暂存区是没有做任何改变的
分支相关
1.新建分支并进行切换
git checkout -b branchName
2.列出所有本地分支
git branch
3.列出所有远程分支
git branch -r
4.列出所有本地分支和远程分支
git branch -a
5.合并指定分支到当前分支
git merge [branch]
6.删除分支
git branch -d [branch-name]
7.删除远程分支(一般为项目负责人操作)
git push origin --delete [branch-name]
git branch -dr [remote/branch]
暂存相关
1.暂存(存储在本地,并将项目本次操作还原)
git stash
2.使用上一次暂存,并将这个暂存删除。
使用该命令后,如果有冲突,终端会显示,如果有冲突需要先解决冲突(这就避免了冲突提交服务器,将冲突留在本地,然后解决)
git stash pop
3.查看所有的暂存
git stash list
4.清空所有的暂存
git stash clear
5.删除某一个暂存,在中括号里面放置需要删除的暂存ID
git stash drop [-q|--quiet] [<stash>]
6.使用某个暂存,但是不会删除这个暂存
git stash apply