git的使用

git的使用

版本控制分类
集中式版本控制

cvs和svn都是集中式版本控制系统,它们的主要特点是单一的集中管理的服务器,保存所有文件的修订版本,协同开发人员通过客户端连接到这台服务器,取出最新的文件或者提交更新。

优点:这种做法相对于老式的本地管理来说,每个人都能在一定程度上看到项目中的其他人正在做什么。

缺点:中央服务器不能出错,在出错的这段时间,谁都无法提交更新,协同工作;如果中心数据库所在的磁盘发生损坏,又没做恰当备份,将丢失所有数据

分布式版本控制

git是属于分布式版本控制系统,它的主要特点是客户端并不只提取最新版本的文件快照,而是把代码仓库完整的镜像下来,包括完整的历史记录,所以任何一处协同工作用的服务器发生故障,事后都可以用任何镜像出的本地仓库恢复

git常用指令

1.新增文件的命令:git add file或者git add .

2.提交文件的命令:git commit –m或者git commit –a

3.查看工作区状况:git status –s

4.拉取合并远程分支的操作:git fetch/git merge或者git pull

5.查看提交记录命令:git reflog

6.创建仓库:git init

7.查看仓库的状态:git status

8.这次相较上次修改了哪些内容:git diff

9.将添加的文件放到栈存区中:git add

10.将栈存区内容提交到代码区中:git commit

11.将远程仓库的代码克隆到本地:git clone git地址

12.查看当前分支:git branch

13.切换分支:git checkout

git的文件状态划分

在这里插入图片描述

我们需要对文件来划分不同的状态,以确定这个文件是否已经归于git仓库的管理:

未跟踪:默认情况,git仓库下的文件没有添加到git仓库管理中,我们需要通过git add命令来操作(Untracked)

已跟踪:添加到git仓库管理的文件处于已跟踪状态已跟踪的文件,已跟踪的文件又可以进行细分状态划分:

staged:暂缓区中的文件状态;Unmodified:commit命令可以将staged中文件提交到文件仓库;Modified:修改了某个文件后,会处于Modified状态

在工作时,你可以选择性的将修改后的文件放入缓存区,然后提交所有已暂存的修改,一般我们会有一些文件无需纳入git的管理(本体环境文件,日志文件,编辑器自动生成文件),可以在.gitignore中添加忽略的内容

git的工作流程

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

在这里插入图片描述

Workspace:工作区,就是你平时存放项目代码的地方;

Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息,一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index);

Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本;

Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换;

远程仓库拉取

目前比较常用的远程仓库有Github,Gitee,与自己搭建的Gitlab,对于私有的仓库我们想要操作,远程仓库会对我们进行验证,目前git服务器验证手段主要有两种:

基于http的凭证存储

http协议本身是无状态的连接,所以每一次连接都需要用户名和密码,如果每次这样操作,会非常麻烦,幸运的是,Git 拥有一个凭证系统来处理这个事情。 下面有一些 Git 的选项:

  • 默认所有都不缓存。 每一次连接都会询问你的用户名和密码。
  • “cache” 模式会将凭证存放在内存中一段时间。 密码永远不会被存储在磁盘中,并且在15分钟后从内存中清除。
  • “store” 模式会将凭证用明文的形式存放在磁盘中,并且永不过期。 这意味着除非你修改了你在 Git 服务器上的密码,否则你永远不需要再次输入你的凭证信息。 这种方式的缺点是你的密码是用明文的方式存放在你的 home 目录下。
  • 如果你使用的是 Mac,Git 还有一种 “osxkeychain” 模式,它会将凭证缓存到你系统用户的钥匙串中。 这种方式将凭证存放在磁盘中,并且永不过期,但是是被加密的,这种加密方式与存放 HTTPS 凭证以及 Safari 的自动填写是相同的。
  • 如果你使用的是 Windows,你可以安装一个叫做 “Git Credential Manager for Windows” 的辅助工具。 这和上面说的 “osxkeychain” 十分类似,但是是使用 Windows Credential Store 来控制敏感信息。 可以在 https://github.com/Microsoft/Git-Credential-Manager-for-Windows 下载。
基于ssh的密匙

ssh是一种网络传输协议,以非对称加密方式实现身份验证,通过生成的密匙进行认证,这样可以在不输入密码的情况下登录。具体配置可参考https://www.win7zhijia.cn/win10jc/win10_47515.html

git分支

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。分支具体可参考博客:https://blog.csdn.net/weixin_43660088/article/details/124489383

发生冲突

原因:因为在合并分支的时候,master分支和dev分支恰好有人都修改了同一个文件,GIT不知道应该以哪一个人的文件为准,所以就产生了冲突了。

解决

  1. 通过git stash命令,把工作区的修改提交到栈区,目的是保存工作区的修改;
  2. 通过git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;
  3. 通过git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中

改提交到栈区,目的是保存工作区的修改;
2. 通过git pull命令,拉取远程分支上的代码并合并到本地分支,目的是消除冲突;
3. 通过git stash pop命令,把保存在栈区的修改部分合并到最新的工作空间中

合并冲突时会有智能提示,根据情况选择即可

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值