Git 初始化 git 安装教程:https://blog.csdn.net/qq_45677671/article/details/114592426
git 初始化意义:
- 我们必须要把我们电脑中的某一个文件夹授权给
git
git
才能对这个文件夹里面的内容进行各种操作- 而
git init
就是在进行这个授权的操作 git
不光管理这一个文件夹,包括所有的子文件夹和子文件都会被管理- 只有当一个文件夹被 git 管理以后,我们才可以使用 git 的功能去做版本管理 1 2 3 4 5 git 初始化流程:git 初始化可以将一个文件夹被 git 管理
- 点进文件夹去,再点鼠标右键,点开
Git Bash Here
- 输入 git 初始化的指令:
git init
- 然后文件夹内会多一个
.git
的文件夹(这个文件夹是一个隐藏文件夹) 1 2 3 示图:
管理空文件夹
- git 本来是不管理空文件夹的,但是也有一些办法让 git 能管理一个空文件夹
- 在空文件夹中新建文件:
.gitkeep
- 这个文件没有实际意义,这是为了占位,让空文件夹能被管理的标识,以后要在文件夹中写文件的时候,这个文件可以被删除 1 2 3 让某些文件或者文件夹被忽略管理 在和.git 同级的位置,新建文件:.gitignore,在这个文件中书写要忽略的内容:
- 直接写文件名,代表要忽略的是哪个文件
- 写文件夹路径,表示要忽略的是哪个文件夹
- *.后缀,表示要忽略的是所有后缀为指定后缀的文件 1 2 3 当一个文件夹被 git 管理了以后,git 就会对当前文件夹进行 “分区” 会分为三个区域:工作区、暂存区、历史区 查看当前分区 git 管理的文件的状态:git status Git 工作区 git status 工作区:我们书写的源码就在工作区里面,文件路径为红色
➜ git status On branch cs/isiliu 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”) 1 2 3 4 5 6 7 8 放弃修改已保存的文件 当我们写代码的时候,文件写出一堆 bug,不想要了,没有使用 git add 添加到暂存区,就可以直接使用以下命令丢弃
放弃修改已保存的文件
丢弃工作区文件的修改:
git checkout – 文件路径
丢弃工作区所有的修改:
git checkout – . 1 2 3 4 5 单独存储已保存的文件 当我们代码写到一半的时候,需要切换分支,如果你不 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Git 暂存区 git add 暂存区:把我们想要存储的内容放在暂存区,文件路径为绿色
➜ git add . #将工作区的文件添加到暂存区 ➜ git status On branch cs/isiliu Changes to be committed: (use “git restore –staged …” to unstage) modified: src/App.vue # 在暂存区的文件路径将为绿色 1 2 3 4 5 6 git add :用来跟踪新文件并添加到暂存区 或者 将已跟踪的文件添加到暂存区
添加文件到暂存区 添加文件到暂存区
- 添加一个文件到暂存区: git add 文件路径
例如:
git add src/pages/data_access/DataAccessListPage.tsx
- 添加整个文件夹到暂存区(空文件夹无效): git add 文件夹路径/
例如:
git add src/pages/data_access/
- 添加当前文件夹中所有文件和文件夹都到暂存区:
可以提交 新建的文件 和 修改的文件,但不处理删除的文件
git add .
可以提交 修改的文件 和 删除的文件,但不处理新建的文件
git add -u
全写:git add –update
提交未跟踪、修改和删除文件
git add -A
全写:git add –all
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 回退暂存区的文件 回退暂存区的文件:
-
将某个文件从暂存区变为源文件: git reset HEAD – 文件路径
-
将整个文件夹从暂存区变为源文件 git reset HEAD – 文件夹路径
-
将所有文件从暂存区变为源文件: git reset HEAD – . 1 2 3 4 5 6 7 8 Git 历史区 暂存区:只是帮我们暂时存放内容,我们删除了还是会丢的 要想帮我们保存下来,那么还需要把暂存区的内容提交到历史区 git 的历史区,就是把我们暂存区里面的文件变成一个历史版本 当一些文件形成一个版本的时候,就会被一直记录下来了 向历史区里面添加内容的时候,必须保证 暂存区 有内容 因为历史区就是把暂存区里面的内容收录进去 git commit 历史区:把暂存区里面的内容拿出来形成一个历史版本
➜ git commit -m “feat: 完成某页面的开发” # 将暂存区的文件发版 ➜ git status # 再次查看,此时工作区和暂存区就干净了 On branch cs/isiliu nothing to commit, working tree clean 1 2 3 4 commit 关键字推荐命名规范:
- feat: 新功能
- fix: bug 修复
- chore: 日常改动, 如一些优化什么的 1 2 3 提交版本命令详解 提交文件,形成版本
- 提交文件并添加说明 git commit -m “说明性文字”
一定要写一个简单的说明,方便后续查找版本
因为当我们的历史版本多了以后,我们自己也记不住哪个版本做了哪些修改
- 提交跟踪过的文件(可省略
git add
),不添加文字说明
能帮你省一步 git add ,但也只是对修改和删除文件有效, 新文件还是要 git add,不然就是 untracked(未跟踪状态)
git commit -a
相当于:
git add .
git commit
- 提交跟踪过的文件(可省略
git add
),并添加文字说明
能帮你省一步 git add ,但也只是对修改和删除文件有效, 新文件还是要 git add,不然就是 untracked(未跟踪状态)
git commit -am “xxx”
相当于:
git add .
git commit -m “xxx”
- 查看帮助,还有许多参数有其他效果 git commit –help 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 避免重复提交版本 你不想每一次都产生一个新的 commit,而是每一次 commit 都修改前一次提交,就可以使用这个 这样做的好处是,等到你的 feature 分支提测时,就只有 1 个干净的 commit,没有乱七八糟的提交历史,你只要把这 1 个 commit 合并到 master 里就好了。
补上新修改的文件
git add .
和前一次提交的代码合并成 1 个提交
git commit –amend
和前一次提交的代码合并成 1 个提交,并添加新的注释
git commit –amend -m “这里填写提交的注释” 1 2 3 4 5 6 回退暂存区和工作区的文件
相当于回退到当前的 commit 的版本,会清空工作区和暂存区的文件
git reset –hard HEAD 1 2 将分支回退到某个指定版本 当我们提交的版本出 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 号,选择回退到相应的版本
-
回退到第一次提交的版本 git reset –hard 4917f349f3b4bb802ebf4c91d96d6b4cbbd5db34
-
回退到第二次提交的版本 git reset –hard 9f9d45f6a9c0fbbc11f2b1dab161edfa9f2ff68b
-
其他命令
查看 git reset 帮助
git reset -h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 将分支回退到倒数几个版本 回退版本快捷操作:
一般使用 hard,有其他需要可以使用 mixed 或 soft
hard:删除工作空间改动代码,撤销 commit,撤销 git add .
示例:将版本库回退 3 个版本
git reset –hard HEAD~3 # 数字大小代表的是上几个版本 git reset –hard HEAD^^^ # ^号数量代表的是上几个版本
mixed:不删除工作空间改动代码,撤销 commit,并且撤销 git add . 操作
示例:将版本库软回退 1 个版本
git reset –mixed HEAD^ # ^号数量代表的是上几个版本 git reset HEAD^ # ^号数量代表的是上几个版本 git reset HEAD~1 # 数字大小代表的是上几个版本
soft:不删除工作空间改动代码,撤销 commit,不撤销 git add .
示例:将版本库软回退 2 个版本
git reset –soft HEAD~2 # 数字大小代表的是上几个版本 git reset –soft HEAD^^ # ^号数量代表的是上几个版本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 只回退单个文件到指定版本 还原某个特定的文件到之前的版本 第一步: git log 文件路径 在命令行中输入 git log src/main/main.c 得到该文件的 commit 历史。
第二步: 复制需要回退版本的 hash 在此假设我们回退到 d98a0f565804ba639ba46d6e4295d4f787ff2949 ,则复制该序列即可
第三步:git checkout 文件对应的版本 文件路径。 如:在此即为命令行中输入 git checkout d98a0f565804ba639ba46d6e4295d4f787ff2949 src/main/main.c
第四步: 重新提交下版本 git commit -m 如: git commit -m “revert to previous version” 1 2 3 4 5 6 7 8 9 10 11 恢复被删除的文件或文件夹
查看被删除的文件路径
- git status
找回被删除的文件
- git reset HEAD 被删除的文件或文件夹
恢复被删除的文件
- git checkout 被删除的文件或文件夹 1 2 3 4 5 6 7 8 合并多个 commit 信息 我们开发需求的时候,开发分支可能会有多个 commit 信息 等合并到主分支 master 的时候,会造成 commit 累赘 下面这个命令就可以合并分支代码,清空要合并的分支里面的所有 commit 信息 有改动的代码文件会重新回到暂存区,重新 commit 即可
- git merge 分支名 –squash
- git commit -m ‘在这里添加新的版本信息’ 1 2 Git 添加仓库 我们先要给 git 添加一个上传的地址 我们还是来到我们的项目文件夹 使用 git remote add origin 仓库地址 来添加
在项目文件夹下打开 git base
添加仓库地址
git remote add origin https://github.com/guoxiang910223/ceshi1913.git 1 2 3
- remote:远程的意思
- add:添加的意思
- origin:是一个变量名(就是指代后面一长串的地址) 1 2 3 git remote -v:查看是否关联上了远程仓库 git remote -v orgin github.com/guoxiang910223/ceshi1913.git(fetch) orgin github.com/guoxiang910223/ceshi1913.git(push) 1 2 3 Git 克隆仓库 git 克隆是指把远程仓库里面的内容克隆一份到本地 。可以克隆别人的 公开 的仓库,也可以克隆自己的仓库。克隆别人的仓库,我们只能拿下来用,修改后不能从新上传。克隆自己的仓库,我们修改后还可以再次上传更新
我们先找到一个别人的仓库,或者自己的仓库(这里以 jQuery 的仓库为例)
复制好地址以后,选择一个我们要存放内容的文件夹(我这里以桌面为例) 直接在想存放内容的位置打开 git base 输入克隆指令 git clone 仓库地址 例如:git clone https://github.com/jquery/jquery.git 你就会发现你的文件夹里面多了一个叫做 jquery 的文件夹 里面就是人家仓库的所有内容 长期储存密码: git config credential.helper store 1 查看配置: git config –list 1 Git pull 和 push 上传要保证 历史区 里面有内容,会把所有的内容上传到远端
上传指令:
指定远程仓库名和分支名(第一次)
git push -u origin master
origin 指定推送的地址
master 是上传到远程的 master 分支
不指定远程仓库名和分支名(第二次)
git push 1 2 3 4 5 6 7 -u 是为了记录一下用户名和密码,下次上传的时候就不需要再写了
第一次上传要指定远程仓库名和分支名
第二次上传的时候,因为有刚才的记录,就不需要再 写 origin 和 master 了, 会默认传递到 origin 这个地址的 master 分支上
如果你要传递到别的分支上的时候,要再次指定远程仓库名和分支名
这个时候本地的文件夹就真的可以删除了, 因为远程有一份我们的内容,本地的删除了,可以直接把远程的拉回来就行
不管是你克隆下来的仓库还是别的方式弄得本地仓库,当人家的代码更新以后,你想获得最新的代码。我们不需要从新克隆。只要拉取一次代码就可以了
下拉指令:
将本地代码和远程代码同步:(在本地仓库使用命令)
git pull 1 2 这样一来,你本地的仓库就可远程的仓库同步了 Git 分支命令 一个大项目,会分很多人开发,每个人一个功能,这时候,每个功能作为一个分支,主分支只有目录结构。当所有人将自己负责的功能开发完成的时候,再将所有分支合并到主分支上,形成一个完整的项目。
常用分支命令
查看本地分支:
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 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 常见分支命名 master:主分支,永远只存储一个可以稳定运行的版本,不能再这个分支上直接开发 develop: 主要开发分支,主要用于所用功能开发的代码合并,记录一个个的完整版本 包含测试版本和稳定版本 不要再这个分支上进行开发 feature-xxx:功能开发分支,从 develop 创建的分支 主要用作某一个功能的开发 以自己功能来命名就行,例如 feature-login / feature-list 开发完毕后合并到 develop 分支上 feature-xxx-fix: 某一分支出现 bug 以后,在当前分支下开启一个 fix 分支 解决完 bug 以后,合并到当前功能分支上 如果是功能分支已经合并之后发现 bug 可以直接在 develop 上开启分支 修复完成之后合并到 develop 分支上 hotfix-xxx: 用于紧急 bug 修复 直接在 master 分支上开启 修复完成之后合并回 master Git 分支冲突 两个人同时操作同一个分支,提交的时候会有先后顺序,先提交的人正常提交了,后一个人提交的时候会产生冲突。因为 git 规定,每次提交必须是在原来的版本基础上,但是第二个人在提交的时候,在远程已经有了第二个版本,所以第二个人相当于从第一个版本向第三个版本提交。如下图:
冲突解决:https://blog.csdn.net/qq_45677671/article/details/122574511 记得养成一个良好 git 发布流程的习惯
分支合并发布流程:
git add . # 将所有新增、修改或删除的文件添加到暂存区 git commit -m “版本发布” # 将暂存区的文件发版 git status # 查看是否还有文件没有发布上去 git checkout test # 切换到要合并的分支 git pull # 在 test 分支上拉取最新代码,避免冲突 git merge dev # 在 test 分支上合并 dev 分支上的代码 git push # 上传 test 分支代码 1 2 3 4 5 6 7 8 关注我不迷路,我替你们把坑都踩平了 Git config 设置 git config 命令用于获取并设置存储库或全局选项,这些变量可以控制 Git 的外观和操作的各个方面
查看 git 配置信息
|
|
查看 git 用户名
|
|
查看邮箱配置
|
|
全局配置用户名
|
|
全局配置邮箱
|
|
删除全局配置用户名和邮箱
|
|
对于 git 来说,配置文件的权重是「仓库 > 全局 > 系统」,即 「local > global > system」
添加配置项:–add 格式:git config [-local | -global | -system] add section.key value(默认是添加在 local 配置中) git config –add sit.name Jack 1 删除配置项:–unset 格式:git config [-local | -global | -system] -unset section.key git config –local –unset user.name 1 配置快捷键:alias
使用 git st 代替 git status
git config –global alias.st status
用 last 表示查看最后一次提交
git config –global alias.last ’log -1 HEAD' 1 2 3 4 5 Git 设置当前分支为默认 push 分支 git config –global push.default “current”