当前位置: 首页 > news >正文

Git总结 (比较全)

  描述:

       本篇博文对基础小白非常友好 目录如下

目录

🏆 一、Git简介及安装使用

⭐️1.1、Git的历史

⭐️1.2、Git和SVN的对比

⭐️1.3、Git的安装步骤

⭐️1.4、向本地仓库中添加文件

⭐️1.5、修改文件内容并提交

⭐️1.6、删除本地仓库中的文件

⭐️1.7、TortoiseGit安装后,文件上不出现对号、问号或是其他什么图标

⭐️1.8、将Java工程添加到本地版本库

⭐️1.9、创建本地版本库

🏆二、连接远程仓库

⭐️2.1、使用github创建一个远程仓库

⭐️2.2、推送到远程仓库介绍

🏆2.3、创建ssh密钥及在github上配置公钥

⭐️2.4、使用ssh方式将本地仓库推送到远程

⭐️2.5、使用http方式将本地仓库推送到远程

⭐️2.6、推送修改的文件及冲突解决

🏆三、Git分支

⭐️3.1、搭建私有git服务器

⭐️3.2、使用私有服务器上传下载代码

⭐️3.3、分支概念说明

⭐️3.4、使用Idea将工程添加到本地仓库

⭐️3.5、使用Idea克隆仓库并同步代码

⭐️3.6、在Idea中使用git的分支

🏆四、git不显示绿色 红色 只显示添加的图标

🏆五、设置私钥

🏆六、重装系统之后的Git安装


🏆 一、Git简介及安装使用

⭐️1.1、Git的历史

        同生活中的许多伟大事件一样,Git诞生于一个极富纷争大举创新的年代,Linux内核开源项目有着为数众多的参与者,绝大数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2022年间)。到2022年,整个项目组开始启动分布式版本控制系统BitKeeper来管理和维护代码

        到2005年的时候,开发 BitKeeper的商业公司同Linux内核开源社区的合作关系结束,他们收回了免费使用BitKeeper的权力。这就迫使Linux开源社区(特别是 Linux的缔造者Linus Torvalds )不得不吸取教训,只有开发一套属于自己的版本控制系统才不至于重蹈覆辙。他们对新的系统订了若干目标:

  • 速度
  • 简单的设计
  • 对非线性开发模式的强力支持(允许上千个并行开发的分支)
  • 完全分布式
  • 有能力高效管理雷类似Linux内核一样的超大规模项目(速度和数据量)

⭐️1.2、Git和SVN的对比

SVN

        集中管理方式在一定程度上看到其他开发人员在干什么,而管理员也可以很轻松掌握每个人的开发权限。

        但是相较于其他优点而言,集中式版本控制工具缺点很明显

  •   服务器单点故障
  • 容错性差

Git

Git常用命令流程图

⭐️1.3、Git的安装步骤

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

安装步骤

直接闭着眼睛下一步 友情提示 如果有强迫症的可以适当更改一下安装路径

安装Git小乌龟

一直下一步 需要配置姓名 邮箱

Git && 小乌龟 安装之后 桌面右键鼠标样式如下图

然后安装汉化包

==友情提示:== 如果在桌面打不开设置 可以去文件夹打开设置 进行中文的设置

⭐️1.4、向本地仓库中添加文件

Git文件练习

鼠标右键Git Bash Here 输入命令 git init 即可创建第一个Git文件

 新建hello.txt文件 鼠标右键点击添加 提交

⭐️1.5、修改文件内容并提交

版本库浏览器

查看日志信息

⭐️1.6、删除本地仓库中的文件

版本库浏览器

⭐️1.7、TortoiseGit安装后,文件上不出现对号、问号或是其他什么图标

        问题:TortoiseGit安装后,文件上不出现对号、问号或是其他什么图标

解决办法:

第一、打开注册表
开始--搜索【所有文件下的那个输入框】---输入regedit--打开注册表
根据这个顺序 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
找到ShellIconOverlayIdentifiers,看看TortoiseGit的相关文件【见下图】是不是排在最前面的。如果是,就不用修改了

