前言
我相信作为一名开发人员来说,git是再熟悉不过了,我们每天都需要用它来管理我们的代码,用它来协同团队的开发。因此为我们也带来了极大的便利,今天我将会整理出无论是个人开发还是一个大项目的团队开发,我们开发中必然会用到的一些操作供大家参考!
git工作的四个区域
在开始命令之前,我们先来说一下git各部分工作的区域是怎么划分的,如下图所示:
一些简单命令
下面的一些相对简单的操作我就提一下,不做过多解释。
git init //初始化仓库,生成.git文件,对文件进行版本控制
git clone //从远程克隆代码
git add . //把修改部分的代码从工作区添加到暂存区
git commit -m "message" //把代码提交到本地仓库并备注message
git remote add origin git://github.com/sdadsd/dadsdas.git 与远程仓库连接
git branch //查看分支
git branch main //新建main分支
git checkout main //切换到main分支
git merge main //把main分支上的变化合并到当前分支
git push //把本地仓的代码推到远程仓的同名分支上(前提已经建立连接)
git push -u origin main //与远程main分支建立连接(之后就可以直接git push)
git push origin 本地分支名:远程分支名 //将本地指定分支代码推到远程指定分支
git pull //将与本地仓库同名的远程仓库代码拉到本地(前提已经建立连接)
git pull origin 远程分支名:本地分支名 //将远程指定分支代码拉取到本地指定分支
git pull origin 远程分支名 //将远程指定分支名代码拉取到本地同名分支上
git reset --hard 需要回退到的版本hash值 //回退版本到指定版本
一些稍微复杂一点的命令
git stash
这个功能主要应用于你本地的代码暂时不能提交推到远程,但是又不能删除的情况,用这个命令就可以把这部分代码保存到本地缓存,后面可以再取出来,下面我们来看看具体怎么去用。
git stash save "save" //暂存本地的修改部分
存到缓存之后,工作区的这部分代码就会消失掉,不会影响其他功能的开发。
git stash list //查看缓存列表
这个就是刚才缓存的内容。
git stash pop //恢复最新缓存的条目到工作区域并且删除恢复的缓存条目
git stash pop stash@{1} //指定恢复哪一次的缓存并删除缓存条目
注意这里不加后面的参数默认是恢复最新的也就是最近缓存的一次内容。
git stash clear //清空缓存条目的列表,就相当于删除了你缓存的修改代码内容
git cherry-pick
当我们需要从另外一个分支拉取某个提交的代码,而不是全部更新过后的代码时,就需要用到这个命令,使用也比较简单:
git cherry-pick 某次提交的hash值
这样就能只把那一次的改动拉到我们的分支上。
git rebase
场景一
我们在进行多分支开发的时候肯定遇到过这种情况,就是我们在拉取别人的代码提交过后,肯定会多出类似这样的提交记录:
“ Merge branch 'dev' ”这样的提交记录,跟我们业务毫无关联的提交记录,这样子就会多出很多用没用记录信息,在团队开发的时候是个不利的因素,所以我们怎么避免出现这种提交记录呢?
使用 git pull --rebase
如果拉的代码只有一人改过,没有产生冲突,就直接push就行了。如果产生冲突的话,解决完冲突之后
git add .
git rebase --continue
然后再push到远程仓库。
如果产生冲突的过程中改出问题了,想回到rebase操作之前的状态,可以使用
git rebase --abort //中止rebase操作
场景二
合并多个commit信息。
我们在实际开发过程中,可能一个需求会更改好几次,然后使用相同的提交信息,然后就会产生几条重复的提交信息,实际上这几条信息都是在修改同一个需求,这样提交记录看起来就很不友好了。所以这时候我们就要想办法能不能把那几条相同作用的commit合并成一条呢,看起来整个记录就会舒服很多。
我这里举个例子:
git log //查看提交记录
如上图,我想合并前两条记录合为一条。
git rebase -i 37becf5b6d001a7a6dbbb073e6d67052a4305d09
注意,我要合并前两条,我这里的hash值要用第二条的上一条记录的,然后就会进入以下界面:
先说一下这几个命令的意思: pick:保留这条commit。reword:保留这条commit,但是可以修改该commit的注释。edit:保留这条commit, 并且可以修改该提交(不仅仅修改注释)。squash:将这条commit和前一个commit合并。fixup:将这条commit和前一个commit合并,但我不要保留这条提交的注释信息。exec:执行shell命令。drop:我要舍弃这条commit。(以上都可以使用简写)
所以我们这个地方需要保留rebase1,然后把rebase2合并到rebase1,所以将信息修改成如下:
修改完成之后按esc退出编辑,然后键入:wq回车保存更改,然后进入以下编辑页面:
然后我们按i进入编辑模式,需要把已经合并的提交信息前面加上#注释掉或者直接删掉,也就是我上面框起来的部分。修改完成之后再esc退出编辑模式,然后:wq保存更改。然后我们再使用git log查看一下提交信息。
我们可以看到,现在的提交记录就只剩下rebase1,rebase2就已经合并完成了。
最后一个步骤使用git push -f强推把当前的版本推到远程仓库里去,然后在远程仓库里面也只有一条提交记录了。
小结
以上这些git使用命令就是我在开发过程中经常会使用到的一些命令,我觉得无论是个人还是团队协同开发,这些命令都是会经常使用到的,也是对开发很有帮助的,然后在这里为大家简单梳理了一下使用场景和方法,希望能够帮助到大家!当然补充可能会有遗漏,欢迎大家指出修正!谢谢大家!