首页 > 其他分享 >GIT的使用与碰到的问题与解决方案

GIT的使用与碰到的问题与解决方案

时间:2023-05-01 23:12:00浏览次数:44  
标签:碰到 GIT 仓库 解决方案 代码 git 提交 远程 分支

 

这个里面包含了git的基本概念、git的命令、关于项目的本地仓库的创建

所谓的GIT就是用于存档,备份,允许我们的代码有容错的机会,比如:玩游戏魂斗罗小游戏前几关很简单很容易,到后面越来越难,如果没有存档机制我们几条命用完之后,再重新去跑、玩,会非常非常浪费时间,这样用户体验就很不好,如果我们给1-10关做一个存档,后面会从11关开始,这样可以提升我们的游戏体验,减少无用的时间浪费,这样就是游戏存档的意义,接下来我们写代码?一次性正确的写完所有功能难度很大,如果没有存档机制,代码突然被误删了、大量写错的情况下、多人协助的情况下,这样我们需要重写备份,所以我们写代码需要存档机制且这个存档意义是重大的。

什么是GIT?

git是一个版本控制系统,作用域代码备份(支持多人协作),且是免费开源的的软件

git下载安装

下载地址:https://git-scm.com/download/win

注意点:不要安装在中文目录下

装好后:右击查看有如图就是装好,有Git GUI Here与Git Bash Here

截图.png

如何操作git

在刚开始的时候,我们创建的项目是没有被GIT管理的,当我们希望使用git来管理当前的项目

步骤一:打开当前的项目文件夹,在文件夹内右击如图:

截图.png

步骤二:进行初始化

初始化命令

git init

截图.png

在文件内会有如图文件:如没有在文件夹上方的查看按钮,将隐藏项目打开即可

注意:不要去修改.git文件夹下的任意东西

截图.png

git有三个区:工作区 => 暂存区 => 仓库区

1、工作区:就是书写代码的地方,

2、暂存区:暂存提交代码的地方

  git中无法直接从工作区提交到仓库区里面去,必须经过暂存区

  目的就是避免误操作

3、仓库区:代码永久存储区,每次存入git仓库后,会生成版本号,可以任意回退到任何一个具体版本

准备工作:配置提交者信息

我们到公司里面第一时间要进行的配置(user.name是名字用英文)(user.email是邮箱)

配置提交:git config --global user.name heiwuchang

     git config --global user.email [email protected]

截图.png

当配置好后,如何去查看配置信息呢?如下就是配置成功了

查看配置:git config --list

截图.png

git 基本命令

将工作区代码提交到暂存区

  git add .

截图.png

将暂存区代码提交到仓库区

  git commit -m ‘这个里面放的提交说明’

截图.png

查看文件状态,就是查看当前文件是存在工作区还是暂存区

  git status

注意:简写命令:git status -s

截图.png

截图.png

查看提交日志信息

  git log

注意:简写命令:git log --oneline

使用命令:git reflog 可以查看作用版本的信息

截图.png

git add 的作用:将工作区文件添加到暂存区

将index.html添加到暂存区

  git add index.html

将css目录下所有的文件添加到暂存区

  git add css

将当前目录下所有的js文件添加到暂存区

  git add *.js

git commit 的作用:将暂存区文件添加到仓库区

将文件从暂存区提交到仓库区

  git commit -m "放提交的说明"

如果不是一个已经暂存过的文件,可以快速的提交,如果是未追踪的文件及时未提交过的文件,那么这个命令不会生效

  git commit -a -m "提交说明"

只会修改最近的一次提交说明,如果提交说明不小心输错了,可以使用这个命令

  git commit --amend -m "提交说明"

git reset 的作用:版本回退,将代码恢复到已经提交的某一处版本中

命令:git reset --hard 版本号

注意:可以回退到任意版本,想回到哪个版本就输入哪个版本的版本号

截图.png

git忽略文件

在仓库中有些文件不想被git管理,可以通过配置从而达到忽视一些文件。

步骤一:在仓库中新建一个.gitignore文件(固定的)

步骤二:将不要被git管理的文件路径,添加到.gitignore中

截图.png

git分支

