1. Git
1.1. 文件系统
git 本质上是一个基于键值对的文件系统。
- 文件
- 文件夹
1.1. 区域
- 工作区:本地代码,当前项目,沙箱环境
- 暂存区:.git文件夹中index文件
- 版本库:.git文件夹
1.2. 对象
- blob object(数据对象):git 中的 blob object 就是文件系统中的文件,包含 键:一个 hash 值和校验值的组合,值:文件内容。
- tree object (树对象):相当于文件系统中的文件夹。
- commit object(提交对象):提交对象可以理解为对树对象的一层封装,里面包含了提交时间,提交作者等信息,更重要的,里面包含了父提交的ID,由此就可以形成 git 提交的有向无环图。
- tag object(标签对象) :指向一个特定对象的固定引用对象;可以给 git 中的任意对象打标签;标签对象不是引用(与分支名不同),是一种独立的git对象。
1.3. Git 安装
1.3.1. Git中的忽略文件
- .gitignore在这个文件中可以设置要被忽略的文件或者目录。
- 被忽略的文件不会被提交仓储里去.
- 在.gitignore 中可以书写要被忽略的文件的路径,以/开头,
一行写一个路径,这些路径所对应的文件都会被忽略,
不会被提交到仓储中
- 写法
/.idea
会忽略.idea文件/js
会忽略 js 目录里的所有文件/js/*.js
会忽略 js 目录下所有 js 文件
- 写法
1.4. 初始化配置
git config --global user.name "nxqlzhk"
git config --global user.email seven24678@163.com
git config --list
1.5. Git基础使用
1.5.1. 初始化仓库
git init
1.5.2. 把本地文件放到暂存区
git add .
1.5.3. 把本地文件放到本地仓库里面
git commit -m '备注'
1.5.4. 链接远程仓库
git remote add origin 你新建的仓库地址
1.5.5. 把本地仓库的文件推送到远程仓库
git push -u origin main
当我们在push时,加上-u参数,那么在下一次push时
我们只需要写上`git push`就能上传我们的代码。(加上-u之后,git会把
当前分支与远程的指定的分支进行关联。git push origin main)
1.6. 本地分支
默认是有一个主分支main
创建分支
git branch dev
创建了一个dev分支
在刚创建时dev分支里的东西和master分支里的东西是一样的
切换分支
git checkout dev
切换到指定的分支,这里的切换到名为dev的分支
git branch 可以查看当前有哪些分支
合并分支
git merge dev
合并分支内容,把当前分支与指定的分支(dev),进行合并
当前分支指的是`git branch`命令输出的前面有*号的分支
合并时如果有冲突,需要手动去处理,处理后还需要再提交一次.
1.7. 团队协作
1. 项目经理初始化远程仓库
一定要初始化一个空的仓库; 在github上操作
2. 项目经理创建本地仓库
git remote 别名 仓库地址(https)
git init ; 将源码复制进来
修改用户名 修改邮箱
git add
git commit
3. 项目经理推送本地仓库到远程仓库
清理windows凭据
git push 别名 分支 (输入用户名 密码;推完之后会附带生成远程跟踪分支)
4. 项目邀请成员 & 成员接受邀请
在github上操作
5. 成员克隆远程仓库
git clone 仓库地址 (在本地生成.git文件 默认为远程仓库配了别名 origin)
只有在克隆的时候 本地分支master(main) 和 远程跟踪分支别名/master 是有同步关系的
6. 成员做出贡献
修改源码文件
git add
git commit
git push 别名(origin) 分支 (输入用户名 密码;推完之后会附带生成远程跟踪分支)
7. 项目经理更新修改
git fetch 别名 (将修改同步到远程跟踪分支上)
git merge 远程跟踪分支
1.8. 冲突解决
冲突标记,冲突标志内容分为 本地自己的更改 和 服务器的更改。
<<<<<<< HEAD 到 ======= 里面的 “调整信息,验” 是我们自己本地的commit的内容
=======到 >>>>>>>的是您下拉的内容 “冲突第一次提交”
了解了冲突的标记,我们就知道怎么来做解决冲突了,下面有三种情况我们根据自己需要调整。
1,保留自己代码(删除服务器更新的)
删除:
<<<<<<< HEAD
=======
冲突第一次提交
>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2
保留:
调整信息,验
2,保留服务器代码(删除自己本地调整的)
删除:
<<<<<<< HEAD
调整信息,验
=======
>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2
保留:
冲突第一次提交
3,合并代码(保留自己本地和服务器更新的)
删除:
<<<<<<< HEAD
=======
>>>>>>> 4ea8ab3d420df5834d5a14fcb678e416092cd8e2
保留:
调整信息,验
冲突第一次提交
1.9.1 回撤操作
查看版本号 : git log
工作区
如何撤回自己在工作目录中的修改 : git checkout --filename
暂存区
如何何撤回自己的暂存 : git reset HEAD filename
版本库
使用git log -n 3 --stat命令,可以查看最近3次提交的详细信息,
如何撤回自己的提交 : git commit --amend
1.注释写错了,重新给用户一次机会改注释
2.git reset soft --HEAD~1 撤回上个版本
回退到指定的版本
git reset --hard Head~0
表示回退到上一次代码提交时的状态
git reset --hard Head~1
表示回退到上上次代码提交时的状态
git reset --hard [版本号]
可以通过版本号精确的回退到某一次提交时的状态
git reflog
可以看到每一次切换版本的记录:可以看到所有提交的版本号
1.10. Git常用命令
git status --- 查看当前状态
git log 查看历史提交的日志
git log --oneline 可以看到简洁版的日志
git branch --- 创建分支
git branch -a 查看所有的分支
git branch -r 查看远程所有分支
git branch -d name 删除分支
git merge origin/dev 将分支dev与当前分支进行合并
git checkout dev 切换到本地dev分支
git log 查看你的commit日志
git diff 查看尚未暂存的更新
git rm a.a 移除文件(从暂存区和工作区中删除)
git rm --cached a.a 移除文件(只从暂存区中删除)
git commit -m "remove" 移除文件(从Git中删除)
git diff --cached 或 $ git diff --staged 查看尚未提交的更新