第二、直接启动任务管理器
找到里面的explorer.exe进程,直接结束进程,重启电脑,就可以看到图标了。

 

删除区别

  1. 第一个删除的话就是在本地删除之后 需要提交一下 暂存区才没有 本地也会删除
  2. 第二个删除就是把暂存区删除 然后本地保留

​​

第一种删除

​​

​​

第二种删除

​​

第三种删除

注意:也不可还原

​​

⭐️1.8、将Java工程添加到本地版本库

思路:
	1.首先准备一个正常的idea项目工程模拟场景
	2.将所有的文件 add添加到暂存区 【不要提交】
	3.将.idea out或者target文件清理忽略【仅暂存区】
	4.提交一个.giitone文件即可
	5.直接当前文件目录 ctrl + A 提交即可
	5.版本库浏览

​​

​​

​​

​​

​​

⭐️1.9、创建本地版本库

图形界面化——1

​​

命令行——2

​​

小乌龟——3

​​

不要选中

​​

🏆二、连接远程仓库

⭐️2.1、使用github创建一个远程仓库

首先你得在github上创建一个账号 这个就不演示了,然后再github上创建一个仓库

 

http://github.com/

1.注册

​​github上创建项目 一般情况下是public开源的 如果选择private私有的 违背开源精神 就需要一个月7美元付费使用

如何删除github项目

http://www.jianshu.com/p/16ff5483f97f

​​

⭐️2.2、推送到远程仓库介绍

ssh协议

什么是ssh

        SSH为 Secure Shell(安全外壳协议)的缩写,由IETF 的网络小组(Network Working Group)所制定。SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用SSH 协议可以有效防止远程管理过程中的信息泄露问题。