什么是分支?为什么要开发分支?那分支的本质又是什么?

作用:分支的存在,可以保证功能开发的独立性。

为了避免与其他人的代码冲突,所以创建自己的分支,完成对应的功能。比如:科幻电影里面的平行宇宙,当你正在电脑前努力学习git的时候,另一个你正在另一个平行宇宙里努力学习Java。如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了git又学会了Java!

分支实质上就是一个指针,指向的是某个提交的版本;每次代码提交后,这个分支指针就会向后移动,保证一直指向最后一次提交的版本

注意:git第一次提交时,就有了一个master的主分支,指向第一个提交版本

git分支相关命令

1、创建分支

  git branch 分支名

2、查看分支/可查看所有分支

  git branch

3、切换分支

  git checkout 切换的分知名

4、合并代码,在当前的分支上,需要把别的分支合并此分支上

  git merge 分支名

5、删除分支

  git branch -d 需删除的分支名

注意:不能在当前分支删除当前分支,需要切换到其他分支才能删除。

注意:master分支是可以删除的,但是不推荐那么做。

6、创建并切换分支(等价于创建分+切换分支)

  git checkou -b 分支名

git合并分支冲突

我们在公司容易遇到多个分支,并且修改到了同一个文件,容易造成冲突的问题。

截图.png

截图.png

合并之后出现的冲突并解决冲突:

步骤一:master 分支 —完成了两次提交 git add . + git commit -m ‘’

步骤二:基于主分支的代码,创建两个分支login/register

  git branch login

  git branch register

步骤三:切换到其中一个分支 - login

  git checkout login

步骤四:在login的分支上完成对应的代码,并提交 git add . + git commit -m ‘’

步骤五:切换到其中一个分支 - register

  git checkout register

步骤六:在register的分支上完成对应的代码,并提交 git add . + git commit -m ‘’

步骤七:切换到主分支

  git checkout master

步骤八:合并其他的分支

  git merge login

  git merge register

在这合并完后会出现合并的冲突

步骤九:手动处理 -- 选择想要保留的代码

步骤十:重新再提交 git add . + git commit -m ‘’

git远程仓库

什么是GIT远程仓库?

就是托管在网络中,你项目的版本库,且支持多人协作,共同一起管理远程仓库。

截图.png

解决了什么问题:

1. 仓库备份(远程备份不易丢失)

2. 多人协作(远程仓库同步代码)

git代码托管平台

专门用于 存放远程仓库 的网站平台,就是代码托管平台

常见的代码托管平台:

gitee 码云,国产开源项 目托管平台。免费,访问速度快、纯中文界面、使用友好

gitee 码云,创建远程仓库:

1. 新建仓库

2. 输入仓库名

3. 创建(不勾初始化!!!)

新建右上角仓库

截图.png

输入仓库名

不勾初始化!!!

截图.png

点击创建

截图.png

SSH免密码登陆

git支持多种数据传输协议:

https协议https://gitee.com/jepsonpp/test.git 需要输入用户名和密码

ssh协议:[email protected]:jepsonpp/test.git 可以配置免密码登录

注意:在实际公司开发中,ssh 的方式更为常见!更加安全可靠!

每次push或者pull代码,如果使用https协议,那么都需要输入用户名和密码进行身份的确认,非常麻烦。

github为了账户的安全,需要对每一次push请求都要验证用户的身份,只有合法的用户才可以push

使用ssh协议,配置ssh免密码,可以做到免密码往github推送代码

ssh秘钥的作用

ssh key 的作用:实现本地仓库和 gitee平台 之间免登录的加密数据传输。

ssh key 由两部分组成,分别是:

① id_rsa(私钥文件,存放于客户端的电脑中即可)

② id_rsa.pub(公钥文件,需要配置到 gitee平台 中)

私钥加密的信息,只能通过公钥解密。公钥加密的信息,只能通过私钥解密。安全性高。

SSH免密码登录配置

生成ssh key:一台电脑只需要配置一次秘钥

步骤:

1. 打开 Git Bash

2. 粘贴如下的命令 ssh-keygen -t rsa

截图.png

