Git基本使用

一.最流行的分布式版本控制软件

介绍

Git 是目前最流行的分布式版本控制软件 在开发的过程中用于管理对文件、目录或工程等内容的修改历史,方便查看历史记录,备份以便恢复以前的版本的软件工程技术

实现功能

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率
  • 跟踪记录整个软件的开发过程
  • 减轻开发人员负担,节省时间,同时降低人为错误

版本控制分类

本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如 RCS

集中版本控制

  1. 所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改
  2. 用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也 无法切换版本
  3. 所有数据都保存在单一的服务器上,如果这个服务器会损坏(有很大的风险), 这样就会 丢失所有的数据,需要定期备
  4. 代表产品:SVN、CVS、VSS

分布式版本控制

  1. 所有版本信息仓库全部同步到本地的每个用户
  2. 可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时 push 到相应的服 务器或其他用户那里。
  3. 每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复 所有的数据
  4. 更加安全, 不会因为服务器损坏或者网络问题,造成不能工作的情况
  5. 代表软件: Git

二.下载与安装

官网Git (git-scm.com) 傻瓜式安装

文档与互动练习

https://gitee.com/all-about-git

https://learngitbranching.js.org/?locale=zh_CN

三.基本配置

初始设置

首先设置电子邮箱和用户名,因为每次提交都会使用该信息

git config --global user.name "leon"
git config --global user.email "le0n67@163.com"

img

查看配置

查看所有配置 系统配置 当前用户配置

git config -l 
git config --system --list
git config --global --list

四.Git工作原理*

1.四个工作区&关系

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

img

1.1. Workspace: 工作区,平时开发时存放代码的地方

1.2. Index/Stage: 暂存区,用于存放临时改动,保存即将提交的文件列表信息

1.3. Repository: 仓库区(本地仓库) ,安全存放数据的位置,这里有你提交的所有版本的数据,其中HEAD指向最新放入仓库的版本

1.4. Remote: 远程仓库,即托管代码的服务器(GitHub/Gitee)

本地三区域

img

  • Directory:使用 Git 管理的一个目录,也就是一个仓库,包含我们的工作空间和 Git 的管 理空间。
  • WorkSpace:需要通过 Git 进行版本控制的目录和文件,这些目录和文件组成了工作空间。
  • .git:存放 Git 管理信息的目录,初始化仓库的时候自动创建。
  • Index/Stage:暂存区,或者叫待提交更新区,在提交进入 repo 之前,我们可以把所有的 更新放在暂存区。
  • Local Repo:本地仓库,一个存放在本地的版本库;HEAD 只是当前的开发分支(branch)。
  • Stash:隐藏,是一个工作状态保存栈,用于保存/恢复 WorkSpace 中的临时状态。

2.工作流程

  1. 在工作目录中添加、修改文件;
  2. 将需要进行版本管理的文件放入暂存区域;
  3. 将暂存区域的文件提交到 git 本地仓库。 因此,git 管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

img

五.仓库创建

1. 创建工作目录

  1. 工作目录(WorkSpace)一般就是你希望 Git 帮助你管理的文件夹,可以是你项目的目录, 也可以是一个空目录,建议不要有中文
  2. 6 个命令img

2. 本地创建/远程克隆

$ git init #在所在目录作为本地仓库初始化,创建.git文件夹
$ git clone [url] #将url所指向的远程git仓库克隆到本地当前目录

六.文件管理

1. 文件的四种状态

● 版本控制就是对文件的版本控制,在 Git 管理中,文件被统一管理,有四个状态

  1. Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到 git 库, 不参与版本控制. 通过 git add 状态变为 Staged
  2. Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这 种类型的文件有两种处理方式, 如果它被修改, 变为 Modified. 如果使用 git rm 移出版本库, 则成为 Untracked
  3. Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这种文件有两个去处, 通过 git add 可进入暂存 staged 状态, 使用 git checkout 则丢弃修改过, 返回到 unmodify 状态,这个 git checkout 即从库中取出文件, 覆盖当前修改
  4. \4. Staged: 暂存状态. 执行 git commit 则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为 Unmodify 状态. 执行 git reset HEAD filename 取消暂存, 文件状态为Modified
$ git status [filename] #查看指定文件状态
$ git add . # 将指定文件加入暂存区
$ git commit -m "message" # 提交暂存区文件到本地仓库 附加提交信息
$ git push  # 推送到远程仓库

2. 忽略文件

如果不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等, 在主目录 下建立".gitignore"文件(默认就有),此文件有如下规则:

  1. 忽略文件中的空行或以井号(#)开始的行
  2. 支持 Linux 通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符, 方括号([abc])代表可选字符范围,大括号({string1,string2,…})代表可选的字符串等。
  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。
  4. 如果名称的最前面是一个路径分隔符(/),表示忽略 .gitignore 文件所在的目录,不包 括其任何子目录 中的 dir 目录
  5. 如果名称的最后面是一个路径分隔符(/),忽略 .gitignore 文件所在的目录和所有子目 录的 dir

img

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

七.分支管理

https://gitee.com/all-about-git

注意事项和细节说明

  1. 如果同一文件在合并分支时都被修改了则会引起冲突, 修改冲突文件后重新提交(说明: 这时要决定保留哪个分支代码)
  2. Master 主分支应该非常稳定,用来发布新版本,一般情况下不要在上面工作,工作一般 在新建的分支(比如 dev、v1.0、v2.0)上工作
  3. 分支代码稳定后,可以合并到主分支 Master
  4. 在进行分支合并时, 最好是各分支都已经处于 Committed 的状态, 这样可以减小处理合 并冲突的难度. 5. Push 操作, 是 Push 你已经 Committed 的代码, 如果你修改了一个文件, 但是你没有执行 Commit ,那么你 Push 的其实是上次 Committed 的状态
  5. add 、 commit 、push 的操作可以针对单个文件, 也可以针对文件夹(可以看一下 Idea 的 git 操作菜单)
  6. 文件要 Commit 前需要先 Add 到 暂存区 , 以后文件修改了, 就可以直接 Commit
  7. 如果要删除文件, 可以在本地删除该文件, 然后 commit 文件所在文件夹即可, 并重新 push 该分支, 那么在远程仓库, 也会删除对应分支的文件.
  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

vⅤ_Leon

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

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

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

打赏作者

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

抵扣说明:

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

余额充值