基于秘钥的安全验证

        使用ssh协议通信时,推荐使用基于密钥的验证方式。你必须为自己创建一对密匙,并把公用密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在该服务器上你的主目录下寻找你的公用密匙,然后把它和你发送过来的公用密匙进行比较。如果两个密匙一致,服务器就用公用密匙加密“质询”(challenge〉并把它发送给客户端软件。客户端软件收到“质询”之后就可以用你的私人密匙解密再把它发送给服务器。

🏆2.3、创建ssh密钥及在github上配置公钥

推送远程仓库 先生成密钥对

dell@DESKTOP-96M0AUS MINGW64 /d/zhuomian/gitgit/WorkSpace/repo1 (master)
# $ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/dell/.ssh/id_rsa):
/c/Users/dell/.ssh/id_rsa already exists.
# Overwrite (y/n)? y
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/dell/.ssh/id_rsa
Your public key has been saved in /c/Users/dell/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:fsPw1exU0ow5Xa/dBvU4pTSdqESikaoBWD5FOJQtBMY dell@DESKTOP-96M0AUS
The key's randomart image is:
+---[RSA 3072]----+
|+*+=o  .....  +.=|
|oE=..  .o .. o &=|
|  +o  ..  . . X B|
|   o .     . o O.|
|    o   S   . = +|
|   .   . + . o . |
|        . =   .  |
|         . .     |
|                 |
+----[SHA256]-----+

dell@DESKTOP-96M0AUS MINGW64 /d/zhuomian/gitgit/WorkSpace/repo1 (master)
$

C:\Users\dell.ssh

​​

在github把公钥放进入

​​

 

​​

​​

​​

⭐️2.4、使用ssh方式将本地仓库推送到远程

  1. 使用黑屏命令把本地仓库的内容推送到远程仓库
  2. 和远程仓库建立连接 建立了之后就可以把本地仓库的内容推送到远程仓库
dell@DESKTOP-96M0AUS MINGW64 /d/zhuomian/gitgit/WorkSpace/repo1 (master)
# $ git remote add origin git@github.com:wang163bu/repo1.git

dell@DESKTOP-96M0AUS MINGW64 /d/zhuomian/gitgit/WorkSpace/repo1 (master)
# $ git push -u origin master
The authenticity of host 'github.com (20.205.243.166)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no/[fingerprint])?# yes
Warning: Permanently added 'github.com,20.205.243.166' (RSA) to the list of known hosts.
Enumerating objects: 51, done.
Counting objects: 100% (51/51), done.
Delta compression using up to 8 threads
Compressing objects: 100% (39/39), done.
Writing objects: 100% (51/51), 221.39 KiB | 4.02 MiB/s, done.
Total 51 (delta 8), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (8/8), done.
To github.com:wang163bu/repo1.git
 * [new branch]      master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.

dell@DESKTOP-96M0AUS MINGW64 /d/zhuomian/gitgit/WorkSpace/repo1 (master)
$

​​

使用小乌龟 把本地仓库的内容推送到远程仓库

1.在准备一个新的仓库
2.使用小乌龟 右键同步

​​

​​

​​

​​

1.origin 
2.需要推送github仓库的ssh的链接
3.将自己c盘下的密钥 文件路径访问到

​​

​​

​​

如此 github中本地文件推送成功

​​

⭐️2.5、使用http方式将本地仓库推送到远程

​​

​​

​​

​​

⭐️2.6、推送修改的文件及冲突解决

1.修改代码需要推送到远程
2.然后在拉取 从远程仓库拉取到本地
3.在推送和拉取的过程中一定会出现冲突问题
4.出现冲突的时候 可以进入文档手动解决冲突 
5.冲突解决之后 右键小乌龟 点击“解决冲突”
6.然后再次推送即可



为什么会有冲突
简单来说就是A B C程序员一起开发一个项目
A把写好的代码上传到远程仓库之后
B不知道 B自己写好的代码也想提交到远程仓库 但是这个时候本地仓库的代码不是最新的 不是A上传的新的版本代码
那我们应该拉取远程仓库的代码 但是A 和 B一起修改了一个controller文件代码 在拉取的过程中就会出现冲突

​​

​​

然后 提交 推送到远程仓库

gethub And gitee 公钥通用!!!!奈斯

然后通过ssh上传拉取代码秒秒秒的事情呀 真的一点都不麻烦 牛牛牛 冲!

🏆三、Git分支

⭐️3.1、搭建私有git服务器

        远程仓库实际上和本地仓库没啥不同,纯粹为了7x24小时开机并交换大家的修改。GitHub,就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GtHub.交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。

        搭建Git服务器需要准备一台运行Linux 的机器,在此我们使用CentOS。以下为安装步骤: 搭建Git服务器需要准备一台运行linux的机器,在此我们使用CentOS。以下为安装步骤: 

​​

[root@iZ8vb8jcwrgmyeius9dd1uZ git-2.5.0]# history
  695  yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel gcc cc
  696  ll
  700  tar zxf git-2.5.0.tar.gz 
  701  ll
  702  cd git-2.5.0
  703  ll
  704  autoconf  
  # 这个地方 第一次是出现错误了 解决"-bash: make: command not found"安装提示错误
  705   yum -y install gcc automake autoconf libtool make
  706  autoconf
  707  ./configure
  708  make
  709  make install
# 这个地方也是出现错误 需要安装一个命令
# [zhujiang@localhost git-2.5.2]$ make
#     SUBDIR perl
/usr/bin/perl Makefile.PL PREFIX='/usr' INSTALL_BASE='' --# localedir='/usr/share/locale'
# Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 # /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl # # # /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
# BEGIN failed--compilation aborted at Makefile.PL line 3.
# make[1]: *** [perl.mak] Error 2
# make: *** [perl/perl.mak] Error 2

  710  sudo yum install perl-ExtUtils-MakeMaker
  711  make install
  再次命令安装install
  712  git --version
[root@iZ8vb8jcwrgmyeius9dd1uZ git-2.5.0]# 

​​

添加用户

[root@iZ8vb8jcwrgmyeius9dd1uZ git-2.5.0]# adduser -r -c 'git version control' -d /home/git -m git  添加名字为git的用户
[root@iZ8vb8jcwrgmyeius9dd1uZ git-2.5.0]# passwd git 设置密码也是git
Changing password for user git.
New password:   # 输入密码
BAD PASSWORD: The password is shorter than 8 characters #提示密码太简单 请确认
Retype new password:  # 再次输入密码
passwd: all authentication tokens updated successfully.# 设置密码成功
[root@iZ8vb8jcwrgmyeius9dd1uZ git-2.5.0]# 
[root@iZ8vb8jcwrgmyeius9dd1uZ git-2.5.0]# cd /home/  进入到home目录
[root@iZ8vb8jcwrgmyeius9dd1uZ home]# ll  查看
total 4
drwx------ 2 git git 4096 Oct  1 11:40 git
[root@iZ8vb8jcwrgmyeius9dd1uZ home]# su git 切换到git用户上
[git@iZ8vb8jcwrgmyeius9dd1uZ home]$ whoami  当前是哪个用户
git
[git@iZ8vb8jcwrgmyeius9dd1uZ home]$ cd ~
bash: cd~: command not found
[git@iZ8vb8jcwrgmyeius9dd1uZ home]$ cd ~  跳转到git用户的home下面 # ~这个~是中文状态下shift
[git@iZ8vb8jcwrgmyeius9dd1uZ ~]$ pwd  打印当前目录
/home/git
[git@iZ8vb8jcwrgmyeius9dd1uZ ~]$ ll 查看
total 0
[git@iZ8vb8jcwrgmyeius9dd1uZ ~]$ mkdir repo1 新建repo1文件夹
[git@iZ8vb8jcwrgmyeius9dd1uZ ~]$ cd repo1/  进入到repo1文件
[git@iZ8vb8jcwrgmyeius9dd1uZ repo1]$ git init --bare  初始化一个纯版本 不带工作空间的本地仓库  # 服务端的操作基本都是纯版本库  没有工作目录的
Initialized empty Git repository in /home/git/repo1/
[git@iZ8vb8jcwrgmyeius9dd1uZ repo1]$ ll  # 服务器的本地仓库创建好了
total 32
drwxrwxr-x 2 git git 4096 Oct  1 11:50 branches
-rw-rw-r-- 1 git git   66 Oct  1 11:50 config
-rw-rw-r-- 1 git git   73 Oct  1 11:50 description
-rw-rw-r-- 1 git git   23 Oct  1 11:50 HEAD
drwxrwxr-x 2 git git 4096 Oct  1 11:50 hooks
drwxrwxr-x 2 git git 4096 Oct  1 11:50 info
drwxrwxr-x 4 git git 4096 Oct  1 11:50 objects
drwxrwxr-x 4 git git 4096 Oct  1 11:50 refs
[git@iZ8vb8jcwrgmyeius9dd1uZ repo1]$ 

⭐️3.2、使用私有服务器上传下载代码

把本地仓库推送到远程仓库

⭐️3.3、分支概念说明

        在我们每次的提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即 master分支。HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。 

        一开始的时候, master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点:

​​

 

⭐️3.4、使用Idea将工程添加到本地仓库

首先创建一个javaEE工程

​​

配置git路径

​​

1.先创建本地仓库

​​

在添加的时候 选择当前项目的上一级目录

​​

拉取代码更新工程

​​

提交代码 工程有修改提交到本地仓库

​​

​​

​​

​​

2.提交到远程仓库

​​

选择好需要添加的项目文件之后

直接点击commit 成功之后 会在左下角出现绿色提示

​​

​​

​​

​​

⭐️3.5、使用Idea克隆仓库并同步代码

 现在是把代码放到本地仓库中 但是如果我们想和别人合作开发代码 需要把代码放到远程仓库

http://gitee.com/wang_xiaoge/test-items.git

复制gitee中的http连接http://gitee.com/wang_xiaoge/test-items.git

​​

​​

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

push to origin/master was rejected错误解决方案 - 知乎

git不是内部或外部命令,也不是可运行的程序 或批处理文件。

git不是内部或外部命令,也不是可运行的程序 或批处理文件。_九月木樨的博客-CSDN博客_git不是

找到当前所在的文件夹 打开git中的Git Bash Here

git pull

git pull origin master

git pull origin master --allow-unrelated-histories
3.在idea中重新push自己的项目,成功!

​​

从gitee上把项目克隆到idea中

​​

​​

将远程仓库中修改的代码拉取到本地

​​

​​

拉取远程仓库的代码 No tracked branch configured for branch master or the branch doesn't exist.

androidstudio git拉去项目No tracked branch configured for branch master or the branch doesn‘t exist._Ang_qq_252390816的博客-CSDN博客

⭐️3.6、在Idea中使用git的分支

创建分支

​​

​​

​​

🏆四、git不显示绿色 红色 只显示添加的图标

关于设置了 没有显示的 重启

🏆五、设置私钥

步骤

打开终端(git)进入.ssh目录  输入 cd ~/.ssh

 如果.ssh文件夹不存在,执行指令自动创建 mkdir ~/.ssh(我已经创建了,所以不用使用这个命令)

生成RSA密钥对

ssh-keygen -t rsa -C "你的邮箱@xxx.com"

 查看公钥内容

cat ~/.ssh/id_rsa.pub

 将公钥内容(全部)复制并粘贴(注意:公钥内容以ssh-rsa开头)

粘贴地址 https://gitee.com/profile/sshkeys

添加公钥完成后进行测试公钥(测试SSH链接) 

  • ssh -T git@gitee.com
  • 当终端提示welcome to Gitee.com,yourname!表示链接成功

至此以后只要拷贝ssh链接地址,然后利用git指令即可进行相关操作! 

🏆六、重装系统之后的Git安装

  1. 安装git
  2. 安装小乌龟
  3. 三、设置中文
  4. 四、查看Git图标是否则正常显示 (如果不显示 安装好之后 重启即可)
  5. 五、设置密钥 测试Git是否能够正常提交Gitee

相关文章:

  • 【接口协议】FPGA 驱动 VGA 显示实验(一)原理部分
  • 【QT学习】如何绘制圆角窗口?(完整源码)
  • 部署vue element-ui admin报错(vue2)
  • C#面向对象程序设计课程实验五:实验名称:C#面向对象技术
  • [Codeforces] combinatorics (R1600) Part.2
  • 【LC】反转链表, 相交链表, 环形链表
  • 【Java】之集合总结(上)
  • Redis中加锁的lua脚本的源码
  • Mac电脑解决Google翻译失效实用方法
  • 【易购管理系统】商品列表
  • 北斗导航 | RTKLib中的模型和算法(一)—— 时间系统
  • 【论文阅读】自动作文评分系统:一份系统的文献综述
  • avformat_open_input() 代码分析
  • Spring Bean的生命周期、Java配置BeanFactoryPostProcessor失效与解决
  • 大模型系统和应用——高效训练模型压缩
  • [ JavaScript ] 数据结构与算法 —— 链表
  • [译]Python中的类属性与实例属性的区别
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • Akka系列(七):Actor持久化之Akka persistence
  • CAP理论的例子讲解
  • Date型的使用
  • java8-模拟hadoop
  • JavaWeb(学习笔记二)
  • js写一个简单的选项卡
  • windows下使用nginx调试简介
  • 阿里云购买磁盘后挂载
  • 搭建gitbook 和 访问权限认证
  • 基于遗传算法的优化问题求解
  • 记录:CentOS7.2配置LNMP环境记录
  • # centos7下FFmpeg环境部署记录
  • $L^p$ 调和函数恒为零
  • (AngularJS)Angular 控制器之间通信初探
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (LeetCode C++)盛最多水的容器
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)memcache、redis缓存
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net mvc 获取url中controller和action
  • .NET 药厂业务系统 CPU爆高分析
  • .NET基础篇——反射的奥妙
  • :如何用SQL脚本保存存储过程返回的结果集
  • @JsonSerialize注解的使用
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [flask]http请求//获取请求头信息+客户端信息
  • [halcon案例2] 足球场的提取和射影变换
  • [HAOI2016]食物链
  • [I2C]I2C通信协议详解(一) --- 什么是I2C