这个作业属于哪个课程 | 软件工程实践-2023学年-W班 |
---|---|
这个作业要求在哪里 | 软件工程实践总结&个人技术博客 |
这个做作业的目标 | 1. 回顾与总结本学期的经历 2. 个人技术总结 |
其他参考文献 | 《构建之法》 |
一、技术概述
在团队开发过程中Git的使用是必不可少的,团队如何并行开发,正确提交pr请求,这对于维护项目是非常重要的。而新手小白在使用Git时经常会遇到一些突发情况,可能会导致项目内容被覆盖或丢失等问题,因此学习Git是至关重要的。
二、技术详述 && 问题与解决
Git使用的规不规范,我认为很大程度上可以反映你的编程能力,规范的使用Git可以让别人清楚明白你完成的任务,以及告诉别人可以放心的合并你的代码。下面将从配置、提交commit、修改commit、以及pull进行讲述,以下都是在git bash中执行:
正确使用Git
配置用户信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
配置SSH密钥
使用以下指令生成SSH密钥
ssh-keygen -t rsa -b 4096 -C "your.email@example.com"
然后将其添加到你的github/gitcode的设置中的SSH keys,下面以github为例:
点击个人头像后进入Settings
点击 SSH and GPG keys
点击New SSH key按钮
然后将你刚刚生成的SSH密钥复制进去即可。使用HTTPS可能会受到防火墙和代理服务器限制,使用SSH可能会有更好的兼容性(即当你无法使用HTTPSclone某些仓库的时候,使用SSH就可以解决)。
克隆仓库(clone)
clone 指令如下,git clone 后面跟着需要clone的仓库地址,需要到仓库里,点击Code获取
git clone https://github.com/xxx/xxx.git
学会clone仓库是必须的,当你试图clone一些github上的仓库时,你会发现你无法clone下来,这是因为你的网络问题,需要使用超能力(博览世界的能力),超能力是作为一名软件工程学生必备的技能(工具)。
如果你使用了超能力后依然无法clone下来,报错原因是网络问题的话,那么你就需要多尝试几次,因为超能力可能会不稳定。
提交Commit
规范正确提交commit是很重要的,commit时填写的描述信息需要正确传达此次commit完成的内容。同时commit的描述信息是有规范要求的,不同的项目可能有不同的要求,大体可以参考以下commit规范:
上述描述的PR规范同样适用于commit。
修改Commit
当你提交错误想要修改commit时,可以使用git rebase -i HEAD~1
来进行交互式变基,HEAD后面跟的数字表示,你想要修改几个commit,顺序是从最新开始往前。会进入到类似下面的画面:
上面显示的便是最新两条commit记录,如果你想要进行删除操作,先按i
这个按键进入编辑模式,然后将pick
改为drop
即可,同样如果你要编辑这个commit,只需改为edit
即可。修改完毕后,按住ESC
,输入:wq
进行保存退出。
如果你选择了edit
,那么接下来你就要进行rebase
操作,例如这样:
那么你需要输入git status
进行查看当前的状态栈,在这里面会告诉你需要完成哪些事情(解决哪些冲突或提交哪些内容),以及使用哪些git指令继续流程。当你完成后,进行git push
到远程仓库即可,如果出现某些错误提示,你可以使用git push --force
进行强制push。修改已经提交的commit,必须要使用强制push。这一部分需要自己多多实践,熟练了就没什么问题了,特别是解决冲突的能力。
拉取远程仓库
要使用pull拉取远程仓库,首先配置远程仓库,可以使用git remote -v
查看当前的远程仓库,如果没有你想要的远程仓库,你可以使用git remote add 自定义远程仓库命名 远程仓库地址
,接下来你就可以使用git pull 远程仓库命名 仓库分支
来拉取你想要的远程仓库的某一分支的仓库,远程仓库命名和仓库分支可以不填,不填时会使用默认的。推荐使用git pull --rebase
来拉取仓库,变基式拉取,会在拉取时进行一次合并,当合并内容出现冲突时,就需要你来选择你需要的部分,然后按照git status
中的提示完成合并即可。
在这一部分经常会出现pull后自己的代码丢失的情况,因此推荐使用git pull --rebase
来拉取仓库,同时当你在解决冲突时,也就是在rebase的过程中,因为会进入到一种特殊的中间状态,因此可能会出现代码会出入,你只要选择你需要的即可。在你想要push之前都需要进行一次pull,避免与团队其他成员发生冲突。
三、总结
当然上述的Git使用并不完整,还有其他的一些Git操作,限于笔者的掌握情况,只列举了上述部分。但是覆盖了大部分新手小白可能遇到的问题(例如我自己)。总之Git的使用对于每一个软件工程的学生都是必须要掌握的,很可惜的是,我是在大三下的软件工程实践这门课上才了解到。
四、参考
新手小白可能遇到的问题(例如我自己)。总之Git的使用对于每一个软件工程的学生都是必须要掌握的,很可惜的是,我是在大三下的软件工程实践这门课上才了解到。