Git

159 阅读6分钟

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对象。

662394-20190323084635293-1464825669.png

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 查看尚未提交的更新