IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 最全Git使用总结(包括在IDEA中实战使用Git教程)(含理论和实战) -> 正文阅读

[开发工具]最全Git使用总结(包括在IDEA中实战使用Git教程)(含理论和实战)

目录

1Git简介和安装

1.1?git介绍

1.2 git的优势

1.3? Git的安装

1.4 git协作方式

2 Git工作原理

2.1 概念介绍

2.2 git 工作流程

2.3 本地仓库远程仓库联系?编辑

?2.4 Git创建版本库/初始化

2.5 git底层原理

2.6 git的文件管理机制

3 在GitHub上创建远程仓库并获取token

3.1github创建一个远程仓库?编辑

3.2 获取自己GitHub的token

4 创建idae项目并且通过git连接远程仓库

4.1 可视化方式详细步骤

4.2 命令行方式操作步骤

4.3实战过程问题汇集

5 git分支管理

5.1 分支的创建与合并

5.2 分支冲突解决

5.3 分支merge还是rebase?

5.4 分支常见问题

6 Git中常用命令和高级命令

6.1 git初始化和设置签名

6.2 git基础操作

6.3 分支相关的命令

6.4 其他命令

7.?git其他总结


1Git简介和安装

1.1?git介绍

? ? ? ??Git是分布式版本控制系统。而GitHub网站为开源项目免费提供Git存储

? ? ? ? 补充一下分布式版本控制系统与集中式版本控制系统有何不同呢?

? ? ? ??首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。

? ? ? ??多个人如何协作呢?

? ? ? ? 比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。

? ? ? ? ?而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已

1.2 git的优势

  • 完整协议支持

  • 在线文件编辑

  • 社交网络元素

  • 特色工作模式

  • 列表内容私有仓库托管

1.3? Git的安装

? ? ? ? ? mac的安装请见我的另外一篇博客:

? ? ? ? ? Git版本控制和协同工作(附带介绍Mac的brew工具)_斑马!的博客-CSDN博客

1.4 git协作方式

1)团队内部协作

2)跨团队协作

2 Git工作原理

2.1 概念介绍

  • 工作区:仓库文件里面,除了.git目录以外的内容(见下图);更通俗的理解就是我们写代码的地方。

  • 版本库:git目录,用于存储记录版本信息;

  • 暂缓区:版本库里面的stage;

  • master:git自动创建的第一个分支;

  • head指针:用于指向当前分支;

2.2 git 工作流程

????????经过执行 git add . 命令之后会将工作区的文件添加到暂缓区中,再经过执行 git commit -m "说明文字" 命令之后,会将暂缓区的文件添加到版本库的分支当中去。

2.3 本地仓库远程仓库联系

?2.4 Git创建版本库/初始化

????????git init:(个人仓库)仓库初始化

???????首先我们在桌面新建一个 project 空文件夹之后,鼠标右键以 git bash here 打开 Git 终端,输入 git init 命令之后,观察 project 文件夹之后多了一个隐藏文件夹 Git 目录。这时我们就创建好了一个受 Git 管理的仓库,这个仓库就在本地。【注意】.git目录是隐藏目录,我们要想办法进入隐藏目录才可以看见该文件里面的内容。

2.5 git底层原理

????????底层通过一个哈希进行明文加密得到密文。哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:

  • 不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。

  • 哈希算法确定,输入数据确定,输出数据能够保证不变

  • 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化很大

  • 哈希算法不可逆

  • Git 底层采用的是 SHA-1 算法。

  • 哈希算法可以被用来验证文件。原理如下图所示,Git 就是靠这种机制来从根本上保证数据完整性的。

2.6 git的文件管理机制

????????Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的工作方式可以称之为快照流

3 在GitHub上创建远程仓库并获取token

3.1github创建一个远程仓库

3.2 获取自己GitHub的token

