目录
一、Git 初始化
二、Git 发布流程
2.1、提交改动的文件
三、Git 仓库管理
3.1、添加仓库
3.2、克隆仓库
3.3、推送下拉
四、Git 分支命令
五、Git 常规配置
转发自:【Git】基础操作教程(开发必知)_git 初始化文件夹_一颗不甘坠落的流星的博客-CSDN博客
git 安装教程:【Git】安装教程_一颗不甘坠落的流星的博客-CSDN博客
git 初始化意义:
1. 我们必须要把我们电脑中的某一个文件夹授权给 `git`
2. `git` 才能对这个文件夹里面的内容进行各种操作
3. 而 `git init` 就是在进行这个授权的操作
4. `git` 不光管理这一个文件夹,包括所有的子文件夹和子文件都会被管理
5. 只有当一个文件夹被 git 管理以后,我们才可以使用 git 的功能去做版本管理
git
管理1. 点进文件夹去,再点鼠标右键,点开 `Git Bash Here`
2. 输入 git 初始化的指令:`git init`
3. 然后文件夹内会多一个 `.git` 的文件夹(这个文件夹是一个隐藏文件夹)
管理空文件夹
1. git 本来是不管理空文件夹的,但是也有一些办法让git能管理一个空文件夹
2. 在空文件夹中新建文件:`.gitkeep`
3. 这个文件没有实际意义,这是为了占位,让空文件夹能被管理的标识,以后要在文件夹中写文件的时候,这个文件可以被删除
.git
同级的位置,新建文件:.gitignore
,在这个文件中书写要忽略的内容:1. 直接写文件名,代表要忽略的是哪个文件
2. 写文件夹路径,表示要忽略的是哪个文件夹
3. *.后缀,表示要忽略的是所有后缀为指定后缀的文件
- 当一个文件夹被
git
管理了以后,git
就会对当前文件夹进行 “分区”- 会分为三个区域:工作区、暂存区、历史区
- 查看当前分区git管理的文件的状态:
git status
git status
:可以用来查看文件所在的状态1. 工作区:我们书写的源码就在工作区里面,文件路径为红色
2. 暂存区:把我们想要存储的内容放在暂存区,文件路径为绿色
3. 历史区:把暂存区里面的内容拿出来形成一个历史版本,这时候就查看不到文件状态了
# 当修改文件后保存,然后status查看状态,就会提示修改文件的路径,这时文件处于工作区状态
➜ git status
On branch cs/liuxing
Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git restore ..." to discard changes in working directory)
modified: src/App.vue # 在工作区的文件路径将为红色
no changes added to commit (use "git add" and/or "git commit -a")
# 当我们通过 add 将工作区的文件添加到暂存区后,然后status查看状态,这时文件处于暂存区状态
➜ git add . # 用来跟踪新文件并添加到暂存区 或者 将已跟踪的文件添加到暂存区
➜ git status
On branch cs/liuxing
Changes to be committed:
(use "git restore --staged ..." to unstage)
modified: src/App.vue # 在暂存区的文件路径将为绿色
# 当我们通过 add 将工作区的文件添加到暂存区后,然后status查看状态,这时文件处于暂存区状态
➜ git commit -m "feat: 完成某页面的开发" # 将暂存区的文件发版
➜ git status # 再次查看,此时工作区和暂存区就干净了
On branch cs/liuxing
nothing to commit, working tree clean
- 当我们代码写到一半的时候,需要切换分支,如果你不commit提交,切换的时候就会把有改动代码,转移到新分支上去,这样就会出问题。
- 所以就需要不commit提交就能把代码保存下来的方式,那就是 git stash
- stash是本地的,不会通过git push命令上传到git server上
# 保存未commit的修改
git stash
# 保存修改加提示信息
git stash save "说明性文字"
# 取出缓存的工作目录
git stash pop
# 拷出缓存的工作目录
git stash apply stash@{0}
# 查看现有的stash
git stash list
# 移除现有的stash
git stash drop
# 移除所有的stash
git stash clear
当我们在工作区已经将代码写完了,这时候就要将代码改动提交暂存区
1. 添加一个文件到暂存区:
git add 文件路径
# 例如:
# git add src/pages/data_access/DataAccessListPage.tsx
2. 添加整个文件夹到暂存区(空文件夹无效):
git add 文件夹路径/
# 例如:
# git add src/pages/data_access/
3. 添加当前文件夹中所有文件和文件夹都到暂存区:
# 可以提交 新建的文件 和 修改的文件,但不处理删除的文件
git add .
# 可以提交 修改的文件 和 删除的文件,但不处理新建的文件
git add -u
# 全写:git add --update
# 提交未跟踪、修改和删除文件
git add -A
# 全写:git add --all
- 暂存区:只是帮我们暂时存放内容,我们删除了还是会丢的
- 要想帮我们保存下来,那么还需要把暂存区的内容提交到历史区
- git 的历史区,就是把我们暂存区里面的文件变成一个历史版本
- 当一些文件形成一个版本的时候,就会被一直记录下来了
- 向历史区里面添加内容的时候,必须保证 暂存区 有内容
- 因为历史区就是把暂存区里面的内容收录进去
1. 提交文件并添加说明
git commit -m "说明性文字"
# 一定要写一个简单的说明,方便后续查找版本
# 因为当我们的历史版本多了以后,我们自己也记不住哪个版本做了哪些修改
2. 提交跟踪过的文件(可省略`git add`),不添加文字说明
# 能帮你省一步 git add ,但也只是对修改和删除文件有效, 新文件还是要 git add,不然就是 untracked(未跟踪状态)
git commit -a
# 相当于:
# git add .
# git commit
3. 提交跟踪过的文件(可省略`git add`),并添加文字说明
# 能帮你省一步 git add ,但也只是对修改和删除文件有效, 新文件还是要 git add,不然就是 untracked(未跟踪状态)
git commit -am "xxx"
# 相当于:
# git add .
# git commit -m "xxx"
4. 查看帮助,还有许多参数有其他效果
git commit --help
5. commit 关键字推荐命名规范:
- feat: 新功能,比如:'feat: 完成登录页面'
- fix: bug修复,比如:'fix: 修复登录页面打不开的问题'
- chore: 日常改动, 比如:'chore: 登录页面标题改为用户登录'
2.2、回退改动的文件
1:
当文件没有使用git add
添加到暂存区,只是Ctrl + S
保存了,就可以直接使用以下命令将代码回退到为改动之前的状态。
2:
当我们已经使用git add
相关命令,将工作区的文件提交到暂存群了,可以通过以下命令将文件回退到工作区,也就是为git add
的状态
1. 将某个文件从暂存区变为源文件:
git reset HEAD -- 文件路径
2. 将整个文件夹从暂存区变为源文件
git reset HEAD -- 文件夹路径
3. 将所有文件从暂存区变为源文件:
git reset HEAD -- .
3:
撤销当前所有改动,包括已经git add
添加到暂存区的文件,会清空工作区和暂存区的文件,相当于回退到当前的commit的版本。
git reset --hard HEAD
4:
当我们提交到历史区的文件,的版本出bug后,为了不影响之前的功能,就需要先回退到之前的版本
# log 查看所有版本消息,-2表示查看最近2次提交的版本,按 Q 键退出信息查看
git log -2
# commit:这一个版本的版本编号
# Author:作者
# Date:本次版本提交时的记录时间
commit 9f9d45f6a9c0fbbc11f2b1dab161edfa9f2ff68b
Author: xingliu
Date: Fri Jan 7 14:10:13 2022 +0800
feat: 最新版
commit 4917f349f3b4bb802ebf4c91d96d6b4cbbd5db34
Author: xingliu
Date: Fri Jan 7 14:08:31 2022 +0800
feat: 第一版
# 根据查看到的版本commit号,选择回退到相应的版本
1. 回退到第一次提交的版本
git reset --hard 4917f349f3b4bb802ebf4c91d96d6b4cbbd5db34
2. 回退到第二次提交的版本
git reset --hard 9f9d45f6a9c0fbbc11f2b1dab161edfa9f2ff68b
3. 其他命令
# 查看 git reset 帮助
git reset -h
git remote add origin
仓库地址 来添加# 在项目文件夹下打开 git base
# 添加仓库地址
git remote add origin https://github.com/guoxiang910223/ceshi1913.git
- remote:远程的意思
- add:添加的意思
- origin:是一个变量名(就是指代后面一长串的地址)
git remote -v
:查看是否关联上了远程仓库 git remote -v
orgin github.com/guoxiang910223/ceshi1913.git(fetch)
orgin github.com/guoxiang910223/ceshi1913.git(push)
git 克隆是指把远程仓库里面的内容克隆一份到本地
。可以克隆别人的 公开 的仓库,也可以克隆自己的仓库。克隆别人的仓库,我们只能拿下来用,修改后不能从新上传。克隆自己的仓库,我们修改后还可以再次上传更新
我们先找到一个别人的仓库,或者自己的仓库(这里以 jQuery 的仓库为例)
git config credential.helper store
查看配置:
git config --list
上传要保证 历史区 里面有内容,会把所有的内容上传到远端
上传指令:
# 指定远程仓库名和分支名(第一次)
git push -u origin master
# origin 指定推送的地址
# master 是上传到远程的 master 分支
# 不指定远程仓库名和分支名(第二次)
git push
# 将本地代码和远程代码同步:(在本地仓库使用命令)
git pull
这样一来,你本地的仓库就可远程的仓库同步了
git 工作开发推送流程:
git add . # 将所有新增、修改或删除的文件添加到暂存区
git commit -m "版本发布" # 将暂存区的文件发版
git status # 查看是否还有文件没有发布上去
git checkout test # 切换到要合并的分支(发测试就切换到测试分支)
git pull # 在 test 测试分支上拉取最新代码,避免冲突
git merge dev # 在 test 测试分支上合并 dev 开发分支上的代码
git push # 上传 test 测试分支代码到仓库
一个大项目,会分很多人开发,每个人一个功能,这时候,每个功能作为一个分支,主分支只有目录结构。当所有人将自己负责的功能开发完成的时候,再将所有分支合并到主分支上,形成一个完整的项目。
# 查看本地分支:
git branch
# 查看远程分支:
git branch -r
# 本地分支重命名:
git branch -m oldName newName
# 删除本地分支:(不能在要删除的分支上操作)
git branch -d 分支名
# 删除远程分支:(不能在要删除的分支上操作)
git push origin -d 分支名
# 推送本地分支到远程,并于远程分支相关联
git push --set-upstream origin 分支名
# 更新远程分支:
git fetch
# 创建分支:
git branch 分支名
### 切换分支:(常用)
git checkout 分支名
### 切换到上个分支:(常用)
git checkout -
### 创建并切换到这个分支:(常用)
git checkout -b 分支名
### 合并分支:(常用)
git merge 被合并的分支 # 要先跳转到要合并其他分支的分支
# 终止合并分支:
git merge --abort
# 显示当前分支与其他分支的差异
git diff --name-status 其他分支名
# 显示当前分支两次提交的差异
git diff --name-status commitID1 commitID2
常见分支命名
develop
创建的分支
feature-login / feature-list
develop
分支上bug
以后,在当前分支下开启一个fix
分支
bug
以后,合并到当前功能分支上 bug
可以直接在 develop
上开启分支develop
分支上bug
修复
master
分支上开启master
git config
命令用于获取并设置存储库或全局选项,这些变量可以控制Git的外观和操作的各个方面
# 查看git配置信息
git config --list
# 查看git用户名
git config user.name
# 查看邮箱配置
git config user.email
# 全局配置用户名
git config --global user.name "nameVal"
# 全局配置邮箱
git config --global user.email "[email protected]"
# 删除全局配置用户名和邮箱
git config --global unset user.name "用户名"
git config --global unset user.email "注册邮箱"
对于git来说,配置文件的权重是
「仓库 > 全局 > 系统」
,即「local > global > system」
git config --add sit.name Jack
git config --local --unset user.name
alias
# 使用 git st 代替 git status
git config --global alias.st status
# 用 last 表示查看最后一次提交
git config --global alias.last 'log -1 HEAD'
git config --global push.default "current"