首页 > 其他分享 >Git

Git

时间:2024-09-25 09:48:45浏览次数:8  
标签:git 代码 Git 本地 远程 分支

Git

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。

Git易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCase等版本控制工具

Git工作机制

img

Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库

  • 局域网

GitLab

  • 互联网

GitHub(外网)

Gitee码云(国内网站)

Git安装

​ 官网地址: https://git-scm.com/或https://github.com/git-for-windows/git/releases

推荐安装 git2.40.0版本

Git常用命令

命令名称 作用
git config --global user.name 用户名 设置用户签名
git config --global user.email 邮箱 设置用户邮箱
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m "日志信息" 文件名 提交到本地库
git reflog 查看历史记录
git reset --hard 版本号 版本穿梭

设置用户签名

git config --global user.name 用户名

git config --global user.email 邮箱

全局范围的签名设置:

git config --global user.name Layne
git config --global user.email [email protected]
git config --list
cat ~/.gitconfig

说明:

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。

※注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。

初始化本地库

git init

image-20230627131721466

查看本地库状态

git status

首次查看(工作区没有文件)

image-20230627132109306

新增文件

image-20230627132215734

image-20230627132317963

再次查看(检测到未追踪文件)

image-20230627132547573

添加暂存区

git add 文件名

image-20230627132954523

提交本地库

git commit -m "日志信息" 文件名

image-20230627133335748

历史版本

git reflog 查看版本信息

git log 查看版本详细信息

image-20230627134228811

版本穿梭

git reset --hard 版本号

--首先查看当前的历史记录,可以看到当前是在48f4e22这个版本

image-20230627134422376

--切换到之前版本,8ca80d7版本,也就是我们第一次提交的版本

image-20230627134533136

Git分支操作

img

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)。image-20240918143904101

分支的好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

分支的操作

命令名称 作用
git branch 分支名 创建分支
git branch -v 查看分支
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上
git branch -d 分支名 删除指定分支

查看分支

git branch -v

image-20230627135136847

创建分支

git branch 分支名

image-20230627135331197

切换分支

git checkout 分支名

--分支由master改为hot-fix

image-20230627161146988

合并分支

git merge 分支名

-- 切换回到master分支

image-20230627161644314

-- 在master分支上合并hot-fix分支

image-20230627161728843

冲突产生的原因

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。

查看状态(检测到有文件有两处修改)

解决冲突

编辑有冲突的文件

删除特殊符号,决定要使用的内容

特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix

image-20230627162115286

添加到暂存区

image-20230627162209093

执行提交

注意:此时使用git commit命令时不能带文件名

image-20230627162314679

-- 发现后面MERGING消失,变为正常

分支合并代码

注意: 如果代码合并完成之后,分支结构的代码依然没有更新,如果需要和主分支一样 则执行代码合并

git merge master

image-20230816201558577

创建分支和切换分支图解

img

master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。

HEAD如果指向master,那么我们现在就在master分支上,HEAD如果执行hotfix,那么我们现在就在hotfix分支上。

所以切换分支的本质就是移动HEAD指针。

Gitee(码云)操作

Git 代码托管服务

前面我们已经知道了Git中存在两种类型的仓库,即本地仓库远程仓库。那么我们如何搭建Git远程仓库呢?我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有GitHub、码云、GitLab等。