????????因为现在在idea中使用git,不能通过账号密码来登陆,需要通过token登陆

  • 方法一:直接进入这个链接(前提是你要先登陆你的帐号): ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?https://github.com/settings/tokens
  • 方法二:登陆自己的GitHub-- setting--development--personal access tokens--填写token用途和到期时间--产生token;注意事项:尽量勾选select scopes,否则会显示Incorrect credentials. Insuffucuent scopes granted to token;

4 创建idae项目并且通过git连接远程仓库

4.1 可视化方式详细步骤

????????1)在idea中创建完项目之后,点击菜单里面vcs -- enable version control integration--git

integration--git在idea中使用git

? ? ? ?2)点击git后就可以进行git命令的相关操作;

???????3)我们先进性commit把文件从工作区放到本地仓库的暂存区,然后push

???????4)push之后,会显示master->define remote

???????5)点击 define remote后,会出现下图所示name和url,其中name我们填写在GitHub上创建的远程仓库名称,URL我们复制远程仓库的https.

6)点击OK后,idea中除了本地仓库local的分支,还会出现远程仓库remote的情况?

? ? ??7)此时去远程仓库看一下,还会发现我们以及可以看到本地仓库提交的内容了;

???????8)我们在本仓库新建一个分支,在local上面右键选择new branch from selected,此时新创建the_first_branch就是我们的第一个默认的当前分支。

???????9)在当前the_first_branch进行修改项目内容,修改完后,我们进行commit和push.

??????10)此时就可以在GitHub看到我们提交的the_first_branch分支。

??????11)在githu网站点击pull requests,然后点击compare & pull request,在comment里面填写相关信息,最后点击create pull request.

? ? ? ? ? ?注意,要选择好对应的分支

??????12)这样就相当于把我们本地仓库的the_first_branch分支添加到了我们远程仓库的master分支。(注意选择好base的master分支,和要被合并的分支)。

??????13)此时我们的工作区还是本地仓库的the_first_branch,也就是说工作区还是修改后的代码,但是如果此时,我们切换到本地local的the master分支,即右键master分支,然后checkout一下,就可以看到工作区变成了master分支的代码,也就是最开始的代码。

?????????14)此时点击idea右上方的update project按钮,会弹出两个选项。

????????第一个选项:Merge the incoming changes into the current branch:将传入的更改合并到当前分支中(常用);? ? ? ? ??

?????????第二个选项:Rebase the current branch on top of the incoming changes:在传入更改的基础上重新建立当前分支。

? ? ? ? 这样本地仓库里面的内容就和远程仓库一样了。

4.2 命令行方式操作步骤

? ? ? ? 见git命令即可。?

4.3实战过程问题汇集

1)如何解决There isn’t anything to compare?

  • 原因:GitHub创建的初试分支是main,并且已经初始化了,然后本地的初试分支是master,当我们想把master分支合并到main分支上的时候就会出现这种情况。

  • 解决方法1:把远程仓库的main分支改名为master分支,最好创建GitHub分支的时候别初始化。

  • 解决办法2:

????????# 切换分支至master

????????git checkout master

????????# 强制重命名master分支为main分支

????????git branch main master -f

????????# 切换分支至main

????????git checkout main

????????# 强制推送本地main分支至远程库,并覆盖远程main分支内容

????????git push origin main -f

  • 解决方法3:修改本地仓库默认的master分支为master分支(rename一下就可以)

2)如何解决??We were unable to authorize you in GitHub. Sorry for inconvenience, please try again later. IDEA2021??????????

? ? ? ? 在idea中授权即可。

3)如果网上是别人GitHub的项目,如何拉取到本地idea中?

????????我们也可以直接通过 IDEA 拉取代码,依次进入 File -> New -> Project from Version Control,将我们在所复制的仓库库地址 url 填入 URL,然后 Version control 选择 Git,Directory 则是我们要存放该代码的本机路径,后面拉取下来的代码将放在该路径中。

