likes
comments
collection
share

关于实际开发当中Git、GitHub的基本使用以及常见问题

作者站长头像
站长
· 阅读数 78

大家好这里是Eric。今天写一篇文章记录下平时工作中在使用Git和GitHub遇到的问题,以免忘记。

在程序员实际开发过程中绕不过Git、GitHub这两样东西的。本文章是自己实际开发当中遇到的一些问题以及解决思路,在此做一个记录。文章简单介绍Git、GitHub以及在实际开发中如何配合实用,帮助自己管理代码以及团队协作。

GitHub

GitHub是什么?

GitHub是一个代码托管平台,你可以在平台上管理你的代码,保存你的代码。

  • 软件开源,编写软件对所有人开源
  • 方便团队协作:在团队开发过程中,GitHub(国内可以使用Gitee)可以帮助我们管理代码,查看提交人员,修改的模块等

Github的基本使用

注册与登录

1. 首先进入GitHub官网(GitHub

关于实际开发当中Git、GitHub的基本使用以及常见问题

2. 登录

注册之后通过邮箱(用户名)和密码登录 关于实际开发当中Git、GitHub的基本使用以及常见问题

3. 注册

输入邮箱注册,并且到邮箱内部验证 关于实际开发当中Git、GitHub的基本使用以及常见问题

创建仓库与密钥处理

由于GitHub拥有许多功能,这里只介绍以及说明本人实际开发中经常用到的功能。

在实际开发当中,一个大型项目往往需要多个版本不断地迭代更新,这个时候就需要用到GitHub帮助管理代码。我们每一个版本,都可以通过Git指令(下边会介绍到)将代码推送到GitHub仓库当中管理当前项目地代码,这时候GitHub仓库也就相当于远程仓库(Remote)

1. 创建仓库 关于实际开发当中Git、GitHub的基本使用以及常见问题

关于实际开发当中Git、GitHub的基本使用以及常见问题

注意点:

  • 项目命名:笔者习惯是大驼峰加上中、下划线,例如:Student_System或者Student-System
  • 项目描述:简单描述项目

2. 进入仓库

关于实际开发当中Git、GitHub的基本使用以及常见问题

注意点

3. 配置ssh-key

打开首页——>右上角头像打开设置——>找到SSH and GPS Keys——>打开git bash——>查看当前密钥——>复制到当前页面中添加

如果没有SSH Key,那么就生成一下,相关指令

# 进入ssh目录
cd ~/.ssh/

# 查看文件列表
ls

# 查看密钥
cat id_rsa.pub

# 生成密钥
ssh-keygen -t rsa -C "邮箱地址"
#这里可以不断回车,然后再回到第一步查看密钥
关于实际开发当中Git、GitHub的基本使用以及常见问题 关于实际开发当中Git、GitHub的基本使用以及常见问题

个人开发与团队协作

个人开发

  1. 先进行初始化,添加git仓库:git init,当前目录会创建.git文件夹
  2. 在文件内修改代码,并且通过git add .将所有文件添加到暂存区
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div>这里是本地代码v1.0</div>
</body>

</html>

团队协作

1. 分支问题

在团队协作中会出现许多情况,由于一个仓库是由多个人进行维护、开发的,那么就需要规定好各种二氧的分支。笔者在团队开发时一般会以当前分支作为默认标准:

  • master主分支。经过测试没有bug可以部署生产环境的分支,只能由releasehtfix分支合并。
  • develop开发的分支。平行于master分支。功能模块开发交给feature分支,测试给release合并。
    • 例如:现在需要开发一个新的功能login,这时候需要从develop分支上创建检出feature分支fb-login,在功能完成之后merge到develop分支上。(这里可以使用git hooks钩子,这里后面补充解释)。
  • feature功能模块开发分支。在团队开发中每个人都需要维护一个自己的feature分支,并进行开发工作,开发完成之后会将此分支merge到develop分支上。一般用于开发新功能和项目维护。创建分支名称一般是:feature/login_module或者feature-login_module
    • 例如:小王小明分别开发login和register功能,那么就需要在主分支上检出,两个功能开发完成之后合并到develop
  • hotfix热修复分支。由master分支检出,进行线上版本的bug修复,修复完成之后需要merge回developmaster分支,之后可以删除,属于临时分支。
  • fix:补丁分支。用于检修develop分支的bug,修复完成后需合并回develop分支。
  • relase发布分支。从develop分支检出,用于发布前的测试,可以进行简单的bug修复。bug复杂的时候需要merge回develop分支进行修改。测试完成之后也需要merge到masterdevelop分支上。
关于实际开发当中Git、GitHub的基本使用以及常见问题

2. 加入组织或者协作者

打开设置页面——>Access/Collaborators——>Add People

添加协作者之后,协作者可以访问仓库

Git

Git是什么?

官方解释是这样的: Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git (git-scm.com)

翻译过来就是:他是一个分布式版本控制系统,作用是快速的管理大小型项目代码。他可以通过指令直接对代码进行上传、拉取等操作

Git的作用以及状态

状态:

  • 已修改:modified(修改了文件但是没有将其提交到缓存区)
  • 已暂存:staged(对当前版本做标记,存在下次提交列表中)
  • 已提交:committed(字面意思)

用图示表示如下:

关于实际开发当中Git、GitHub的基本使用以及常见问题

Git 工作区、暂存区和版本库 | 菜鸟教程 (runoob.com)

关于实际开发当中Git、GitHub的基本使用以及常见问题

Git的实际运用

git的基础指令

git add [filename]:添加指定文件到缓存区

git add .:添加当前目录中所有文件到缓存区

git commit -m '[your message]':提交代码到本地仓库

git commit -a:直接跳过暂存区,从工作区–>Git仓库。此时文件处于未修改的状态(最终状态)

git remote add [远程仓库名称] [远程仓库地址]:添加并绑定远程仓库

git push -u [远程仓库名称] [当前提交的分支]:[远程仓库分支]:将代码提交到远程仓库。

-u:表示默认指定主机,后面可以不需要添加任何参数使用git push -all将本地所有分支推送到远程主机

git push [远程仓库名称] --delete [远程分支名称]

git merge [当前分支]:将当前选中的分支合并到当前分支。 --no-ff:保留信息的合并 例如:当前分支是master,存在分支dev,那么git merge dev:将dev分支合并到master分支

git status -s:精简方式展现文件状态

git status –short:精简方式

git checkout -b [本地分支名称] [远程仓库名称]/[远程仓库分支名称]:从远程仓库中把对应的远程分支下载到本地,并把下载的本地分支进行重命名

实际问题

这里存在:

  • 本地分支:masterdev
  • 远程分支:master
  • 远程仓库名称:origin

场景一:没有更新远程仓库代码将代码保持最新,导致本地代码与远程代码不同步,推送失败

关于实际开发当中Git、GitHub的基本使用以及常见问题

假如当前存在用户B修改了代码并且提交到了这个仓库当中 关于实际开发当中Git、GitHub的基本使用以及常见问题

此时用户A也在本地更新了代码版本2.0,但是没有拉取远程仓库最新代码的时候,推送会出现错误

关于实际开发当中Git、GitHub的基本使用以及常见问题

关于实际开发当中Git、GitHub的基本使用以及常见问题

解决方法:本地拉取最新的代码,再次推送

情况1:两者修改内容相同

如果两者情况相同,那么选择删除一方的代码,再重新合并

情况2:当前两者修改的内容不同

可以保留一方的代码,或者两者代码同时保留,保留后再次提交更新远程仓库

方案一:直接采用git pull命令解决
# 拉取origin/master,并合并到本地的master中
git pull origin master

# 提交
git commit -m '[提示信息]'

# 推送至远程仓库
git push origin 

===============================
方案二:采用git fetch + git merge
# 先获取远程分支代码到本地
git fetch orgin master

# 选中分支合并到当前分支master
# git merge origin/master

# 保留双方更改或者选择一方保留
# 提交推送
git commit -m 'message'
git push origin master
关于实际开发当中Git、GitHub的基本使用以及常见问题 关于实际开发当中Git、GitHub的基本使用以及常见问题

关于pull和fetch之间的区别,大家可以看看这篇文章

详解git pull和git fetch的区别 - 知乎 (zhihu.com)

场景二:若有遇到再作补充

请各位指点

转载自:https://juejin.cn/post/7251876857703940154
评论
请登录