Git学习
版本控制
版本:文件的变化
版本控制:记录文件变化,生成版本
查看历史版本
恢复到指定版本等…
分布式版本控制——git
Git三大区域
- 暂存区
暂时存放未提交的内容,打算提交,但还没有提交。
只要工作区的文件有变动,就需要将工作区的变动添加到暂存区。 - Git仓库/版本库
Git仓库 = 本地仓库 + 远程仓库
将暂存区内容提交到本地仓库,生成一个版本
如有需要,可将本地仓库中的版本推送至远程仓库。
Git的基础操作
在一个新项目中想要使用git,首先需要做的就是在该项目根目录下打开git窗口命令,git init。
全局配置个人信息(仅配置一次)
- 右键打开Git Bash
- 命令:
git config --global user.name '用户名'
- 命令:
git config --global user.email '邮箱'
(全局配置文件存放在C:\Users\用户名.gitconfig中)
常用的Git命令——生成版本
git init
:在项目中初始化Git,让Git管理当前项目git status
:检查当前文件状态,需要经常使用git add < filename1 > < fillename2>
:将工作区的指定内容添加到暂存区
git add .
:将工作区的内容一起添加到暂存区
(只要工作区的文件有变动,就需要将工作区的变动添加到暂存区)
注:使用git add后,工作区和暂存区的内容是一致的。
工作区和暂存区内容不一致的时候,需要通过git add,让他们内容一致git commit -m ‘描述信息’
:将暂存区的内容提交到本地仓库,生成版本
git commit 后,暂存区和本地版本库的内容是一致的。。
暂存区和本地版本库内容不一致的时候,需要通过git commit让他们内容一致。git log
:查看提交记录git log --oneline
:以一行的方式查看提交记录
常用的Git命令——版本重置
git reset --soft 版本号
:仅重置本地仓库
git reset --mixed 版本号
:重置本地仓库和暂存区,默认行为
git reset --hard 版本号
:重置本地仓库、暂存区和工作区(–hard 危险,会覆盖正在开发的代码)
工作区只有添加头部的内容了:
git reflog
:可以查看所有记录,包括“丢弃”的版本。git log
:查看提交记录,不包括被“丢弃”的版本。
git忽略文件
- 理解:一个文件,用于指定哪些文件不需要Git管理,Git要忽略掉哪些文件。
- 操作:直接在项目根目录下创建一个名为
.gitignore
的文件,在里面书写要忽略的文件,这个文件是需要进行Git管理的。 .gitignore
文件里书写规则:
- #:#后面的是注释
- test.html:忽略指定的文件,不让Git管理。(忽略掉test.html)
- test.*:忽略所有文件名是test的文件,不管后缀是什么
- *.tmp:忽略所有后缀是.tmp的文件,不管文件名是什么
- !test.tmp:取反,不忽略test.tmp文件,让Git管理起来
- node_modules/:忽略node_modules目录下的所有文件
- Git管理的是文件,空目录会自动被Git忽略掉
撤销操作——git restore 文件名
在对某一个文件进行改动之后,发现不需要这些改动或者做了错误的改动,需要将这些改动删除时,可以使用撤销操作git restore 文件名
:
- 在还没有进行
git add .
之前,使用git restore 文件名
即可将做的改动都撤销,回到上一次提交的状态。 - 在进行了
git add .
之后,但还没有进行git commit -m "aaa"
之前,可以使用git restore --staged 文件名
来撤销操作。
(在commit之后就不可以再进行撤销操作了)
删除文件
- 从工作区(修改代码的区域)中删除文件:
rm 文件名
——未commit到本地仓库 - 工作区和版本库中同时删除:
git rm 文件名
Git分支
创建分支
有多个分支时(第一次提交一定是在master分支上)
git branch
:查看分支git branch -v
:查看分支(展示的信息多一些)git branch 分支名
:在当前分支的节点上创建新的分支git checkout 分支名
:切换分支,兼容性好 创建并切换分支git checkout -b 分支名
git switch 分支名
:切换分支,v2.23.0版及以后可用
想要创建分支的时候需要切换到master主分支上再创建。git rebase
:取出一系列的提交记录,“复制”它们,然后在另外一个地方逐个的放下去。(比如将dev分支上的移动到master分支上操作,先切换到dev分支上,再执行git rebase master
)
合并
希望合并到哪个分支上就先切换到哪个分支上
git merge 要合并的分支名
:将制定的分支合并到当前分支git branch -d 分支名
:删除分支git log --oneline --graph
:以一行、图形化的方式查看提交记录
(合并分支时,先切换到最终要合并到的分支,再合并)
冲突- 在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改。
- 产生了冲突,需要人为解决后再提交一次
远程仓库
操作远程仓库
- 注册Gitee账号
- 创建空的仓库(远程仓库)——仓库名和本地项目名一致
- 将本地仓库推送到远程仓库
- 如果还没有本地仓库——
git clone xxx
将远程的克隆到本地 - 如果远程仓库有新的版本——
git pull
将远程的拉取到本地
远程仓库的操作
- 创建和删除远程仓库
- 推送到本地仓库和远程仓库
git push 远程仓库地址 要推送的分支
- 克隆远程仓库到本地
git clone 远程仓库地址
- 拉取远程仓库的最新代码到本地
git pull 远程仓库地址 要拉取的分支
- 将本地仓库推送到远程仓库
git remote add 别名(常用origin) 远程仓库地址
:配置别名git push 别名/远程仓库地址 要推送的分支
:将某分支推送到某个仓库git remote -v
:查看配置的别名——别名在.git/config
中
- 将本地仓库推送到远程仓库需要权限
- 仓库创始人默认有这个权限
- 其他人需要先加入团队,才能推送
- 如果还没有本地仓库
- 克隆远程仓库到本地,不需要自己创建本地仓库
git clone 远程仓库地址
- 如果远程仓库有新的版本
git pull 别名/远程仓库地址 分支名
- 没有本地仓库的时候,用
git clone
- 已经有本地仓库,更新的时候,用
git pull