3. 连续敲击 3 次回车,即可在 C:\Users\用户名文件夹\.ssh 目录中生成 id_rsa 和id_rsa.pub 两个文件

截图.png

4. 使用记事本打开 id_rsa.pub 文件,复制里面的文本内容

5. 粘贴配置到 gitee码云 -> 点击头像设置 -> 选中左侧安全设置下ssh 公钥 中即可

截图.png

截图.png

tips: mac获取公钥 https://juejin.cn/post/6844904169191522317

git push 将代码提交到远程仓库

作用:将本地仓库中代码提交到远程仓库

语法:git push 仓库地址 分支名 将代码提交到远程仓库对应分支

仓库地址如图:

截图.png

例子:git push [email protected]:jepsonpp/test.git master

git remote删除分支

每次push操作都需要带上远程仓库的地址,非常的麻烦,我们可以给仓库地址设置一个别名

给远程仓库设置一个别名

  git remote add 仓库别名 仓库地址

  git remote add origin [email protected]:jepsonpp/test.git​

# 删除origin这个别名

  git remote remove origin

演示命令:

首次提交需要

git push -u 仓库别名 分支名

tips:-u 可以记录push到远端分支的默认值,将来 git push即可

本地分支比如master和远程仓库建立关联,并且以后提交该分支,直接通过git push,一个本次仓库的分支只需要建立一次即可

git clone 克隆代码

作用:克隆远程仓库的代码到本地

语法:git clone [远程仓库地址] 文件名(test)

如果只想克隆分支:git clone -b 分支名 [远程仓库地址] 文件名

git clone [email protected]:jepsonpp/test.git会在本地新建一个test文件夹

在test中包含了一个.git目录,用于保存所有的版本记录,同时test文件中还有最新的代码,可以进行后续的开发。

git克隆默认会使用远程仓库的项目名字,也可以自己指定。

命令:git clone [远程仓库地址] [本地项目名]

tips: git branch -a 查看分支

git pull拉取更新

作用:拉取更新,将远程的代码下载合并到本地的分支

语法:git pull [远程仓库地址] [分支名]

简写:git pull

通常在push前,需要先pull一次。

截图.png

注释逻辑:

本地仓库和远程仓库是一对一的关系,一个本地仓库 只对应一个远程仓库

比如:张三新创建了一个项目

后台管理系统

1、初始化仓库——提交到本地仓库——创建一个远程仓库——承载/管理本地的代码

移动端的商城项目

1、初始化仓库——提交到本地仓库——再去创建一个远程仓库——装载你当前的商城项目

是一对一的关系

下载远端分支本地

命令:

  git checkout -b 分支名 注意点: 创建的分支名要和远端分支名相同

  git pull origin 分支名

先在本地建立一个分支,并切换到该分支,然后从远程分支上同步代码到该分支上,并建立关联

后续拉取该分支的更新,直接通过 git pull 即可

注释逻辑:

已经存在的本地仓库 李四 lisi

1、将远程仓库中pay分支的代码合并到本地仓库中master分支

现在处在master分支 直接通过git pull origin pay 远程仓库的分支名

进行分支代码的拉取...

2、将远程仓库中的reg分支的代码拉取到本地仓库中的reg分支

问题本地根本没有reg分支?

解决:2.1创建并切换到reg分支

    git checkout -b reg

   2.2拉取

    git pull origin reg

git checkout -t origin/develop     #远端分支名和本地新建分支名同名

后续拉取该分支的更新,就是切换到该分支,git pull origin 分支名

Git基本常用命令如下:

git add .

git commit -m "提交信息"

git commit -a-m "快速提交(前提是已被追踪过 经历工作区到暂存区到工作区的过程)"

git log 查看日志

git log --oneline 简化日志

git status 查看文件状态

git status -s 简化查看文件的状态

git init 初始化仓库 一个项目

git config GIT配置

git reset --hard 版本号 !!不要不些版本号!!

git reflog 查看所有日志

.gitignore 忽视git文件

cls和clear 清除命令

cd(changedirectory) 文件路径:返回上一级文件 cd返回下一级(这不是git命令,而是终端命令)

dir/ls可以拿到文件夹的东西

git --help / git help -a 可以提示命令