l gitHub( 地址:https://github.com/

是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub

l 码云(地址: https://gitee.com/

国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快

l GitLab (地址: https://about.gitlab.com/

是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务

Gitee简介

1.是什么: gitee是一个git项目托管网站,主要提供基于git的版本托管服务

2.能干嘛: gitee是一个基于git的代码托管平台, Git 并不像 SVN 那样有个中心服务器。目前我们使用到的 Git 命令都是在本地执行,如果你想通过 Git 分享你的代码或者与其他开发人员合作。 你就需要将数据放到一台其他开发人员能够连接的服务器上。

wps28

3.去哪下: https://gitee.com/

码云帐号注册和登录

进入码云官网地址:https://gitee.com/,点击注册Gitee

创建远程仓库

image-20240918153009483

远程仓库操作

命令名称* 作用
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 起别名 origin
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
git remote rm 别名 删除现有远程库连接

创建远程仓库别名

git remote -v 查看当前所有远程地址别名

git remote add 别名 远程地址

推送本地分支到远程仓库

git push 别名 分支名

第一次需要输入码云的用户名和密码

注意:推送时当前版本要和远程仓库版本一致才能推送。

克隆远程仓库到本地

git clone 远程地址

拉取远程库内容

git pull 远程库地址别名 远程分支名

邀请加入团队

点击管理**

img

选择仓库成员管理

wps43

IDEA集成Git(本地库)

首先配置Git忽略文件

(1) 创建忽略规则文件

  • 文件名称:xxxx.ignore(前缀名随便起,建议是git.ignore)

  • 这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig文件引用,建议也放在用户家目录下

  • git.ignore文件模版内容如下

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

.classpath
.project
.settings
target
.idea
*.iml

image-20240528092350939

(2)在.gitconfig文件中引用

(此文件在Windows的家目录中)

[user]
	name = Layne
	email = [email protected]
[core]
	excludesfile = C:/Users/asus/git.ignore

注意:这里要使用正斜线(/),不要使用反斜线(\)

定位Git程序

image-20230627171100646

初始化本地库

image-20230627171156663

选择要创建Git本地仓库的工程。

image-20230627171258993

添加到暂存区

右键点击项目选择Git -> Add将项目添加到暂存区。

image-20230627171351854

提交到本地库

右键点击git 点击Commit directory

image-20230627171511686

切换版本

查看历史版本

wps66

img

右键选择要切换的版本,然后在菜单里点击Checkout Revision。

img

创建分支

选择Git,在Repository里面,点击Branches按钮。

img

在弹出的Git Branches框里,点击New Branch按钮。

img

填写分支名称,创建hot-fix分支。

wps71

然后看到hot-fix,说明分支创建成功,并且当前已经切换成hot-fix分支

wps72

切换分支

切换到master分支

img

合并分支

切换到master分支,将hot-fix分支合并到当前master分支。

img

如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库。

wps75

解决冲突

如图所示,如果master分支和hot-fix分支都修改了代码,在合并分支的时候就会发生冲突。

wps76

img

我们现在站在master分支上合并hot-fix分支,就会发生代码冲突。

img

点击Conflicts框里的Merge按钮,进行手动合并代码。

wps79

手动合并完代码以后,点击右下角的Apply按钮。

img

代码冲突解决,自动提交本地库。

img

IDEA集成Gitee(码云)

DEA安装码云插件

Idea默认不带码云插件,我们第一步要安装Gitee插件

如图所示,在Idea插件商店搜索Gitee,然后点击右侧的Install按钮。

img

Idea重启以后在Version Control设置里面看到Gitee,说明码云插件安装成功

img

​ 然后在码云插件里面添加码云帐号,我们就可以用Idea连接码云了。

img

image-20240918175548909

push推送本地库到远程库

首先在Idea里面创建一个工程,初始化git工程,然后将代码添加到暂存区,提交到本地库,这些步骤上面已经讲过,此处不再赘述。

将本地代码push到码云远程库

image-20230627192612272

自定义远程库链接。

image-20230627192704469

给远程库链接定义个name,然后再URL里面填入码云远程库的链接即可

image-20230627192906905

然后选择定义好的远程链接,点击Push即可

image-20230627192951068

pull拉取远程库到本地库

右键点击项目,可以将远程仓库的内容pull到本地仓库。

image-20230627193430355

选择远程库

image-20230627193601024

pull了远程库中最新内容

image-20230627193719625

注意:pull是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。

标签:git,代码,Git,本地,远程,分支
From: https://www.cnblogs.com/21CHS/p/18430669

相关文章

  • GitHub上图像超分开源项目推荐【持续更新】
    SRCNN介绍:SRCNN(Super-ResolutionConvolutionalNeuralNetwork)是一种用于图像超分辨率的卷积神经网络。它由Dong等人在2014年提出,是早期的深度学习方法之一,用于提高图像的分辨率。SRCNN通过学习低分辨率(LR)图像到高分辨率(HR)图像的映射关系,来重建高分辨率图像。GitHub星数:2......
  • IDEA更改远程git仓库地址
    前言我们在使用IDEA开发时,一般会配置好对应的git仓库,这样就比较容易对代码进行控制以及协同开发。 但有时候,我们远程的仓库地址由于这样那样的原因,需要迁移(这在爱折腾的企业是常有的事情)。那么,我们该如何在IDEA中更新远程仓库地址呢?如何设置首先,我们点击上方的【Git】按钮,打......
  • Git学习
    前言会用docker了,结果啥都要自己下载(gdb,pwndbg,git...),真是麻烦到家了。现在顺便学一下git吧。廖雪峰的教材命令仓库初始化gitinit添加gitaddxxxgitcommitxxx重置gitreset--hardHEAD^/HEAD~100/commit_idgit查看查看idgitrefloggitloggitstatus查看修改gi......
  • git-repo系列教程(7) 解决copyfile,linkfile 不起作用
    问题描述#建立如下目录tree.├──repo_manifest│  └──default.xml#默认清单└──repo_test#测试仓库├──Makefile└──readme.mddefault.xml内容<?xmlversion="1.0"encoding="UTF-8"?><manifest><remotename="server"......
  • 【Day20240924】05git 两人协作 冲突
    git两人协作冲突命令行解决两个人修改同一文件时的冲突可视化解决两个人修改同一文件时的冲突参考命令行解决两个人修改同一文件时的冲突假设kerwin.js是项目的路由文件。tiechui文件夹是组员铁锤的工作目录;test2008文件夹是组长的工作目录。此时,两人都想要......
  • git reset --hard执行之后怎么撤回
    情况一,执行reset命令前commit过根据你的gitreflog输出,显示你最近的操作是:HEAD@{0}:gitreset--hardHEAD,即你重置到了当前的HEAD。HEAD@{1}:这是你克隆仓库时的记录。由于HEAD@{0}和HEAD@{1}都指向相同的提交f776dba,这意味着你在执行gitreset--hard之前和之后......
  • Git 简介和基本使用方法
    什么是Git?Git是一个分布式版本控制系统,由LinusTorvalds于2005年创建。它设计用于管理和跟踪文件的变更,适用于各种规模的项目,从个人项目到大型开源项目。Git可以记录每个文件的修改历史,并且能够轻松地在不同版本之间进行切换。它还支持多人协作开发,可以方便地合并不同开发者的......
  • cnblogs的GitHub同步markdown文件的blog如何识别文章的唯一性(身份ID如何判定)
    本篇blog是写在GitHub的对应的仓库中的。cnblogs会给终身用户提供一个把GitHub仓库中的markdown文件同步到cnblogs上的一个服务,本文就是使用这个服务同步到个人blog地址的:https://cnblogs.com/xyz问题1:何时触发blogs的同步?当仓库中的markdown文件有更新时,cnblogs会自动同......
  • git误操作带来的麻烦-merge
    git误操作带来的麻烦-merge我想将一个分支的内容完全覆盖远程另外一个分支的内容怎么做如果你想将一个本地分支(我们称之为source-branch)的内容完全覆盖远程的另一个分支(我们称之为target-branch),可以按照以下步骤操作。但请注意,这种方法会永久性地改变target-branch的提交历史,所......
  • VsCode使用git上传代码登录问题
    问题场景我在VsCode上传代码到gitee的时候遇到上传不了的问题,起初我在添加远程仓库链接的时候使用的是ssh链接来上传自己的代码,然而始终上传不了,在上传的时候VsCode一直提醒我是否继续连接,我感觉可能使用ssh链接是连接不上了。然后我去百度了一下,有人说要用http的链接,我就将远......