git_一款代码历史版本管理工具(了解)
目录
第一部分:本地仓库
一、目标
无,直接从四git安装下载开始 ,来来去去就几条命令。

二、开发实际场景
- 硬盘坏了? 硬盘坏了也不怕,Git 能把你写的东西捞回来。
- 代码改崩了? 改乱了代码,Git 一键回到之前能跑的版本。
- 多人改同一文件? Git 能把两边的修改合并好,不互相覆盖。
- 代码出 bug 了? 代码出问题,Git 能查到是哪个程序员、啥时候改的。
三、常用两种版本控制器方式

3.1 SVN

集中式:淘汰 git很强大
3.2 Git
Git 是 Linus Torvalds 为管理 Linux 内核开发而开发的开源分布式版本控制系统,无需中心服务器,本地每台电脑上存储一致。理论上两个程序员互传就可以了但我们为了不用总在线等对方/防止 “单点丢失”/方便多人协作总不能让每个人都和其他人互传一般也建立个共享库.

3.3 Git工作流程图
要点:我们只需要知道本地仓库 远程仓库就够了


四、Git安装与常用命令
git最初是为了管理Linux开发的,Git 本身不是 “基于 Linux 开发” 的 —— 它是一个独立的软件,也能在 Windows、Mac 上用。
4.1 Git环境配置
4.1.1 下载安装
下载地址:https://git-scm.com/download

下载完成后可以得到如下安装文件:

双击下载的安装文件来安装 Git。安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明 Git 安装成功。

备注:
Git GUI:Git 提供的图形界面工具
Git Bash:Git 提供的命令行工具
当安装 Git 后首先要做的事情是设置用户名称和 email 地址。这是非常重要的,因为每次 Git 提交都会使用该用户信息
4.1.2 基本配置
1. 右键打开 Git Bash
2. 设置用户信息(一定要配 不配会报错)
git config --global user.name "你自己的名字 #错了再来一遍"
git config --global user.email "你自己的邮箱@xxx.cn,#这个邮箱不要求必须存在的邮箱"
查看配置信息
git config --global user.name
git config --global user.email
4.1.3 为常用指令配置别名(可选)
有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名。
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'

1.打开用户目录,创建 .bashrc 文件

部分 windows 系统不允许用户创建点号开头的文件,可以右键打开 gitBash, 执行 touch ~/.bashrc(也可以直接鼠标手动建立)

~ | 用户的根目录(个人专属根/家目录) |
|
. | 当前( “现在待的文件夹”) |
|
.. | 上一级目录 |
删除上一级目录里的 xxx.txt 文件 |
/ | 系统根目录(所有目录的最顶层,类似 Windows 的 “此电脑”) | cd /:进入系统根目录 |
2. 在.bashrc文件中输入
# 用于输出 git 提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
# 用于输出当前目录所有文件及基本信息
alias ll='ls -al'
3.打开 gitBash,执行 source ~/.bashrc

4. 解决GitBash乱码问题
1.打开gitbash执行
git config --global core.quotepath false
2.${git_home}/etc/bash.bashrc 安装目录文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
4.1.4 获取本地仓库(开始实际操作)
要使用 Git 对我们的代码进行版本控制,首先需要获得本地仓库
1)在电脑的任意位置创建一个空目录(例如 test)作为我们的本地 Git 仓库
2)进入这个目录中,点击右键打开 Git bash 窗口
3)git仓库初始化: git init
4)如果创建成功后可在文件夹下看到隐藏的.git 目录。

4.1.5基础操作指令
Git 工作目录(test01)下对于文件的修改 (增加、删除、更新) 会存在几个状态,这些修改的状态会随着我们执行 Git 的命令而发生变化。

本章节主要讲解如何使用命令来控制这些状态之间的转换:
1.git add (工作区 --> 暂存区)
2.git commit (暂存区 --> 本地仓库)
3. status (文件状态)
4. log (提交记录)

1.文件提交到git创库(add / commit -m"")

2.文件修改(vi)
鼠标右键编辑也可以

3.文件版本回退(reset --hard )


第二次回退版本到第一次 如果失误清屏看不到第二次的id 版本找回

4.添加文件忽略列表


###文件案例练习###
#################### 仓库初始化 ####################
创建目录(git_test01)并在目录下打开 gitbash
略
1.初始化git仓库 # git init
.创建文件 # touch file01.txt
2.加入暂存区 # git add .
3.提交本地仓库,提交记录内容commit 001 # git commit --m 'commit 001'
.日志 # git log
#################### 修改文件并提交 ####################
1.修改文件内容 # vi file01.txt
2.加入暂存区 # git add .
3.提交本地仓库 # git commit --m 'update file01'
.日志 # git log
精简的方式显示提交记录 # git-log
#################### 将最后一次修改还原 ####################
1.日志 # git-log
2.找到倒数第 2 次提交的 commitID # git reflog
3.版本回退 # git reset commitID --hard
五、分支(branch)
查看分支(branch)

切换分支(checkout)

master分支开发:添加并提交了 .gitignore
dev01分支开发:添加一个文件 file02.txt
情况各自分支开发互不影响:master分支没有file02.txt ,dev01分支没有.gitignore

合并分支(merge)
删掉分支影响观察 git branch -d dev02


删除分支(brand/-d-D)

*解决分支冲突
虽然分支开发,但如果两个人 改了同一个文件同一行。master用谁的?


演示:dev分支上修改仓库文件

演示:master分支上修改仓库文件

查看冲突文件

修改冲突文件

合并

开发种分支使用原则与流程