总结:

将代码提交到远程仓库   创建一个远程仓库 - 一个远程仓库 对应一个本地仓库 (项目) 1v1的关系   将本地仓库中的代码提交到仓库区     git init     git add .     git commit -m '提交说明'   提交到远程仓库     设置别名       git remote add 仓库别名 仓库地址     提交代码 push (将本地代码推到远程仓库)       git push origin 分支名       git push -u origin 分支名        -u 建立关联 将本地仓库的当前分支和远程仓库建立关联 (只需要建立一次即可) 后续该分支就可以通过git push进行提交 刚进入公司, 想获取公司代码   克隆代码 git clone 仓库地址 可选的文件夹的名字 同事刚提交了代码到远程, 想获取代码 (差异化更新)   git pull 需求: 将远程仓库的其他分支下载到本地   创建并切换到(同名)分支 git checkout -b 分支名   进行更新 git pull 别名 分支名

标签:碰到,GIT,仓库,解决方案,代码,git,提交,远程,分支
From: https://www.cnblogs.com/bianxuehua/p/17367002.html

相关文章

  • [oeasy]python0145_版本控制_git_备份还原
    git版本控制回忆上次内容上次我们了解了try的完全体try尝试运行 except发现异常时运行的代码块 else没有发现异常时运行的代码块 finally无论是否发现异常最终都要运行的代码块  ​ 添加图......
  • SRIO接口卡航电总线解决方案
    TES600是天津拓航科技的一款基于FPGA与DSP协同处理架构的通用高性能实时信号处理平台,该平台采用1片TI的KeyStone系列多核浮点/定点DSPTMS320C6678作为主处理单元,采用1片Xilinx的Kintex-7系列FPGAXC7K325T作为协处理单元,具有1个FMC子卡接口,具有4路SFP+万兆光纤接口,处理节点之间通......
  • github重新设置RSA
    gitpush时遇到问题:$gitpushoriginmaster@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  WARNING:REMOTEHOSTIDENTIFICATIONHASCHANGED!  @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ITISPOSSIBLETHATSOMEONEISDOIN......
  • git stash解决冲突
    git提交时或拉取时,出现冲突很麻烦可以采用gitstash先将本地修改存储起来gitadd.gitstash然后拉取gitpull然后再讲存储的本地修改顶出栈gitstashpop此时编辑器会提示有冲突,按照提示修改冲突即可修改好即可重新commitpushgitcommit-m"XXX"gitpush ......
  • 学习Git
    欢迎光临LearnGitBranching你对Git感兴趣吗?那么算是来对地方了!“LearningGitBranching”可以说是目前为止最好的教程了,在沙盒里你能执行相应的命令,还能看到每个命令的执行情况;通过一系列刺激的关卡挑战,逐步深入的学习Git的强大功能,在这个过程中你可能还会发现一些有......
  • GitHub Flavored Markdown Spec
    GitHubFlavoredMarkdownSpecVersion0.29-gfm(2019-04-06)ThisformalspecificationisbasedontheCommonMarkSpecbyJohnMacFarlaneandlicensedunder标题两种段落空白和换行段内默认换行的两种模式文本两斜两粗高线例俩标两种列表两变嵌套和任务链接图片感......
  • 苏州服务器托管方案|关于天安保险数据中心解决方案
    前言   网上金融贸易越来越发达,导致越来越多的银行、证券、保险等金融行业不断进行线上业务拓展。这也使得海量的敏感数据存储和维护成为亘需攻克的难题。面对如此庞大的需求,金融企业一般面临两个选择:自建数据中心,或者将服务器托管。在金融领域,瞄准保险行业的IDC需求,苏州胜网......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......
  • .NET Core部署到linux(CentOS)最全解决方案,高阶篇(Docker+Nginx 或 Jexus)
    在前两篇:.NETCore部署到linux(CentOS)最全解决方案,常规篇.NETCore部署到linux(CentOS)最全解决方案,进阶篇(Supervisor+Nginx)我们对.netcore部署到linux有了一个充分的了解,已经可以满足应用要求了,这篇文章我们继续深入带你了解使用Doker+jexus或Nginx来部署.netcore应用。......