git常用场景
1.新建分支并推送至远程
- 使用
git checkout -b [新建分支名]切换一个分支,如果分支不存在就新建一个分支并切换至此分支 - 使用
git push [远程主机名] [本地分支名]:[远程分支名]将本地分支推送至远程分支 - 使用
git branch --set-upstream-to=[远程主机名]/[远程分支名] [本地分支名]来关联本地分支和远程分支
2.代码合并
git merge
main分支的代码如下图
dev分支的代码如下图
使用
git merge 将dev分支的新提交添加到main分支
合并后的main分支如下图,并不会导致代码覆盖等问题
如果两个分支的提交中没有冲突的代码,就可以直接push,如果存在冲突,就需要先解决冲突,然后再提交代码
3.代码撤回
git reset(不推荐)
上传了三条记录,现在使用git reset撤回一条
使用
git reset --hard [commit id]撤回代码至第二次提交,此时本地的代码已经撤回到第二次提交。
然后将本地的版本推送至云端,因为版本落后云端,所以正常的推送会报错,提示无法推送,所以需要在git push后面加上-f的后缀,表示强制推送,就能推送成功了。
此时,git的提交记录就变成了如下图
第三次提交的记录直接被删除了,达成我们的撤回需求。
但是此做法的缺点就是,会删除已有的commit记录,所以并不推荐
git revent
在上面操作的基础上,重新上传了一条,现在使用git revent撤回记录
使用git revert [commit id]可以撤回指定的那次提交,然后直接使用git push就能提交成功了。
要注意的是,git revert命令使用后,会进入一个vim编辑的模式,进行书写commit的内容
提交成功后可以看到,远程的文件已经没有第三次提交的内容了,说明我们撤回的需求达成了
再看看一下提交记录,如下图
revert并不会像reset那样,直接删除了commit记录,而是新建了一条关于撤回内容的提交记录,这样就可以看到具体上传错的和撤回的记录了,撤回代码推荐使用这种方式,避免删除了错误commit记录,导致代码彻底丢失