4)IDEA的GIt显示不全远程分支或者不显示远程remote

???????idea右上方git拉取一下(update project就行)

5)关于Support for password authentication was removed on August 13, 2021报错的解决方案?

?????????出现原因:从 2021 年 8 月 13 日开始,我们将在对 Git 操作进行身份验证时不再接受帐户密码,并将要求使用基于令牌(token)的身份验证,例如个人访问令牌(针对开发人员)或 OAuth 或 GitHub 应用程序安装令牌(针对集成商) 上所有经过身份验证的 Git 操作。 您也可以继续在您喜欢的地方使用 SSH 密钥。

???????解决方案:使用token登陆。

???????应用:在用命令行操作的时候,把token直接添加远程仓库链接中,这样就可以避免同一个仓库每次提交代码都要输入token了

????????git remote set-url origin https://<your_token>@github.com/<USERNAME>/<REPO>.git

?其中

  • <your_token>:换成你自己得到的token

  • <USERNAME>:是你自己github的用户名

  • <REPO>:是你的仓库名称

注意:尖括号要去掉哈。 https://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@github.com/shliang0603/Yolov4_DeepSocial.git/

6)如何解决fatal: refusing to merge unrelated histories?
? ? ? ?
在你操作命令后面加 --allow-unrelated-histories。

????????eg:git merge master --allow-unrelated-histories

5 git分支管理

5.1 分支的创建与合并

????????在Git里,这个分支叫主分支,即master分支/

  • git branch:列出所有分支;

  • git branch <name> :创建新分支;

  • git checkout <branch_name> :切换到这个分支;

  • git merge <branch_name>? :将branch_name合并到master分支;

  • git branch -d <branch_name> : 删除分支。

  • git tag <tag_name> :给分支打标签

  • git tag: 查看所有标签。

5.2 分支冲突解决

????????GitHub合并分支的时候显示有conflict?

????????参考:Git 解决合并分支时的冲突 - 走看看

1)显示有冲突的现象

  • 在GitHub上面merge的时候会直接提示有冲突,不能合并;

  • 在idea中使用git命令的时候会显示

2)产生冲突的原因?

????????创建分支的时候,新分支的文件内容建立在原分支的基础上.我们以当前master分支做为基准分支,首先在master分支上新建一个第一个分支the_first_branch,然后在master分支上新建第二个分支the_second_branch,当我们修改the_first_branch上面内容的时候,把the_first_branch的修改merge得到master后,如果此时再去修改the_second_branch的内容,并且想把the_second_branch的修改merge到master上,就会产生冲突,因为当前的master是合并the_first_branch后的master,而不是原来单一的master了,也就是说这两个master是不一样的,这样会导致冲突产生。

3)如何解决冲突

  • 方法一:解决冲突就是把Git合并失败的文件手动编辑为我们希望的内容,再提交。(删掉一些冲突的代码)

    ??????自己手动修改

  • 删除这个不能合并的分支,重新在这个最新的master分支上面新建一个分支the_second_branch(new),修改the_second_branch(new)分支内容再次合并。

注意事项:如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉取

5.3 分支merge还是rebase?

从远程拉取到本地的选项如何选择?

????????参考:如何选择(合并冲突)

????????第一个选项:Merge the incoming changes into the current branch:将传入的更改合并到当前分支中(常用);

????????merge 是非常好的,因为它是非破坏性的操作。现有的分支不会以任何方式改变。这避免了rebase(将在下面讨论)的所有潜在缺陷。也就是把远程仓库的master分支的内容拉取到本地仓库里面,比如说我们可以通过切换本地仓库为master分支,然后执行这条命令就可以保持本地仓库的master分支是远程仓库最新的内容。

????????第二个选项:Rebase the current branch on top of the incoming changes:在传入更改的基础上重新建立当前分支。

