- Git 是一个分布式版本控制系统,每个客户端都是一个完整的版本库。
#Git 简述
Git 背景
- Git是创建之初是为了辅助Linux内核使用的。
- Git是创建之初是为了辅助Linux内核使用的。
Git 简介
- Git是一个分布式版本控制软件,主要用于版本迭代,每一个客户端都是包含整个版本控制过程中的完整镜像。
- Git是一个分布式版本控制软件,主要用于版本迭代,每一个客户端都是包含整个版本控制过程中的完整镜像。
Linux 基础命令
1 | 基础命令 |
#Git 配置
git config --local -l
- 查看仓库配置 【优先级最高】
- 查看仓库配置 【优先级最高】
git config --global -l
- 查看用户配置 【优先级次之】
- 查看用户配置 【优先级次之】
git config --system -l
- 查看系统配置 【优先级最低】
- 查看系统配置 【优先级最低】
git config -l
- 查看所有的配置信息,依次是系统级别、用户级别、仓库级别
- 查看所有的配置信息,依次是系统级别、用户级别、仓库级别
Git对配置文件使用
- 配置文件的权重是:仓库 > 全局 > 系统。
- 配置文件的查找是:系统 > 全局 > 仓库。
git config 的配置文件路径
- 仓库配置
- 路径:当前路径
- 用户配置(全局)
- 路径:
C:\Users\username\gitconfig
- 路径:
- 系统配置
- 路径:
Git安装目录\etc\gitconfig
- 路径:
- 仓库配置
git config 常用配置
编辑配置文件
git config --local -e
编辑仓库级别配置文件git config --global -e
编辑用户级别配置文件git config --system -e
编辑系统级别配置文件
配置全局的用户名和邮箱
git config [--global] user.name "[name]"
git config [--global] user.email "[email address]"
关于配置项的使用(默认都是在local配置中)
- 增加配置项
git config [--local|--global|--system] --add section.key value
- 获取配置项
git config [--local|--global|--system] --get section.key
- 删除配置项
git config [--local|--global|--system] --unset section.key
- 增加配置项
#Git 的工作流程
工作区:就是你在电脑里能看到的目录。
暂存区:英文叫stage或index。一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
创建本地仓库
git init [project-name]
git clone [url]
将需要进行版本控制的文件添加到暂存区
git add .
将暂存区中的文件提交到本地仓库
git commit -m [message]
将本地仓库的文件提交到远程
git push [remote] [branch]
#Git 工作原理
Git 工作区域
- 本地工作区域
- Workspace:工作区
- 需要进行版本控制的区域
- Index/Stage:暂存区
- 用于临时存放工作区中的改动,只是一个文件。
- Repository:仓库区
- 本地仓库,保存提交文件的所有版本信息。其中Head指向最新放入的仓库版本。
- Workspace:工作区
- 中心服务器
- Remote:远程仓库
- 托管代码的服务器,主要进行数据版本控制和多人协同开发。
- 托管代码的服务器,主要进行数据版本控制和多人协同开发。
- Remote:远程仓库
- 本地工作区域
Git 文件状态
- 已修改(modified)
- 已暂存(staged)
- 已提交(committed)
Git 的key-value的数据库
- git数据库存储文件时,只关心文件整体内容,不关心单个文件内容是否改变。
#Git 使用
Git 本地仓库搭建
- 创建本地仓库
git init
初始化Git仓库git add .
添加所有文件到暂存区git status [filename]
查看文件状态git commit -m "message"
提交暂存区内容到本地仓库
- 克隆远程仓库
- git push 提交本体仓库内容到远程服务器
- git push 提交本体仓库内容到远程服务器
- 创建本地仓库
.gitignore文件的使用
- 注释:
#
用于注释。 - 通配符:
*
代表任意多个;?
代表一个字符;!
表示不被忽略。 folder/
: 该目录下的所有文件,不包括该目录下的子目录。/folder
: 该目录下面的所有文件,默认文件和目录都忽略。- 注意:gitignore文件只影响新的且未被跟踪的文件
- 也即是说:原来被跟踪的文件,添加到gitignore文件中后,远程仓库不会删除。
- 解决办法:
git rm -r --cached <folder>
+git commit
+git push
- 解决办法:
- 也即是说:原来被跟踪的文件,添加到gitignore文件中后,远程仓库不会删除。
- 注释:
.gitkeep文件
- 使 Git 保留一个空文件夹
- 使 Git 保留一个空文件夹
创建SSH密钥
ssh-keygen -t rsa -C '[email protected]'
- 创建的公私钥对默认位于:
C:\Users\username\.ssh
- 创建的公私钥对默认位于:
#Git 分支操作
Git分支基础操作:
- 创建:
- 创建仓库和分支:
git init -b <branch_name>
- 创建分支:
git branch <branch_name>
- 创建并切换分支:
git checkout -b <branch_name>
- 创建仓库和分支:
- 查看:
git branch
(仓库没有提交内容的话会看不见分支me) - 切换:
git checkout <branch_name>
- 删除:
git <branch_name>
(-d是删除已经合并过的, -D是删除没有合并过的) - 重命名:
git branch -m <old_name> <new_name>
git branch -m new-name
- 合并:
git merge <target_branch_name>
- 创建:
Git分支常用操作
git add .
和git add -A
区别git add .
会把当前目录及子孙目录里的变动都加到暂存区git add -A
添加当前目录下的所有文件到暂存区,包括已修改的文件
- 在本地仓库中建立一个与远程仓库的别名,以便之后提交代码而不是每次都要输入远程仓库地址。
git remote add homepage [email protected]:shuguang2000/homepage.git
- 确认已添加远程仓库别名
git remote -v
- gh-pages分支和main分支推送到远程仓库,推送完成会自动添加关联映射
git push -u homepage gh-pages
git push -u homepage main
- 将本地分支gh-pages与远程homepage仓库分支关联
- 关联目的是在执行git pull, git push操作时就不需要指定对应的远程分支,你只要没有显示指定,git pull的时候,就会提示你。
git branch --set-upstream-to=homepage/gh-pages gh-pages
- 删除建立的关联关系
git branch --unset-upstream
- 强行拉取不同项目,解决不通项目不能合并问题,拉取完后再推送
git pull homepage main --allow-unrelated-histories
- 查看本地分支与远程分支的映射关系
git branch -vv
- 查看所有分支,包括本地和远程分支
git branch -a
- 拉取远程仓库gh-pages的变化,并与本地分支gh-pages合并
git pull
- 比较本地两个分支的文件差异
git diff gh-pages
- git push命令的–force或-f 强制推送
git push --force homepage main:main
- 将当前分支更改推送到远程仓库中的main分支
git push homepage main
- 本地main发布更新到远程仓库gh-pages分支
git push homepage main:gh-pages
#关于Git在VScode中的使用
配置默认终端配置为:
Git Bash
- 在xxx.code-workspace文件中添加如下代码:
1
2
3
4
5"settings": {
"terminal.integrated.defaultProfile.linux": "bash",
"terminal.integrated.defaultProfile.osx": "bash",
"terminal.integrated.defaultProfile.windows": "Git Bash", // 如果你在 Windows 上使用 Git Bash
},- 在xxx.code-workspace文件中添加如下代码:
使用快捷键 Ctrl+` 打开终端窗口
安装VScode插件GitLens