Git学习笔记
版本控制(版本迭代)
什么是版本控制
版本迭代,开发过程中,对项目各个阶段的版本的控制。
在开发过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本。
多人开发必须要使用版本控制。
常见的版本控制工具
- Git (当下最流行)
- SVN
- CVS
- VSS
- TFS
- Visual Studio Online
版本控制分类
版本分类
1.本地版本控制
2.集中版本控制
3.分布式版本控制
本地版本控制
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人,如RCS。
集中版本控制
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或者上传自己的修改。例如,SVN、CVS、VSS。
不连网,用户看不到历史版本。
分布式版本控制
所有版本信息仓库全部同步到本地的每个用户这样可以在本地查看所有历史版本,可以离线在本地提交,只需在连网时,将信息push到相应的服务器或其他用户那里。
不会因为服务器损坏或者网络问题,造成不能工作的情况。
常用Linux命令
基本的Linux命令
改变目录
#返回上一级目录
cd ..
#切换目录
cd 目录路径+目录名
显示目录
pwd
清屏
clear
列出当前目录下的文件
ls
创建文件
#创建一个index.js
touch index.js
删除文件
rm index.js
新建目录
mkdir 文件目录名字
删除目录
rm -r 文件目录名字
移动文件
mv 目标对象 移动的位置
查看历史命令
history
Git的必要配置
查看配置的命令
#查看Git配置
git config -l
#查看系统配置
git config --system --list
#查看本地的一些配置
git config --global --list
设置邮箱和用户名
邮箱和用户名会被嵌入到所有的提交信息中,便于让别人知道是谁提交的
必须配置
git config --global user.name 你的用户名
git config --global user.email 你的邮箱
配置文件的位置
所有的配置文件都在本地
Git的配置文件在:Git安装目录 --> etc --> gitconfig
Git 的基本理论
Git 四个工作区域
- WorkSpace 工作区: 平时存代码和文件的地方。
- Stage 暂存区:用于临时存放你的改动,事实上它只是一个文件,保存即将提交的文件列表信息 (项目中 .git 文件夹),其中index指向最新放入Stage的版本
- 本地仓库(Local Repository):就是安全存放数据的位置,这里有你提交的所有版本的数据,其中HEAD 指向最新放入仓库的版本
- 远程仓库(Remote Repository):Github(国外) 、Gitee(国内)
关系如下图:
上图中的相关解释:
-
Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。
-
WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。
-
.git:存放Git管理信息的目录,初始化仓库的时候自动创建,是一个隐藏的文件夹。
-
Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。
-
Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。
-
Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。
注意:
可以说本地仓库=工作目录的文件夹+.git文件夹,这个等式也是成立的。
在Git中,工作目录是指你正在编辑的实际文件夹,包含你正在进行编辑或修改的所有代码、文本文件、图像或其他项目。当你对工作目录中的文件进行更改时,这些更改并不会立即反映在本地仓库或远程仓库中。
而本地仓库则是.git文件夹和相关信息的集合,主要用于记录项目的版本历史和状态。.git文件夹包含了项目的所有版本历史记录、元数据和对象等重要信息,并存储在计算机上的特定位置中。
因此,可以将本地仓库视为工作目录的文件夹和.git文件夹的组合。这两者一起构成了一个完整的本地仓库,用于管理项目的版本控制。
Git中的暂存区是指一个中间状态,用于暂时保存你对代码库所做更改的地方。它通常位于本地仓库和工作目录之间。当你修改了文件并准备提交这些修改时,Git会将这些更改先添加到暂存区,然后在执行提交操作时将其保存到本地仓库中。
具体来说,暂存区是一个文件,也被称为索引(Index),位于.git目录下,是Git用于缓存即将提交的更改的地方。它记录了下一次提交要保存哪些文件、修改了哪些部分、以及每个文件最后一次提交的快照。通过将更改添加到暂存区,你可以控制哪些更改需要提交,哪些不需要提交。
与本地仓库相比,暂存区主要是位于本地仓库和工作目录之间的一个中间状态,用于缓存即将提交的更改。本地仓库则是包含历史版本的完整数据库,存储在计算机上的特定位置中,用于记录项目的版本历史和状态。工作目录则是指你正在编辑的实际文件夹,包含你正在进行编辑或修改的所有代码、文本文件、图像或其他项目
Git的必要命令
#从工作区添加到暂存区(文件只是暂时保存,还没有永久化)
git add
#从暂存区提交到本地的Git仓库
git commit
#从本地仓库提交到远程仓库
git push
#从远程仓库把代码拉到本地
git pull
#从本地仓库回滚到暂存区
git reset
#从暂存区检出到工作区
git checkout
Git 的工作流程
git的工作流程一般如下:
1.在工作目录中添加、修改文件
2.将需要进行版本管理的文件放入暂存区域(git add)
3.将暂存区的文件提交到git仓库(git commit)
因此git 管理的文件有三种状态:
-
已修改(modified)、
-
已暂存(staged)、
-
已提交(committed)
分支(branch)
- 分支就是平行宇宙
- master: 主分支
分支中常用的命令
#列出所有本地分支
git branch
#列出所有远程分支
git branch -r
#新建一个分支,但是工作目录依然停留在当前分支
git branch [branch-name]
#新建一个分支,并将工作目录切换到新分支
git checkout -b [branch]
#合并指定分支到当前分支
git merge [branch]
#删除分支
git branch -d [branch-name]
#删除远程分支
git push origin --delete [branch-name]
git branch -dr [remote/branch]
- 多个分支并行执行,我们代码也不冲突,即同时存在多个版本。
- 如果合并分支时,同时修改了同一个文件,会引发冲突,需要协商/手动处理。
- Master分支应该非常稳定,用来发布新版本,一般情况下不允许在上面进行操作。
Git项目搭建
本地仓库搭建
#第一种方法:进入工作项目的根目录,键入git init,会创建一个.git文件夹,注意这个git文件夹是一个隐藏的文件夹
git init
#第二种方法:克隆远程目录,将远程服务器上的仓库完全镜像一份至本地
git clone [url] #去远程仓库上copy下来 http/ssh等链接
Git 文件操作
文件的四种状态
-
Untracked 未跟踪:文件在工作目录中,但是还没有加入git仓库,通过git add命令后变为Staged暂存状态。
-
Unmodify 未修改:文件已经入库,且与项目文件内容一致。若此时被修改,则文件状态变为 已修改,如果使用 git rm 移出仓库,则文件状态变为未跟踪。
-
Modified 已修改:文件已经修改。git add --> 暂存状态;git checkout -->覆盖当前文件 --> 未修改。
-
Staged 暂存状态:
git commit
--> 提交到本地仓库;git reset HEAD filename
--> 取消暂存;
查看文件状态
#查看指定文件状态
git status [filename]
#查看所有文件状态
git status
修改文件状态
#添加所有文件到暂存区
git add .
#提交暂存区的内容到本地仓库
# -m 提交信息message
git commit -m ""
忽略文件
-
有时候不需要把所有的文件都纳入版本控制,例如数据库文件、临时文件、设计文件等
-
在主目录下建立 “.gitignore” 文件,该文件有以下规则:
1.文件中的注释#号开头
2.可以使用Linux通配符
3.如果名称最前面有一个感叹号!,表示例外规则,将不被忽略
4.如果名称的最前面是一个路径分隔符/,表示要忽略的文件在此目录下,而子目录中的文件夹不忽略
5.如果名称的最后面是一个路径分隔符/,表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)
#为注释
#忽略所有的 .txt 结尾的文件,这样的话上传不会被选中
*.txt
#但是lib.txt除外(lib.txt不会被忽略)
!lib.txt
#仅忽略项目根目录下的TODO文件,但是不包括目录temp(/在前,忽略前面)
/temp
#忽略build目录下的所有文件(/在后,忽略后面)
build/
#会忽略 doc/notes.txt 但是不包括 doc/server/arch.txt
doc/*.txt
使用Gitee或者Github
使用流程
-
注册登录码云,完善个人信息
-
设置本机绑定SSH公钥,实现免密码登录
#在c盘用户目录下,新建一个.ssh文件夹 #如:C:\Users\Adminstrator\.ssh #在git bash命令窗口键入命令,创建公钥,执行如下命令: ssh-keygen -t rsa
此时,一直回车继续,直到.ssh文件夹下出现类似 id_rsa.pub 和 id_rsa 文件
将.pub文件的内容拷贝到码云或者Github的SSH公钥里面,生成认证信息
-
使用Gitee或者Github新建一个仓库
直接在Gitee或者Github新建一个远程仓库即可,将远程仓库克隆到本机
git clone [url]
此处克隆的时候如果报错,例如…127.0.0.1 1136…,可能是你的git使用了代理,删除代理就好了
#删除代理 git config --global --unset http.proxy
- 以后选择拉取远程仓库使用
git clone [URL]
命令时,其中的URL可以除了选择https链接
,选择SSH的链接,这样在本地某个目录中直接在Git Bash中输入git clone SSH链接
即可成功拉取下来。
创作不易,欢迎点赞/评论/转载!!