| |
|
开发:
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介绍? ? ? ??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 概念介绍
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底层原理????????底层通过一个哈希进行明文加密得到密文。哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:
2.6 git的文件管理机制????????Git 把数据看作是小型文件系统的一组快照。每次提交更新时 Git 都会对当前的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。所以 Git 的工作方式可以称之为快照流。 3 在GitHub上创建远程仓库并获取token3.1github创建一个远程仓库3.2 获取自己GitHub的token????????因为现在在idea中使用git,不能通过账号密码来登陆,需要通过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?
????????# 切换分支至master ????????git checkout master ????????# 强制重命名master分支为main分支 ????????git branch main master -f ????????# 切换分支至main ????????git checkout main ????????# 强制推送本地main分支至远程库,并覆盖远程main分支内容 ????????git push origin main -f
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 ?其中
注意:尖括号要去掉哈。 https://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@github.com/shliang0603/Yolov4_DeepSocial.git/ 6)如何解决fatal: refusing to merge unrelated histories? ????????eg:git merge master --allow-unrelated-histories 5 git分支管理5.1 分支的创建与合并????????在Git里,这个分支叫主分支,即master分支/
5.2 分支冲突解决????????GitHub合并分支的时候显示有conflict? ????????参考:Git 解决合并分支时的冲突 - 走看看 1)显示有冲突的现象
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)如何解决冲突
注意事项:如果不是基于 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等文件,而本地仓库没有,这样提交的时候就会产生上述问题。(一般发生在第一次提交项目的时候) ????????解决方案:
6 Git中常用命令和高级命令6.1 git初始化和设置签名
6.2 git基础操作
6.3 分支相关的命令
6.4 其他命令
????下载远程仓库到当前路径:git clone 仓库的URL ???????????????下载远程仓库到特定路径:git clone 仓库的URL 存放仓库的路径
7.?git其他总结? ? ? ? Fork的作用:ork的意思是从别人的代码库中复制一份到你自己的代码库,与普通的复制不同,fork包含了原有库中的所有提交记录,fork后这个代码库是完全独立的,属于你自己,你可以在自己的库中做任何修改,当然也可以通过Pull Request向原来的库提交合并请求。 ????????Watch,就是关注,关注后,代码库中有新的commit你都会收到通知。 ???????Star,与watch不同,star相当于收藏,你可以方便地找到你star过的库,但是不会收到关于那个库的任何通知。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |