分布式版本控制工具----git

版本控制

版本控制的功能

  1. 协同修改
    多人并行—修改服务器同一文件
  2. 数据备份
    保存文件的当前状态、历史状态
  3. 版本管理
    保存每一个版本信息时,不存重复的数据,节约内存
    git采用文件快照的方式,
    svn采用增量式
  4. 权限控制
    对团队中开发者进行权限控制,对团队外贡献的代码进行审核(git独有)
  5. 历史记录
    查看修改人、日志信息等;将本地文件恢复到某一历史版本
  6. 分支管理
    团队开发中,多条生产线同时推进,提高效率

版本控制分类

集中式:svn,各个版本存于服务器,易单点故障
分布式:git,能有效解决单点故障,C语言开发

git简介

git官网
由linus使用C编写

git优势

  1. 大部分操作----本地完成-----不需联网
  2. 保证完整性
  3. 尽可能添加数据,而不是删除、修改数据
  4. 分支操作,快捷流畅
  5. 与linux命令全面兼容

git安装

下载地址

  1. window
    下载,安装,use git from git bash
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    其他默认!!使用右键–git bash here

  2. linux
    参考地址
    安装当前linux版本的最新、稳定版的git

sudo apt-get install git #最新、稳定版
git --version #查看

git结构

在这里插入图片描述

代码托管中心

维护远程代码仓库

  1. 局域网
    GitLab服务器
  2. 外网
    GitHub,国外服务器,慢
    码云,国内服务器,快,可以微信登录

代码托管模式

  1. 团队内部
    在这里插入图片描述
  2. 跨团队
    在这里插入图片描述

git操作

  1. 初始化本地仓库
    进入项目目录,命令行执行git init,初始化一个本地仓库.git,内部的文件不能更改
  2. 设置签名
    用户名:jack
    Email:xxxx@qq.com
    作用:区别不同的开发人员,与登录远程仓库的用户名无关
    命令:
    项目级别—当前项目
      git config user.name jack
      git config user.email xxxx@qq.com
      签名保存在项目目录下.git/config
    系统用户级别—登录操作系统的用户
      git config - -global user.name jack
      git config - -global user.email xxxx@qq.com
      签名保存在~/.gitconfig
    二者的优先级:就近原则
  3. 实际操作
git status #查看当前工作区、暂存区状态
sudo echo test file > a.txt

#增加到暂存区
git add a.txt
#从暂存区移除
git rm --cached a.txt

#暂存区提交到本地仓库
git commit a.txt  #使用vim添加操作的描述
git commit -m "描述信息" a.txt

#查看历史记录
git log

如下,可以看到提交的人、提交时间、提交描述、每次提交的索引hash值,HEAD是一个指针,指向当前版本。
若内容太多,需翻页:空格向下、b向上、q退出
在这里插入图片描述

#格式化输出版本
git log --pretty=online
git log --oneline
git reflog
  1. 版本切换
    1)使用索引
    2)使用^,后退一步
    3)使用~,后退n步
#随意切换
git reflog
git reset --hard 复制的索引

#后退的切换
git reset --hard HEAD^ #后退一步
git reset --hard HEAD^^ #后退两步

#后退n步
git reset --hard HEAD~100 #后退100步
  1. hard、soft、mixed
#查看本地文档
git help reset

#reset的三个参数 index file[暂存区] working tree[工作区]
#reset --soft:仅在本地仓库移动HEAD指针
#reset --mixed:本地仓库移动指针;重置暂存区;
#reset --hard:本地仓库移动指针;重置暂存区;重置工作区
#hard使用较多
  1. 删除文件,并找回
    文件存在时的状态,需提交到本地库
#删除
sudo rm test.txt  #在git管理的项目目录下
git status
#将删除操作文件,增加到暂存区
git add test.txt
git status
#删除的文件,提交本地仓库
git commit -m "测试删除" test.txt

#文件删除了,但是删除记录不会丢
#只需回到上一个版本,就可以实现文件的恢复
git reset --hard 索引

#如果删除的文件,只增加到暂存区,没有提交到本地库
#恢复
git reset --hard HEAD
  1. 比较文件
#比较工作区与暂存区
git diff test.txt
#比较工作区与当前版本
git diff HEAD test.txt
git diff HEAD^ test.txt
git diff HEAD~2 test.txt

在这里插入图片描述
绿色为差异部分

git 分支(45minutes)

多条生产线同时推进。
在这里插入图片描述
复制Master,产生分支,各个分支同时推进,完成则合并到Master。产生Bug则分支热修复。
分支作用:
1.并行推进,提高开发效率
2.其中一个分支失败,不影响其他分支

分支操作

初始化本地仓库,就只有一个Master分支

#查看分支
git branch -v
#创建分支,将主分支的仓库复制过来
git branch b1
#切换分支
git checkout b1

#在b1分支,不断修改,然后合并到Master分支
git checkout master #切换到master
git branch -v
git merge b1   #在 master上合并b1分支

#合并分支,产生冲突,怎么解决?
#打开文件,删除特殊符号(HEAD代表当前分支),保存
#git add filename
#git commit -m 'xxxxxx'
#最后提交没有文件名

git基本原理

hash算法

特点

  1. hash算法固定,输出加密结果长度固定(不管输入多少数据)
  2. hash算法固定,输入内容不变,加密结果不变
  3. hash算法固定,输入数据变化,加密结果也变化,且通常变化很大
  4. hash算法不可逆

git底层采用SHA-1,来校验文件
服务端的文件,计算一次hash值,下载到本地的文件计算一次hash值,对比两个值,一致则文件没有损坏。

git文件管理机制

在这里插入图片描述
不同版本对应多个文件(以一个文件为例)
初始化本地仓库,创建一个master分支(指针),此时HEAD指向master
创建分支,创建一个指针,可以指向所有文件的不同版本,即版本切换。
看起来像是复制了master分支
切换分支时,HEAD指向该分支指针。
在这里插入图片描述
切换不同的分支,只是HEAD指针的移动。

github

  1. 使用邮箱注册账号
  2. 更改头像:右上角账户下三角—your profile----点击头像
  3. 创建本地库
# 创建项目,并在目录下
#初始化本地库
git init
#签名
git config user.name lauf
git config user.email xxx@mail.com

#编辑项目,并提交到本地库
  1. 创建远程库
    登录github----点击右上角±—>new repository
    在这里插入图片描述
    输入一个仓库名字,创建,得到如下链接:
    在这里插入图片描述
    将该https链接保存在当前项目的git管理中
#查看保存的远程仓库链接
git remove -v
#增加远程仓库链接
git remove add name url   #给url起一个名字name

#本地库 推送到远程库
git push remote_name native_branch #将本地的一个分支,推送到远程库
#git是怎么识别当前用户是管理远程仓库用户的????签名
#推送远程库时的错误
#

#其他
echo "# lauf" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin https://github.com/wn15239159680/lauf.git
git push -u origin main

推送远程的错误:
在这里插入图片描述
另外还要保证网速!
如下输入github个人口令:
在这里插入图片描述
生成个人口令:右上角—点击头像-----settings----Developer settings-----Personal access tokens
在这里插入图片描述
输入token描述-----选择所有范围select scopes—生成----复制保存(后续看不到了)

  1. 猪队友克隆操作
#创建一个文件夹,并进入
git clone github_addr  #远程仓库地址--code 复制

克隆的功能:
完整地将远程库-----复制到本地
在复制下来的项目中初始化本地仓库, 保存远程地址
此时该队友只能将修改----提交到本地库(需先签名)!!!,不能远程库,因为在push到远程库时,需要登录自己的github,如下:

lauf@master:~/lauf$ git push origin master
Username for 'https://github.com': 944582529@qq.com
Password for 'https://944582529@qq.com@github.com': 个人权限口令验证
Counting objects: 3, done.
Writing objects: 100% (3/3), 250 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/wn15239159680/lauf.git
   e623a3f..d404a43  master -> master

问题1:windows下克隆,无法解析域名!!
在这里插入图片描述
问题2:ubuntu下克隆,

lauf@master:~$ git clone https://github.com/wn15239159680/lauf.git
Cloning into 'lauf'...
fatal: unable to access 'https://github.com/wn15239159680/lauf.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.
lauf@master:~$ git config --global --unset http.proxy
lauf@master:~$ git config --global --unset https.proxy
lauf@master:~$ git clone https://github.com/wn15239159680/lauf.git
Cloning into 'lauf'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 6 (delta 0), reused 6 (delta 0), pack-reused 0
Unpacking objects: 100% (6/6), done.
Checking connectivity... done.

$ git clone https://github.com/wn15239159680/lauf.git
Cloning into 'lauf'...
fatal: unable to access 'https://github.com/wn15239159680/lauf.git/': Could not resolve host: github.com


$ git config --global --unset http.proxy

$ git config --global --unset https.proxy

$ git clone https://github.com/wn15239159680/lauf.git
Cloning into 'lauf'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0
Receiving objects: 100% (3/3), done.

解决!!

  1. 将猪队友的github账户加入团队
    远程仓库管理账户-----登录github----settings----manage access
    在这里插入图片描述
    输入队友的github账号名字
    复制邀请链接-----发送队友----队友登录github----访问该链接----接受邀请—队友可以使用自己的github账号git push

  2. 拉取修改的内容

git fetch origin master  #将远程库拉取到本地库,并不修改工作区
#可以查看本地内容,并没有变化
#切换远程master分支
git checkout origin/master

#合并到本地
git merge origin master

#pull =  fetch + merge
#当修改的内容不多时,可以使用pull
git pull origin master
  1. 团队冲突解决
    若两个人同时改一个文件的同一个位置,A先提交本地并push到远程库;B再提交本地并push到远程会报错!
    解决:
    B先pull,然后解决冲突(删除特殊符号),git add xxx----git commit -m ‘xxxxx’----git push origin master
    注意:若修改不是基于github远程库的最新版,则需要pull,有冲突则解决。

A/B各有一个github账号

  1. 跨团队协作
    在这里插入图片描述
  1. 复制团队A的github仓库地址
    登录团队B的成员的github账号,然后在地址栏后面粘贴复制的github仓库地址,可以看到对应的仓库,点击fork。
    2)团队B成员,克隆,本地修改,推送远程(使用自己的github账号)
    3)B成员—点击Pull requests—new pull requests—create pull requests—添加描述
    4)团队A的管理员账户----Pull requests—对话、审核----merge pull request—添加日志、confirm merge
  1. ssh免密登录
    使用https链接,每次需要输入验证口令,这里配置免密ssh方式
    1)生成rsa密钥对
ssh-keygen -t rsa -C github_account_email

#将公钥内容复制到github
cd ~
cd .ssh
cat id_rsa.pub  #全部复制

2)登录github----settings-----SSH and GPG keys—new ssh key -----输入title&粘贴

3)到客户端操作,提交到本地库
4)本地管理远程库的ssh地址

git remote -v 
git remote add origin_ssh ssh_addr
git push origin_ssh master #将本地master分支,通过ssh,推送到远程库。

此时,将本地库—推送到远程时,不再需要输入密码!!

git图形化界面

Eclipse中的git

window—preferences—team—git

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: git-2.16.2-64是一个版本控制系统Git的具体版本号。Git是一个分布式版本控制系统,主要用于管理项目的源代码。不同的版本会有不同的功能改进和bug修复。 git-2.16.2-64版本是Git的一个稳定版本版本号中的数字"2.16.2"表示主要版本号、次要版本号和修订版本号,而"64"表示该版本是64位系统使用的。 在git-2.16.2-64版本中,可能有以下的一些改进和修复:修复了一些已知的bug,提升了系统的稳定性和安全性;优化了一些功能的性能,提高了系统的效率;增加了一些新的命令和参数,扩展了系统的功能和灵活性。 使用git-2.16.2-64版本可以带来一些好处:首先,它是一个稳定版本,相对较少的bug会增加系统的可靠性;其次,该版本可能会拥有修复了一些重要的安全漏洞,提高了项目的安全性;再次,新的功能和性能的优化可以提高开发者的工作效率。 当然,使用git-2.16.2-64版本也可能会有一些潜在的问题:它可能并不是最新的版本,可能会缺少一些最新的功能和改进;同时,该版本可能并不完全兼容一些旧的版本,一些旧的配置或命令可能需要重新调整或修改。 总的来说,git-2.16.2-64是Git的一个版本号,具体的功能和效果可能根据个人的需求和具体情况而有所不同。对于一个特定的项目或开发环境,选择合适的Git版本是很重要的。 ### 回答2: git-2.16.2-64是Git版本控制系统的一个特定版本。Git是一个免费、开源的分布式版本控制系统,用于管理项目的源代码和协同开发。它具有高效、快速和灵活的特点,能够支持从个人项目到大型企业的开发团队。 git-2.16.2-64是Git的特定版本号,其中的2.16.2表示主要版本号为2,次要版本号为16,修订版本号为2。64表示该版本适用于64位操作系统。通过版本号的不同,我们可以了解到这个版本相对于其他版本的改进和更新。 在Git-2.16.2-64中,可能包括一些Bug修复、性能优化和新功能的添加。通常,每个Git版本都会修复已知的Bug和问题,并可能引入新的功能和改进现有功能。这有助于提高Git的稳定性、安全性和性能。 作为使用者,我们可以从Git-2.16.2-64中受益。我们可以在开发过程中更好地管理项目的版本,并轻松地与团队成员合作。Git的分布式架构允许我们在本地工作并离线提交代码,随后与远程存储库同步。我们还可以使用分支和合并功能来有效地组织和合并代码。 总而言之,Git-2.16.2-64是一个用于版本控制和协同开发的特定版本。它通过Bug修复、性能优化和新功能的添加提供了更好的使用体验。无论是个人开发者还是团队,Git都是一个强大而受欢迎的工具,有助于管理和协调项目的代码。 ### 回答3: git-2.16.2-64是指Git版本2.16.2的64位安装包。Git是一个免费、开源的分布式版本控制系统,用于跟踪和管理项目的版本更新。在软件开发中,Git被广泛用于团队协作和源代码管理。 64位安装包意味着该版本的Git适用于运行在64位操作系统上。在计算机的架构中,64位可以处理更大的内存地址空间,因此可以更好地支持处理大型数据和运行复杂的应用程序。 Git的版本号2.16.2表示这是Git的第2个大版本中的第16个次版本的修订版。每个版本的更新通常包括错误修复、性能优化和新功能的添加。这个版本的Git可能修复了之前版本中存在的一些问题,或者添加了一些新的功能和改进。 安装Git-2.16.2-64版本,可以通过前往Git官方网站下载该版本的安装包,并按照安装向导进行安装。安装Git后,可以在命令行界面使用Git命令进行代码仓库的克隆、添加、提交、分支、合并等操作。 总之,Git-2.16.2-64是一个用于64位操作系统的Git版本,它提供了跟踪、管理和版本控制项目的功能,并可能包含了之前版本的错误修复和新功能的改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值