Git上传代码

    技术2024-06-07  82

    背景

    在软件开发行业,主流存在着两种版本控制工具,git 和 svn,由于svn存在着一些问题,渐渐的现在市面上,git成为了主流,git也成为开发人员必备的基础技能,会不会用git,能不能熟练使用git,也是企业考察的一个重点。

    git是linux之父Linus Torvalds (林纳斯·托瓦兹)开发的,据传Linus 只用了两周就开发出了git,并发布了稳定版本,一个月之内,git就已经用于linux的源码的管理了。

    2. 版本控制系统的介绍

    版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

    代码备份 本地代码仓库远程代码仓库 版本控制 随时切换版本各个版本之间互不干扰 协同工作 合并代码解决冲突回退代码代码追踪提交记录提交说明 代码变动

    Git和SVN

    svn

    ​ SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑, 所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。

    ​ 问题:

    一旦svn服务器出故障,svn无法切换版本,无法提交(工作中,多版本切换是常态)硬盘损坏,所有版本的代码都丢失,本地不一定有所有版本的代码svn合并代码不友好,新手很容易误删别人的代码

    git

    ​ Git是在2005年,Linux系统的创建者Linus Torvalds 为了帮助全球的开发者,维护Linux系统内核的开发 而开发了自己的开源分布式版本控制工具 。

    分为两种类型的仓库:本地仓库和远程仓库。

    git完美解决了svn遇到的问题,成为了现在主流的版本控制管理工具。

    git 下载安装

    下载

    官网下载地址:https://git-scm.com/downloads

    安装

    双击安装包,进入安装向导界面一路next等待安装安装完成,点击Finish

    说明

    安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。

    Git GUI:Git提供的图形界面工具Git Bash:Git提供的命令行工具

    运行Git命令客户端,使用git --version 命令,可以查看git版本

    小知识点:git命令客户端,是linux命令,可以使用它练习一下linux命令,比如

    1. cat : 查看文件 2. ll : 文件列表 等同于 ls -l 3. mv: 移动文件到指定目录 4. cp:拷贝文件到指定目录 5. vim:编辑文件

    TortoiseGit安装和汉化

    一般在工作中还是使用图形化界面多一些。

    安装

    双击安装包,进入安装向导界面

    一路next

    选择安装目录

    安装

    配置

    配置 https://gitee.com/ 上的用户名和账号

    5.2 汉化

    安装中文语言包

    TortoiseGit-LanguagePack-2.9.0.0-64bit-zh_CN.msi

    进入设置

    3. 选择中文,点击应用并确认

    完成

    其余Git的图形化界面工具

    Sourcetree

    小结

    git是工作必备技能,一定要牢牢掌握一般工作中,使用图形化工具比较多一些 TortoiseGit (小乌龟git)sourcetree (有兴趣的可以了解一下,我在使用的)idea的git插件 (后面会讲) 虽然实际工作中,图形化工具使用较多,但还是要了解git的命令,这样对图形化工具的使用才能得心应手

    Git入门

    Git工作流程

    Git分为本地仓库和远程仓库。

    6.1.1 本地仓库

    6.1.1.1 工作流程

    6.1.1.2 常用命令

    6.1.1.3 使用步骤(命令行方式)

    步骤:

    创建工作目录、初始化本地 git 仓库

    新建一个 test.txt 文件(暂不执行添加操作)

    使用 status 命令,查看状态

    使用 add 命令添加,并查看状态

    使用 commit 命令,提交到本地历史仓库

    使用 log 命令,查看日志

    修改 test.txt 文件

    添加并提交,查看日志

    使用步骤(图形化方式)

    步骤:

    创建工作目录、初始化本地 git 仓库

    新建一个 test.txt 文件(暂不执行添加操作)

    使用 status 命令,查看状态

    使用 add 命令添加,并查看状态

    使用 commit 命令,提交到本地历史仓库

    使用 log 命令,查看日志

    修改 test.txt 文件

    添加并提交,查看日志

    6.1.1.5 历史版本切换

    ​ 在多个提交的版本记录中,可以任意的切换

    步骤:

    查看 my_project 的 log 日志

    使用 git reflog:可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)

    增加一次修改记录

    将代码切换到第二次修改的版本

    指令:git reset --hard 版本唯一索引值

    6.1.1.6 分支管理

    ⚫ 分支的使用场景

    周期较长的模块开发 假设你准备开发一个新功能,但是需要一个月才能完成第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug那现在就需要放下手中的新功能,去修复Bug但这20%的代码不能舍弃,并且也担心丢失这就需要开启一个新的版本控制。 尝试性的模块开发 业务人员给我们提出了一个需求经过我们的思考和分析 该需求应该可以使用技术手段进行实现但是我们还不敢确定我们就可以去创建一个分支基于分支进行尝试性开发。
    分支在真实工作的场景
    开发人员从需要添加功能的开发分支上,拉取代码构建自己的分支在自己的分支上进行开发将代码合并到开发分支上由上线人员或者有权限的开发人员,将开发分支合并到对应的上线分支上完成代码上线

    使用分支管理可以有效的避免污染主线分支或者上线分支,从而造成一些不必要的麻烦

    分支工作流程

    由每次提交的代码,串成的一条时间线

    Master是所在分支的名称,一般不可修改Head是指向分支的指针Dev是另一个分支的名称,可随意定义 工作中分支定义: Master(主分支,一般用作上线分支)Dev(开发分支,又叫做测试分支,开发阶段使用,开发完成并测试完成后,合并到主分支)开发人员分支(开发人员从Dev拉取的分支,用于开发阶段使用,功能开发完成后,合并到Dev分支,供测试人员测试)

    创建和切换分支

    ​ 创建分支:git branch 分支名,如果不知道如何使用 可以 用 git branch --help 打开说明文档 切换分支:git checkout 分支名 总结:不同分支之间的关系是平行的关系,不会相互影响 git branch --list 查看分支列表

    合并分支和删除分支

    合并分支:git merge 分支名

    切换到master分支

    将xiaoming 分支合并到master

    完成合并,查看日志

    删除命令:git branch -d 分支名

    查看分支列表:git branch --list

    6.1.2 远程仓库

    6.1.2.1 工作流程

    远程仓库平台介绍

    Github 域名:https://github.com介绍:GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站 各类好玩有趣的开源项目,只有想不到,没有找不到。 码云 域名:https://gitee.com介绍:码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库

    远程仓库平台操作

    操作情况

    情况1:先有本地项目,远程为空 步骤 创建本地仓库创建或修改文件,添加(add)文件到暂存区,提交(commit)到本地仓库创建远程仓库推送到远程仓库 情况2:先有远程仓库,本地为空 步骤 将远程仓库的代码,克隆到本地仓库 克隆命令:git clone 仓库地址 创建新文件,添加并提交到本地仓库推送至远程仓库项目拉取更新 拉取命令: git pull 远程仓库名 分支名

    6.1.2.4 创建远程仓库

    注册码云账号

    创建仓库

    将本地代码推送到远程:

    在推送之前,需要先将本地代码和远程仓库代码关联:

    git remote add<name> <url>

    2. 推送 git push<name>

    发现报错,git@gittee.com:Permission denied

    没有权限。

    和远程仓库关联有两种方式:

    ssh方式

    使用ssh方式,需要配置SSH公钥

    http方式

    使用http方式,不需要配置SSH公钥

    使用http方式 会弹出用户密码输入框,输入gitee的账号密码即可,下次可直接使用,git会进行记忆存储

    4. 注意:如果是idea项目提交,注意在本地目录添加.gitignore,将不相关的文件,目录等排除在提交之外

    *.iml .idea/ *.ipr *.iws .idea_modules/ target/ *.project pom.xml.tag pom.xml.releaseBackup pom.xml.versionsBackup pom.xml.next release.properties dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties

    注意:在从本地提交项目前,不要在gitee上,编辑文件,并提交,这样会造成本地和远端版本来源不一致,导致无法提交

    解决方案是:强制拉取最新的代码,在提交,强制拉取代码命令:git pull origin master --allow-unrelated-histories

    创建SSH公钥

    使用ssh方式,需要配置SSH公钥

    生成SSH公钥步骤 :

    设置Git账户

    查看git账户 : git config user.name查看git邮箱:git config user.email设置全局账户名和邮箱: git config --global user.name “账户名” git config --global user.email “邮箱”查看是否生成过SSH公钥 :cd ~/.ssh

    生成SSH公钥

    命令: ssh-keygen –t rsa –C “邮箱”

    设置账户公钥

    id_rsa.pub 就是公钥

    查看公钥命令:cat ~/.ssh/id-rsa.pub

    设置码云账户公钥(在设置里面)

    公钥测试

    命令:ssh -T git@gitee.com

    推送代码到远程仓库

    步骤 :

    为远程仓库的URL(网址),自定义仓库名称 git remote add 远程名称 远程仓库URL 推送 git push -u 仓库名称 分支名

    从远程仓库克隆,拉取

    情况2:先有远程仓库,本地为空

    步骤

    将远程仓库的代码,克隆到本地仓库

    克隆命令:git clone 仓库地址(仓库地址 使用ssh地址和http地址都可以)

    创建新文件,添加并提交到本地仓库

    git add hello.txtgit commit -m ‘hello.txt’

    推送至远程仓库

    git push -u origin master (git push -u 远程仓库名 分支名)

    项目拉取更新 拉取命令:

    git pull 远程仓库名 分支名

    6.1.2.8 解决代码冲突

    ​ 代码冲突产生的原因:

    将test.txt的内容 更改为update count=2

    远端test.txt的内容 更改为 update count=3

    本地提交:​ 因为本地代码和远程仓库中的代码不一致,且是同一文件,造成了冲突

    如何解决?

    先使用拉取命令:git pull

    打开冲突文件test.txt

    HEAD代表本机版本,17719a0a26a1f29e0ce9b499d7d39a2190b4799c 代表远端版本 中间使用======分隔

    选择要使用的版本,此时我们选择本机的代码为要最终提交的代码

    5. 提交,先git add, 然后 git commit 提交到本地,然后git push 推送到远端

    IDEA中使用Git

    7.1 关联Git

    File -> Setting

    2. Version Control — Git — 指定git.exe存放目录 3. 点击 Test 测试

    创建本地仓库并提交代码

    打开工程

    创建本地仓库

    关联git

    创建.gitignore文件

    *.iml .idea/ *.ipr *.iws .idea_modules/ target/ *.project pom.xml.tag pom.xml.releaseBackup pom.xml.versionsBackup pom.xml.next release.properties dependency-reduced-pom.xml buildNumber.properties .mvn/timing.properties

    提交代码

    查看日志

    切换版本

    ​ 使用revert来进行历史版本的切换

    在这里插入图片描述 Revert 操作会当成一个新的提交记录 这种回退的好处在于,如果后悔了“回退”这个操作 也可以回退到没有回退之前的版本 因为历史记录还保留提交记录

    分支管理

    创建并切换分支

    可以切换回master

    分支合并 master合并dev01的内容

    有冲突,点击Merge解决冲突 解决完冲突,点击Apply 4. 分支删除

    1.

    分支在真实工作的场景

    1. 开发人员从需要添加功能的开发分支上,拉取代码 2. 构建自己的分支 3. 在自己的分支上进行开发 4. 将代码合并到开发分支上 5. 由上线人员或者有权限的开发人员,将开发分支合并到对应的上线分支上 6. 完成代码上线

    本地推送到远程

    push 关联远程仓库

    远程克隆到本地

    总结

    可以使用 git 命令 --help 来查看相关的命令文档git init :初始化git add : 添加要提交的文件git commit -m “说明” : 提交到本地git push -u <分支名称> : 推送到远程仓库git pull <分支名称>: 将远程仓库代码拉取到本地git clone 克隆仓库git branch --help : 分支管理相关,通过help查看文档 git branch 分支名 : 创建分支git checkout 分支名:切换分支git branch --list :分支列表 历史版本切换:Revert分支合并 Merge操作代码冲突 解决冲突提交代码 合并成功
    Processed: 0.032, SQL: 9