常见Git操作&日常问题
常见Git操作&日常问题
1.常规Git操作
借助Github DeskTop相关工具类进行操作,掌握Git的基本操作,对比代码、解决分支冲突等
2.多人协作开发
场景:创建一个仓库my-repo,如果说多人需要对该仓库进行开发,则可构建多个分支,每个人管理自己的分支模块,然后通过master主分支合并
如果是一个人希望在不同的电脑上开发,可以考虑在同一个分支上进行操作(但有时候需要解决分支版本冲突的问题,例如对一个文件同时进行了修改,但是存在另一处对这个文件的修改操作还没提交,则涉及到一个stash区的问题)
- 可以用同一个账号在相应的分支上进行开发
- 也可以用不同的账号在相应的分支上进行开发
协作者模式
以协作者模式邀请用户加入到项目中,协作者模式的任何操作的都是基于对源仓库的操作,如果都是开发同一个分支需要注意处理冲突问题
步骤:源仓库管理员邀请协作者,协作者需通过邮件确认接收邀请,随后才能对源仓库进行操作(否则提示是否要fork远程仓库)
协作者接收邀请之后则可对源码仓库进行贡献了:
fork模式
fork模式应用的场景在于想对一个开源项目进行修改操作,如果无法通过协作者模式参与开发,则可通过fork模式将源码仓库复刻一份到本地,这种fork模式的操作基于对自己仓库的修改、也可以作用于对源码仓库的修改(针对个人不同环境切换的时候如果采用fork每次都要手动合并数据,比较麻烦,还是考虑直接同一个账号或者同一个分支操作比较方便)
如果是基于自己仓库的修改:则构建的分支、所有修改操作都不会对源码仓库造成影响
如果是想要对开源项目作出贡献,则需要提交到源码仓库,需创建一个pull request请求,这个请求由源码仓库管理员确认是否可以合并到源码仓库。(如果是个人在不同场合开发项目,这种方式操作每次都要pull request,比较浪费时间)
代码提交希望提交到主仓库进行合并,此处提交后需要主动触发(或者管理员去触发)新建一个pull request,
比较分支如果存在可合并的内容,则点击Create Pull Request创建请求,创建完成则系统会自动校验分支是否存在冲突,如果不存在冲突则交由源仓库负责人进行审核
源仓库管理员审核代码内容,然后确认合并请求,合并成功后可在源仓库中确认合并后的信息即可
分支合并
在GitHub上合并分支通常有两种方法:使用Pull Request或者使用Git命令行。
方法一:使用Pull Request
- 在GitHub上打开你要合并到的目标分支(通常是主分支)的页面。
- 点击“New pull request”按钮,选择要合并的源分支和目标分支。
- 确认比较的差异后,点击“Create pull request”按钮。
- 在Pull Request页面中,进行讨论、审查代码等操作。
- 当一切就绪后,点击“Merge pull request”按钮,然后确认合并。
方法二:使用Git命令行 使用命令行,可以按照以下步骤合并分支:
- 确保本地仓库中包含最新的远程分支信息:
git fetch origin
- 切换到目标分支:
git checkout <目标分支>
- 合并源分支到目标分支:
git merge <源分支>
- 解决可能出现的冲突。
- 将合并结果推送到远程仓库:
git push origin <目标分支>
3.代码提交、冲突问题解决
操作同一个分支,本地代码还没提交,内容被另一个用户修改并提交
要多补充一下git知识点,遇到问题才有思路排查:
githubDesktop在拉取代码的时候会提示(stash ....相关的内容),点击确认代码会被存在stash区域,这个时候会发现本地还没提交的内容会被分支最新提交的数据“冲掉”(实际上就是保存到stash一个缓存区),可以通过stash pop重新将区域中的内容拉取到本地
stash的一个应用场景:本地写了代码暂时还不想提交,先将工作内容通过git stash进行暂存,需要的时候再取出来(类似]【备份】概念),这个时候如果检测到有用户提交了代码可以先通过git pull更新(从远程获取代码到本地),随后借助git stash pop指令获取最近一次stash进去的内容(这个操作可以借助Git工具类进行操作)
4.常见GitHub操作问题
GitHub提交(提示需要指定用户名)
这对一些项目组的限制,需要验证提交用户名规则,因此要设定自己的Git账号信息才能正常提交,根据相应提示进行调整即可。不同操作工具类配置不同,需要确认自己目前使用的操作工具是哪个软件,然后修改对应软件的配置信息。如果是gitBash方式提交
# 查看用户名
git config user.name
# 设置用户名
git config user.name "xxxx"
GitHubDesktop修改用户信息:File=》Options=》Git,修改对应的名称
GitHubDesktop突然崩掉
在设置gitclone空格字符处理的时候,按照提示修改全局git配置,但是保存后发现所有的git仓库都不生效了。考虑还是修改的格式问题(注意配置文件打开的软件,如果用一些奇奇怪怪的第三方软件打开保存的时候可能就会导致格式异常)
如果是修改配置文件导致的问题,则去查看对应配置文件(将其复原),例如此处的配置文件(windows下用户的.gitconfig文件)
GitHubDesktop某个分支突然无法关联远程仓库(断电背大锅)
某天下班回来发现断电了,一开始没有关注太多内容,后面发现本地仓库无法正常关联到内容(提示某个分支无法连接到本地仓库),就算Fetch重新拉请求也不生效,本来打算重新拉取仓库代码的,但是代码内容太大无法一次性拉取(且Git方式拉取、GitHubDesktop拉取一直报错无法解决,卸载了Git重装还是一样的🤡问题)
偶然看到一个文章教程:解决断电导致IDEA无法提交代码错误,跟着提示一步步定位错误,最终解决(本质上还是Git配置的问题)
1)在对应的代码仓库下的.git
文件夹进行跟踪,先确认.git/logs/refs/heads/[对应分支]
文件中代码的最后一次提交记录,定位最后一行记录的第二个参数(hash值)
2)如果是dev分支报错,则跟踪对应dev文件(本地:.git/refs/heads
、对应远程仓库:.git/refs/remotes
),确保对应的dev文件的hash一致(进行绑定)
3)修改完成,重新打开代码提交工具(此处为GitHubDesktop),检查分支关联情况,发现仓库可以正常关联(关联完成则可进一步操作)
完成上述操作又出现了新的问题(原因是手贱重装了Git,一些配置可能需要重新调整才能生效),此处列举遇到的一些点和常见处理方式:
无法从xxx.git中拉取内容(443):
分析:此前的源码仓库是从java-base-docs更名过来的,这次断电不知道为啥又把参数冲掉了,需要手动修改.git/config
配置文件中的远程的URL参数
SSL/TLS 连接失败:全局关闭掉SSL验证后再次访问尝试:git config --global http.sslVerify false
无法访问远程仓库:考虑是网络连接或者代理的问题,此处有两种解决方案
# 方案1:修改git全局配置
git config --global --unset http.proxy
git config --global --unset https.proxy
# 方案2:如果说使用了网络代理VPN(上面的配置可能没啥作用),需要配置相应的代理路径
git config --global http.proxy http://127.0.0.1:7890
githubdesktop上传报错
使用githubdesktop上传项目推送的时候发现提示错误,检查项目中发现生成了一个.husky并不小心提交了上去,删除掉重新尝试push即可(需要注意前端项目开发中生成的一些项目配置和核心代码的区分处理)