一:使用Git的原因
我们在写版本的时候,可能会谢谢改改,可能要回到之前的文件,修改之前的文件,因此总是要保持很多个文件,且书写文件名也很麻烦。git可以有一个仓库,版本库,可以保存这些文件。且很好找到,且文件容易丢失,git能解决这些缺点。
二.查看版本号
git -v命令可以查看当前git版本号。
我们进行的git操作需要在Git Bash下的git终端。
三.配置用户名和邮箱
以上命令在git终端,每次提交版本的时候就会记录身份。当推送到远程仓库时,可知道是谁提交的。当写了一次这个命令,之后生成的版本都是这个。
git config --list 获取配置,包括用户名和邮箱。再写一次上面的用户名和信息可以改变。
四:Git仓库
在git终端下 git init 能在前面的文件夹下创建.git 文件夹,该文件夹中保存着版本库和暂存区。,各个版本,以。
路径 A git init 会在A路径下生成.git文件夹。
路径A git init B 会在A/B文件夹下生成.git 文件夹。
五:git的三个区域
工作区 :开发的文件夹
暂存区:仓库内暂时存储的文件
版本库:暂存区的快照
暂存区在.git/index下。不是文件夹噢。
六.相关命令
1)git add 文件名/路径/. 工作区-》暂存区
路径A git add 文件名/路径名 会将路径下的文件名/路径下的所有的文件,放到A下的。git的暂存区。git add . 暂存所有文件,在A路径下的。
2)git commit -m "注释说明”
暂存区-》版本库 生成版本,必须提交的暂存区与之前的提交的前一个暂存区不同,才能在分支上生成版本号。才有新的版本记录,即使第一次提交和第三次提交一样,也会生出新的版本号,和分支。
以上可以将暂存区所有的文件作为一个版本,且有以哈希生成的唯一的文件名的版本,保存之后的暂存区不会变,还是原来的文件。
3)输入clean回车是清空终端。和cls一个意思。
6)git restore 目标文件名(后缀噢)
可以将暂存区当中改文件内容变成工作区的文件状态。
7)git rm --cached 文件名
从暂存区中移出该文件,不会影响其他区的。如果没有暂存区,只有两个,则想这种移出,会影响版本的内容。这些文件名都必须看作是当前根目录写完整的,q/a.html要不找不到。
8)
查看版本库内的记录 git log --oneline
该命令能查看该分支下Header指针在该分支时所有提交的版本号,可以一直往前找,会包含主枝的版本号,也可包括分支的。
9)回退版本 git reset --soft 版本号
回退时,soft 暂存区和工作区的内容不变,没有删除版本号,且HEADER指针指向指定的。
10)git reflog
11)忽略文件的跟踪
git add . 会将很多可以之后版本库内拿到再生成的文件无需跟踪,传入远程仓库也麻烦。
可以在以下文件下写文件夹的名,或者后缀可以 不在放入暂存区。
七:分支
1)创建分支,可以不同分支实现不同功能,更易调节。
主分支是master。创建分支时,是在此时分支Header指针指向的版本有分支。每次切换分支时,暂存区和版本区是切走之前的工作区和暂存区。创建分支名重复无法创建。
2)分支的合并与删除
分支的删除,会将不是公共部分的版本删除。 git branch -d 分支名
分支的合并第一种情况
合并到master分支上,master分支是没有生成新的版本的。
第一种情况,历史记录是c1->c2->c3->c4->c5->c6,是在c3暂存区的基础上提交c4的暂存区文件。
分支合并第二种情况
这里其实和上一个也是一样的,都是变成一个分支,提交的历史记录是在原本暂存区的基础上进行操作提交,以及提交不看是哪个分支只看那个分支的版本号先提交。分支合并之后的分支的工作区暂存区都是版本库的版本的文件。
第三种:即使分支A与分支B不是,A从B上创建而来,依旧可以合并,以及如果是将A合并到B上,A的版本号其实不会变,依旧指向原本的版本,他的版本历史也不会变。但是B分支都是看A,B上提交的时间开始提交版本。
合并会出现这个提示
# 请输入一个提交消息来解释为什么合并是必要的,
# 特别是当它合并一个更新的上游到一个主题分支。
#
# 以“#”开头的行将被忽略,空消息将中止
# 提交。
3)合并冲突
合并如果分支A和分支B上会对同一个文件(原本一样的文件)的同一属性都进行不同的修改,将不会根据时间来改,会提示,叫你修改,两个修改的文件内的不能同时存在的。
疑问:分支A与分支B冲突,我们解决了冲突·,会出现让你留下那几个,但是你做出裁决之前,版本库内只有原本的版本,但是一旦修改之后提交。会将合并的版本一块放入。且即使没进行合并,只有原本的版本库,但是工作区是已经进行了合并之后的。则一开始进行这个毛肚的行为都是现在决定的。
9)将第三步的仓库名取消,git remote remove 仓库别名
10)查看所有仓库别名的推送和接收
git remote -v
八.常见命令
九.远程仓库
1)仓库的推送
。第四步才是传送Git仓库。推送一开始需要-u,进行连接,已经连接下一次再推送九可以不用了。将第三步的仓库名取消,git remote remove 仓库别名 ,-u写了也不会连接,只有第一次,且第一次之后,-u也不会出现登入账户名密码了。是将分支的版本历史记录传到远程仓库内。
这个推送只有当仓库内的文件又,本地改了才行,但是如果仓库已经更新,但是本地没有,本地改了其他地方,这个是无法推送的,git pull --rebase origin master这个可以是先将仓库的更新合并到本地版本库,再上传,但是自己的会是更新之后的工作区。
要再次登录账户名密码做法:控制面板-》windows凭据-》普通凭据-》删除原本的账户密码。
2)仓库的克隆
将远程仓库的拷贝到本地
会映射到暂存区和版本区。再各个分支,
3)拉取代码
拉取代码和推送一样需要第三步连接,然后才能拉取代码,但是克隆可以直接进行连接然后获取。
克隆可以没有git仓库,但是拉取需要,且拉取是某一个分支,克隆是整个工作区。
10.vscode的简易操作
在vscode工具中,会出现蓝色的标记,点进去,内部文件是前一次生成版本到现在改变的文件。
push推送是此时的版本库推送,Sync...只推送该文件。拉取是所有的都拉取过来。放入版本库。克隆和拉去都会同时改变暂存区和工作区。
七:Git文件状态
U是指在工作区的新文件
A是指该区第一次有这个文件
M表示内容变化,有的情况下
空格表示 处于提交保存后/没有变化。。
不明白算了