###分支案例练习###
#################### 创建并切换到 dev01 分支,在 dev01 分支提交
[master] 创建分支 dev01
git branch dev01
[master] 切换到 dev01
git checkout dev01
[dev01] 创建文件 file02.txt
略
[dev01] 将修改加入暂存区并提交到仓库,提交记录内容为:add file02 on dev
git add .git commit -m 'add file02 on dev'
[dev01] 以精简的方式显示提交记录
git-log#################### 切换到 master 分支,将 dev01 合并到 master 分支
[dev01] 切换到 master 分支
git checkout master
[master] 合并 dev01 到 master 分支
git merge dev01
[master] 以精简的方式显示提交记录
git-log
[master] 查看文件变化 (目录下也出现了 file02.txt)
略#################### 删除 dev01 分支
[master] 删除 dev01 分支
git branch -d dev01
[master] 以精简的方式显示提交记录
git-log
分支合并快进模式说明(git智能的地方)
为git log命令创建一个别名git-log,并将一长串复杂的日志格式化命令绑定到这个别名上。
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'

dev分支


提交前dev状态 dev master都具备的。 dev与master只差了一个提交 dev全
master做的修改dev都有了 dev比master多一个
这个时候把dev合并master上面 没必要太麻烦 用一条命令合并(我也不给你合并 我就把master放到提交位置 在同一个地方 master和dev一模一样)
master合并

第二部分远程仓库

六、常用的托管服务(远程仓库)
- GitHub:面向开源及私有软件项目的托管平台,仅支持 Git 版本库格式,地址https://github.com/。
- 码云(Gitee):国内代码托管平台,服务器在国内,速度比 GitHub 快,地址https://gitee.com/。
- GitLab:开源仓库管理系统项目,基于 Git 搭建 web 服务,常用于企业、学校内部搭建 Git 私服,地址https://about.gitlab.com/。
6.1 注册码云
要想使用码云远程仓库,需要注册账号(地址:https://gitee.com/signup)

6.2 创建远程仓库

6.4 配置SSH公钥
- 生成 SSH 公钥
- ssh-keygen -t rsa
- 不断回车
- 如果公钥已经存在,则自动覆盖
- #密钥备份 mv ~/.ssh ~/.ssh.bark2
- Gitee 设置账户公钥
- 查看公钥
- cat ~/.ssh/id_rsa.pub
- 查看公钥

远程仓库复制本地仓库公钥

- 验证是否配置成功
- ssh -T git@gitee.com

6.5操作远程仓库
6.5.1 添加远程仓库

6.5.2 推送到远程仓库


| 正常推送 | git push 远端名称 本地分支名:远端分支名 | 如 git push origin master:master |
| 本地与远端分支 名相同 | git push 远端名称 分支名 | 如 git push origin master |
| 推送并建立分支关联 | git push --set-upstream 远端名称 分支名 | 如 git push --set-upstream origin master,后续可直接用 git push 推送 |
| 分支已关联 | git push | 直接推送当前分支到已关联的远端分支 |
| 强制覆盖远端分支 | git push -f 远端名称 分支名 | 慎用,会强制覆盖远端分支内容 |

6.5.3 本地分支与远程分支关联关系
查看关联关系我们可以用 git branch -vv


6.5.4 从远程仓库拉取数据(clone)
如果已经有一个远端仓库,我们可以直接 clone 到本地。
- 命令:
git clone <仓库路径> [本地目录]- 本地目录可以省略,会自动生成一个目录




克隆对于同一个仓库只克隆一次到本地,后续操作。A提交推到仓库,B把提交更新到本地
就不需要克隆整个大文件。我们对于新增加的提交进行同步就可以了。
6.5.5 抓取和拉取
远程分支和本地的分支一样,我们可以进行 merge 操作,只是需要先把远端仓库里的更新都下载到本地,再进行操作。
- 抓取 命令:
git fetch [remote name] [branch name]- 抓取指令就是将仓库里的更新都抓取到本地,不会进行合并
- 如果不指定远端名称和分支名,则抓取所有分支。
- 拉取 命令:
git pull [remote name] [branch name]- 拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于
fetch+merge - 如果不指定远端名称和分支名,则抓取所有并更新当前分支。
- 拉取指令就是将远端仓库的修改拉到本地并自动进行合并,等同于
1. 抓取(git fetch)
- 操作逻辑:只会下载远端仓库的更新到本地,但不会自动合并到本地分支。相当于 “把远端的新内容‘拿’到本地,但先不与本地代码合并”。
- 使用场景:如果你想先查看远端更新了什么内容,再决定是否合并,就用
git fetch。例如:团队协作时,你想先看看同事提交了哪些代码,再判断是否要合并到自己的分支,避免直接合并导致冲突或代码逻辑问题。
2. 拉取(git pull)
- 操作逻辑:等同于
git fetch + git merge,即先下载远端更新,再自动合并到本地当前分支。 - 使用场景:如果你确定远端的更新可以直接合并到本地,且不需要先查看细节,就用
git pull。例如:你自己的分支只有你在开发,远端的更新是你之前提交的,想快速把远端最新内容拉到本地继续开发,就可以用git pull。
总结:用哪个?
- 想先审查远端更新,再手动合并 → 用
git fetch。 - 想直接把远端更新合并到本地 → 用
git pull(更快捷)。
日常开发中,git pull 使用频率更高(因为它一步完成 “下载 + 合并”);但在多人协作、对代码合并比较谨慎的场景下,git fetch 会更稳妥。
。。。。。不往后看了,暂时不需要,也没多少内容了。
更多推荐
所有评论(0)