????????rebase, 这个命令会始终把你最新的修改放到最前头。比如你对主branch进行rebase以后, 你的所有修改就会在主branch当前所有的修改之前。你会更有信心保证你的代码运行畅通无阻。通过你自己的测试以后, 你就可以放心的把代码合并到主的branch里面了。

5.4 分支常见问题

1:在idea右上角update project的时候,发现工作区/本地仓库当前被选中分支内容并没有改变?

????????可能是因为在GitHub上面被修改的分支没有添加到master分支上去,需要merge到master分支上去。

2.如何解决idea的update提示Can't Update No tracked branch configured for branch master or branch?

????????参考:解决方案

????????问题原因:git不知道你要pull远程的哪个分支

????????解决办法:检查远程分支是否存在,如果存在,(可进行更具体配置,不展开)

????????????????????输入命令git branch --set-upstream-to=origin/master

3.push to origin/master was rejected错误解决方案?

????????问题原因:远程仓库里面有初始化留下的readme等文件,而本地仓库没有,这样提交的时候就会产生上述问题。(一般发生在第一次提交项目的时候)

????????解决方案:

  • 1.切换到自己项目所在的目录

  • 2.在terminl窗口中依次输入命令:
    git pull
    git pull origin master
    git pull origin master --allow-unrelated-histories

  • 3.在idea中重新push自己的项目:
    git push -u origin master -f

6 Git中常用命令和高级命令

6.1 git初始化和设置签名

  • git init: 数据仓库初始化;

  • git config –global user.name? “geekfanr”:设置提交仓库时的用户名信息;

  • git config –global user.email “1111@gmail.com”: 设置提交仓库时的邮箱信

  • git config –-list :显示当前的Git配置。

6.2 git基础操作

  • git status: 查看工作区,暂存区状态;

  • git add <file_name> :将文件添加到暂存区;

  • git commit -m “注释”? <file_name>:将暂存区该文件添加到本地仓库;

  • git log :查看历史记录;

  • git diff? <文件名> :将工作区中的文件与暂存区进行对比

6.3 分支相关的命令

  • git branch:列出所有分支;

  • git branch <name> :创建新分支;

  • git checkout <branch_name> :切换到这个分支;

  • git merge <branch_name>? :将branch_name合并到master分支;

  • git branch -d <branch_name> : 删除分支。

  • git tag <tag_name> :给分支打标签

  • git tag: 查看所有标签。

  • pull=fetch+merge

  • git fetch [远程库地址别名] [远程分支名]

  • git merge [远程库地址别名/远程分支名]

  • git pull [远程库地址别名] [远程分支名]

6.4 其他命令

  • git reflog :查看分支引用记录(能够查看所有的版本号

  • git reset:版本回退(建议加上––hard 参数,Git 支持无限次后悔)

    • 回退到上一个版本:git reset ––hard HEAD^

    • 回退到上上一个版本:git reset ––hard HEAD^^

    • 回退到上 N 个版本:git reset ––hard HEAD~N(N 是一个整数)

    • 回退到任意一个版本:git reset ––hard 版本号

  • git clone:下载远程仓库到本地?

????下载远程仓库到当前路径:git clone 仓库的URL

???????????????下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径

  • git pull:下载远程仓库的最新信息到本地仓库

  • git push:将本地的仓库信息推送到远程仓库

7.?git其他总结

? ? ? ? Fork的作用:ork的意思是从别人的代码库中复制一份到你自己的代码库,与普通的复制不同,fork包含了原有库中的所有提交记录,fork后这个代码库是完全独立的,属于你自己,你可以在自己的库中做任何修改,当然也可以通过Pull Request向原来的库提交合并请求。

????????Watch,就是关注,关注后,代码库中有新的commit你都会收到通知。

???????Star,与watch不同,star相当于收藏,你可以方便地找到你star过的库,但是不会收到关于那个库的任何通知。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-05-13 11:54:11  更:2022-05-13 11:54:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/14 15:04:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码