日常上班摸鱼ing
git是一个code版本控制管理系统,常用于大型项目多人协作的场景
大家上班了基本都会接触到的,然而在大学期间如果并没有参加老师的项目的话(such as me),就会造成这段知识的空缺,而这在公司中又是基础,必需的技能,正巧,闲着也是闲着,在等sync data,也不知道干点啥,那就写点东西,缓解下焦虑感
其实想写些更狂拽酷炫的东西的,但是很可惜,我不会,而且很多用心才学会的东西记录了下来,并没有多少人看,反而是愈加基础的东西越多浏览,当然我的本意依旧是记录自己,以及帮助他人,如果能帮助到的话。
git将文件位置分为三个区
本地
暂存
远程仓库
一般工作流程是,我们将远程仓库的代码clone到本地来,然后创建一个新的分支,在该分支上进行代码的修改,测试,然后将将你的代码合并进仓库中就可以了
我们可以先来看一下如何用git操作完成这个流程
git clone (link) 从远程仓库中copy一个项目到本地
git branch (branch name)
然后自己进行代码的修改,修改完成后
git add --all 将所有的改动从本地提交到暂存区
git commit 将暂存区的代码上传至仓库(本地)
(一般公司都会这这步中间加上一个review code的过程)
git push 将本地内容推送至远程的master 分支
然后就完成了一次代码的改动
当然,现实情况总是比理想情况复杂的,就这么一个简单的流程,也会出现各种各样的问题。
由于公司项目一般是多人协作任务,如果在你clone代码,然后修改,最后合并的途中,如果出现你的同事也在你修改的代码部分进行了修改,并且已经提前merge进了主分支,在你合并代码的时候就会出现冲突。
如何解决代码冲突问题,vscode会将有冲突的文件列在源代码管理处,你需要在看代码逻辑的情况下手动点击choose incoming,save both等选项来解决冲突
然后根据log提示来告诉git你解决完冲突了
具体操作为 git add . 将当前冲突文件都标记为已解决冲突
git rebase 取消刚才合并并变基
这时你的代码改动都在本地,不过已经是可以合并进master的状态了,然后重新 commit push就可以merge了
当然现实多人开发项目的途中并不只是有这一种情况,还有
git status 可以查看用于在(该分支本地仓库)基础上修改了那些文件(不过我一般是用vscode的源代码管理功能查看的)
当你的代码需要多次修改时,想看自己改动的部分,可你当前分支的代码已经commit了(commit之后本地仓库就修改了,没有之前的改动比较了),可以使用 git reset HEAD^ 来回退commit
或者你想要特定commit版本的代码 也可以 git reset (版本号)
当然还有一种自己工作中用到的情况
当你正在一个新task 上快乐coding的时候 突然线上出问题了,有个紧急bug需要修复,这时你就得切换分支来修复bug,那你当前分支的代码改动就需要保存下来,(当然你可以commit到本地仓库去,解决完bug后再切换该分支+ git reset,但是公司一般都有代码自动审查机制,比如你的代码跑不通,commit也不行)
这时就有一个新git 命令, git stash
可以将你代码的改动暂时存在一个暂存区中(与仓库的暂存区不同)
git stash -m (name)保存暂存改动
git stash -m (name) --pop 弹出暂存改动
git stash --list 查看所有暂存改动
当然弹出暂存改动时也可能会出现代码冲突情况,解决方案同上
还有一种较为严重的问题
就是自己已经merge的代码在线上出了问题,这时第一时间应该做的是让线上的代码跑一个正确的版本,我们就需要先将自己merge的代码版本revert掉
具体操作为 git revert -n (版本号)
然后可能会出现冲突(解决方案同上)
修复完bug后
git commit -n 版本名 即可解决问题
这类问题是最严重的,因为影响到了用户(所以merge代码前一定要仔细检查啊,多测测啊)
ok,到这已经涵盖了大部分git操作,还有一丢丢简单的操作
git branch -d (branch name) 删除分支
git stash clear 清除所有的暂存改动
以上就是我目前会用到的所有git操作了