git基本操作

日常上班摸鱼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 分支

然后就完成了一次代码的改动

issue

当然,现实情况总是比理想情况复杂的,就这么一个简单的流程,也会出现各种各样的问题。

由于公司项目一般是多人协作任务,如果在你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操作了

你可能感兴趣的:(working,git,java,服务器)