总结
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
git config -l
命令来查看配置信息
git init
仓库初始化
touch index.html
创建index.html文件
git add index.html
文件加入暂存区
git add -A
将全部文件加入暂存区
git commit -m '注释'
文件提交到本地仓库
ls
查看文件夹下的文件
git ls-file
暂存区中的文件列表
clear
或ctrl + l
清屏
mkdir
创建文件夹
rm test.html
删除工作区中的文件
git rm --cache 文件名
删除暂存区中的文件
git rm -f 文件名
同时删除暂存区和工作区中的文件
git rm 文件夹1 文件夹2 -r --cache
删除暂存区中的文件夹
git rm -r -f 文件夹名(git rm -f -r 文件夹名)
同时删除暂存区和工作区中的文件夹:
cat test.html
查看文件内容
git status
版本状态查看
git log
--查看提交日志
git log --oneline
以一行简化的方式查看
git reset --hard 版本号
进行版本回退
git branch -a
查看所有分支
git fetch
取回所有分支的更新
git branch name
创建分支
git checkout name
切换分支
git merge name1 name2
合并分支
git branch -d name1 name2
删除分支
git checkout -b name
创建并切换分支
git clone
克隆远程仓库
git remote add 别名 远程仓库地址
本地配置远程仓库的地址,并将本地仓库内容推送到远程仓库
git push -u 别名 分支名
(默认是master)-u 关联(长链接), 加上以后,后续提交时可以直接使用 git push
git remote remove 别名
别名可以添加,也可以删除
git remote
该命令是查看远程仓库别名
git push
:将本地仓库的 某个分支 推送到远端仓库的 某个分支
git pull
拉取代码
配置忽略文件
Git中需要创建一个文件【.gitignore
】配置忽略
git commit -m与-am的区别
git commit -m与git commit -am的区别
git stash 的使用
1.作用
这个命令可以将当前的工作区域的代码暂存起来,在需要的时候再恢复使用。
2.使用场景
当在一个分支开发功能开发到一半要进行合并代码或者切换分支操作,这时候就可以把现有工作区域的代码暂存起到git栈,然后进行合并或者切换分支的操作,等操作完后要继续之前未完成的,这时候git stash就派上用场,真的太方便了、
3.常用git stash命令
git stash list
显示保存进度的列表。也就意味着,git stash命令可以多次执行。
git stash
保存当前的工作区与暂存区的状态,把当前的修改的保存到git栈,等以后需要的时候再恢复,git stash 这个命令可以多次使用,每次使用都会新加一个stash@{num} num是编号git stash save '注释'
作⽤等同于git stash
,区别是可以加⼀些注释, 执⾏存储时,添加注释,⽅便查找
git stash save ‘test’git stash pop
默认恢复git栈中最新的一个stash@{num},建议在git栈中只有一条的时候使用,以免混乱,该命令将堆栈中最新保存的内容删除git stash apply
将堆栈中的内容恢复到当前分支下。这个命令不同于 git stash pop。该命令不会将内容从对堆栈中删除,也就是该命令能够将堆栈的内容多次运用到工作目录,适合用与多个分支的场景
git stash apply stash@{$num}git stash drop
从堆栈中移除指定的stash
git stash drop stash@{$num}git stash clear
删除所有缓存的stashgit stash show
显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
Git submodule 子模块的管理和使用
git(gitlab)子模块功能在团队协同开发和生产环境中的应用(git,gitlab,TortoiseGit,CI/CD,Jenkins,docker-compose,分支合并,开发环境,测试环境
git分段拉取代码
git config core.sparsecheckout true
echo ‘day19’ >>.git/info/sparse-checkout
git pull origin master
git 合并的方式
当使用git小黑窗合并的时候 自动弹出 按键i 进行编辑
编辑完 按 esc 退出编辑 然后 按: 输入 wq 保存退出
保存成功
1.1 本地合并分支一
2.1 本地合并分支二
3.1 本地合并分支三 产生冲突
正规合并分支
1.1 和远程分支合并
1.2 和远程分支合并冲突
Git
一、什么是Git?
Git(读音为/gɪt/)是一个开源免费的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目
版本管理,简单来说,就是一个应用程序。
二、Git的作用是什么?
版本控制系统在项目开发中作用重大,主要的功能有以下几点
- 代码备份
- 版本回退
- 协作开发
- 权限控制
三、Git的下载安装
下载地址【https://git-scm.com/】,安装方式与QQ相同,一路执行下一步,中间也可以设置安装路径
检查是否安装成功 鼠标右键->查看是否存在Git Bash
git小黑窗中文字大小设置? ctrl+鼠标滚轮或者最上白边右键单独设置字体字号以及颜色
四、Git的使用
4.1 起始配置
第一次使用git的时候,会要求我们配置用户名和邮箱,用于表示开发者的信息。
配置时的路径随意,在哪里都可以。
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
注意:
命令之间必须添加空格,不能连着写。
用户名不要写成中文,写英文。
引号双引,单引均可。
可以使用
git config -l
命令来查看配置信息git config user.name 查看用户名
git config user.email 查看邮箱
如果操作的时候是小窗口则会看到有:闪动的光标,这时一路回车直到看到END
然后,使用q字母退出配置查看窗口,反之如果是全屏窗口则看不到这样的效果。
4.2 Git的六步走
- 创建并进入空文件夹
- 右键->点击 Git Bash Here 启动命令行
- git init 仓库初始化
注意:
1.隐藏项目要打开
2.初始化的项目目录不一定是要空文件夹,非空的也可以
-
创建一个初始化文件index.html
- 可以使用命令行的方式创建:
touch 文件1 文件2...文件n
- 可以使用编辑器或者目录中直接创建
- 可以使用命令行的方式创建:
-
将文件加入到暂存区
git add index.html
将文件加入到暂存区
git add -A --也可以将文件包含目录的变化全部加入到暂存区。 [推荐使用]
重复使用,这个命令可以检测哪些文件添加过,哪些文件没有添加过,只将没有添加的部分进行添加。
注意:这个命令包含提交所有变化(修改、删除、添加)
-
git commit -m ‘注释’ 提交到仓库
其中,m是message单词的缩写
总结:
git init
仓库初始化
touch index.html
创建index.html文件
git add index.html
文件加入暂存区
git add -A
将全部文件加入暂存区
git commit -m '注释'
文件提交到本地仓库
4.3 .git目录【版本库】
- hooks:包含客户端或服务端的钩子脚本,在特定操作下自动执行
- info:信息文件夹,包含一个全局性排除文件,可以配置文件忽略
- logs:保存日志信息
- objects:目录存储所有数据内容,本地的版本库存放位置
- refs:目录存储指向数据的提交对象的指针(分支)
- config:文件包含项目特有的配置选项
- description:用来显示对仓库的描述信息
- HEAD:文件指示目录被检出的分支
- index:暂存区文件,是一个二进制文件(
git ls-files
查看暂存区的内容)
切记:
不要手动去修改 .git 文件夹中的内容
4.4 git版本的三个区域
【面试题:文件想要提交到远程仓库需要经历哪些步骤?工作区->暂存区->本地仓库->远程仓库】
-
工作区(代码编辑区)
-
暂存区(修改待提交区) 暂存区是一个临时保存修改文件的地方
-
仓库区(代码保存区)
【仓库区中存的实际是版本号,如果想要查找哪一个版本中的文件内容,需要找暂存区】
【然后根据git ls-files
来查看暂存区中的内容】
【如果想要切换不同的版本查看暂存区中的内容,需要历史版本回滚】
4.5 常见命令
-
ls
查看文件夹下的文件 (list 单词的缩写)或者是git ls-file
版本对应暂存区中的文件列表 -
cd
进入某一个文件夹内 (change directory 缩写) cd … 回到上一级Tab
键自动补全路径 -
clear 清屏(也可以使用
ctrl + l
快捷键)【注:】小黑窗中之前书写的命令清除掉,但不代表之前做的事情都没有了
-
mkdir 创建文件夹
-
touch test.html 创建一个文件【注意:与git环境无关,可以单独使用】
-
rm test.html 删除工作区中的文件
删除暂存区中的文件:git rm --cache 文件名【注:暂存区中删除的文件不会影响工作区】
同时删除暂存区和工作区中的文件:git rm -f 文件名
- rm 文件夹1 文件夹2 -r 删除文件夹【工作区】
删除暂存区中的文件夹:git rm 文件夹1 文件夹2 -r --cache【注:暂存区中删除的文件不会影响工作区】
同时删除暂存区和工作区中的文件夹:git rm -r -f 文件夹名(git rm -f -r 文件夹名)
-
cat test.html 查看文件内容
-
ctrl + c 取消命令 (cancel)
-
上下方向键
,可以查看命令历史 (history 查看所有的历史命令)
4.6 常见状态
git status
版本状态查看 ,查看当前 Git 仓库的状态【挺重要的】
On branch master 在 master 分支上
nothing to commit, working tree clean 没有什么需要提交, 工作树是干净的
表明:工作区的所有的修改都已经提交
Untracked files: 未跟踪的文件(新的文件)
(use "git add <file>..." to include in what will be committed)
cart.html
表明:有新增文件
Changes to be committed: 以下修改将会被提交
(use "git restore --staged <file>..." to unstage)
new file: cart.html
表明:暂存区有新的文件,如果想把文件从暂存区退回到工作区
使用`git restore --staged <file>`,
或者可以使用 git commit 命令进行提交
Changes not staged for commit: 为登上舞台修改提交
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: app.css
modified: app.js
表明:在工作区对这几个文件进行了内容修改.
关于颜色
- 红色 红色的文件 修改只存在于『工作区』(新增,修改,删除)
- 绿色 绿色的文件 此修改存在于『暂存区』(也就说明要执行 git commit即可)
-
git add -A
添加所有新文件到暂存区 -
git commit -m
'注释 ' 提交修改并注释 -
git ls-files
查看暂存区文件列表
4.7 历史版本回滚
查看历史记录
git log --查看提交日志
git log --oneline 以一行简化的方式查看
如果内容偏多,需要使用方向键上下滚动,按q退出
按照版本号回滚
git reset --hard 版本号
进行版本回退时,不需要使用完全的版本号(哈希字符串),前七位即可。
注意:版本切换之前,工作区内容如果要修改,需要进行提交 add commit
4.8 配置忽略文件
-
仓库中没有提交该文件
项目中有些文件不应该存储到版本库中,Git中需要创建一个文件【.gitignore】配置忽略,
一般与.git目录同级,不要鼠标右键直接创建,要通过编辑器的方式创建
常见情况有:
- 临时文件
- 多媒体文件、如音频、视频
- 编辑器生成的配置文件(.idea)
- npm安装的第三方模块
# 忽略 .swp文件(临时文件) .mp4文件
.swp
.mp4
#忽略指定的文件 .idea
.idea
#忽略当前文件夹下的node_modules文件和文件夹
node_modules
-
仓库中已经提交该文件
办法1:【非常委婉型】
- 对于已经加入到暂存区中的文件,可以在暂存区中删除该文件
git rm --cached 文件名
2. 然后再.gitignore中配置忽略
*.mp4 代表忽略以.mp4结尾的所有文件
3. add和commit提交即可
办法2:【简单粗暴型】
还可以直接将.git目录删掉,然后重新add和commit也可以,但是这样做风险太大,容易找不到之前的版本。
五、Git的分支(branch)
分支是 Git 重要的功能特性之一,开发人员可以在主开发线的基础上分离出新的开发线。
- 创建分支
git branch name ---name 为分支的名称(不要起中文)
注意1:不能初始化git之后直接创建分支,目录中必须要有文件且是已经commit提交后的状态
注意2:创建的分支是在主分支基础之上,并不是一个绝对的空分支
- 查看分支
git branch
- 切换分支
git checkout name
- 合并分支
git merge name1 name2
- 删除分支
git branch -d name1 name2
- 创建并切换分支
git checkout -b name
注意: 每次在切换分支前 提交工作区的修改
六、冲突
当多个分支修改同一个文件后,合并分支的时候就会有可能产生冲突。
冲突的解决非常简单,『将内容修改为最终想要的结果』,然后继续执行 git add 与 git commit 就可以了。
如何确认当前仓库中是有冲突的?
-
定位产生冲突的文件 (git status) 找红色的文字【因为修改在工作区】
-
修改冲突文件的内容为最终正确的结果
-
git add -A 和 git commit -m ‘注释’ 提交即可
git 仓库分段拉取代码
git分段拉取代码
git config core.sparsecheckout true
echo ‘day19’ >>.git/info/sparse-checkout
git pull origin master