GIT

102 阅读5分钟

版本控制系统

  • SVN(集中式)
    • 在本地写文件传给 中央服务器需要联网
  • GIT (分布式)
    • 在本地写文件 本地有本地仓库 不需要 联网
    • 多人协作需要 联网对中央服务器操作

​ GIT分布式管理 单人开发使用本地仓库就可以 不需要联网 多人协作则需要联网使用中央服务器

​ SVN集中式管理 单人开发也需要中央服务器 必须联网

常用Linux命令

/*
	1.查看当前目录下的文件
		ls -l(查看详细) -a(查看全部包括隐藏比如.git)
	2.清空命令框
		clear 
	3.添加文件夹
		mkdir temp
	4.往文件夹中添加文件
		touch 1.js
	5.往文件中写入内容
		vi 
            @1 vi 1.js
            @2 i insert
            @3 "ESC" + ":" + "wq" 保存退出
            
        echo 立即创建文件  如果有文件会覆盖之前的
        	@1 echo 333 > 1.js
        	@1 echo 333 >> 1.js
     6.输出文件内容
      	cat 1.js
     7.复制文件夹/文件  cp [旧] [新] -r(递归) 
     	@1 文件夹 cp temp1 temp2 -r
     	@2 文件   cp 1.js 2.js
     	例题 当前 =>C:\Users\AdminYZL\Desktop>
     		cp -r temp2/ temp/kkk
     		temp2下的所有文件复制到temp/kkk
     8.删除文件/文件夹 rm [旧] -rf(r标识递归 f标识强制删除)
     	@1 rm temp2 -rf
*/

GIT本地基础流程

image-20210511222946061

/*
	1.创建本地仓库 (工作区 / 暂存区 / 历史区)
		+ git init
    2.添加到暂存区
    	+ git add .	 全部添加到暂存区
    	+ git add 1.js  把1.js 添加到暂存区
    		注意只想把1.js生成一个历史版本就要清空原来的暂存区
    3.添加到历史区
	    + git commit -m "备注信息" 生成历史版本
*/

GIT常规命令操作

1.把工作区添加到暂存区后发现暂区代码写错了,要把暂存区文件删了。
//删除暂存区文件
git rm --cached xxx.xx		
git rm --cached . -r 

//但是一般都不怎么做 一般直接采用覆盖
git add xxx.xx
2.代码回滚
/*
	需求把工作区文件添加到暂存区后,发现工作区代码写错了,要把暂存区代码回滚到工作区
*/

//把暂存区代码复制一份到工作区(覆盖工作区新写的内容)、暂存区不删除  
git checkout xxx.xx

//删除当前暂存区内容并回滚到暂存区上一个版本  目的为了把上一个暂存区内容回滚到工作区
git reset HEAD .

//回退到某一个历史版本
git reset --hard 版本号
重名的会覆盖

//把历史操作步骤输出
history > xxx.txt
查看每个区代码的区别
//工作区 VS 暂存区
git diff
//工作区 VS 历史区 MASTER分支
git diff master
//暂存区 VS 历史区
git diff --cached
查看全局配置
git config -l
设置名字和邮箱
git config --global user.name 'xxx'
git config --global user.email 'xxx'
忽略上传暂存区的文件
/*
	1.创建.gitignore
		文件夹写 temp/
		文件写   1.js
*/
分支 (分支针对的是历史区 , 工作区不变)
//查看所有分支
git branch
//创建分支 dev
git branch dev
//切换分支 dev
git checkout dev
//创建并直接切换分支
git checkout -b dev
//跳转分支之前如果工作区有代码 为了防止丢失把(工作区代码暂存)
git stash
//把跳转之前暂存的代码释放
git stash pop

GIT本地与远程仓库的联调(多人协作)

//创建客户端本地仓库
git init
//让本地仓库与远程仓库保持连接
git remote add origin  "远程仓库的地址"
//查看连接信息
git remote -v
//移除本地仓库和远程仓库的连接
git remote rm origin
//更新链接通道
git remote update origin

/*
	更简单的链接方式	正式开发基本都是使用个
	相当于 @1 git init
		  @2 git remote add origin "仓库地址"
		  @3 git pull origin master
*/
git clone "仓库地址" 本地仓库文件夹名字不写默认是仓库地址

/*---只用一个master分支多人协作---*/
git add .
git commit -m"14.59"
git pull origin master //把中央仓库的master分支拉下来可能要解决冲突
git push origin master //把本地推送到中央仓库master分支

/*---创建多个分支---*/
@1 git checkout -b dev //创建一个dev分支 并把当前分支的历史版本带过去
@2 接着在dev分支中操作
	+ 操作完了也在dev分支中提交历史版本了
	+ 但是 你还在工作区中写了东西 没有提交到历史版本你就需要 git stash 把工作区中的内容暂存 以防丢失 如果不存是不允许切换分支的
@3 git checkout master	//切换分支
@4 git merge dev 	//把dev分支合并到当前分支
@5 git pull origin master //把远程分支拉下来
@6 git push origin master 
@7 git stash pop //把之前dev中暂存的内容放出来

单分支的冲突问题

如果你的本地仓库代码和中央有冲突他就会问你

image-20210514102840802

Vscode使用git

@1 修改代码 image-20210513214021759.png @2

image-20210513214221603.png

暂存区不清理缓存不会变为空 会使用上次暂存区的内容

比如:上次传过 index.css 这次只 git add index.html

git commit -m"将上次的index.css和这次的index.html一起打包成历史版本"