git使用总结

167 阅读5分钟

1.基本认识

1.1 git仓库结构

git是一个版本控制工具,用来控制项目的版本更迭,结构如下

工作区(workspace):

本地项目存放文件的位置,所有本地的直接修改都是在工作区进行的。

缓存区(index/Stage):

顾名思义就是暂时存放文件的地方,通过是通过add命令将工作区的文件添加到缓冲区。

本地仓库(Repository):

本地git储存代码的地方,使用commit命令可以将缓存区的文件添加到本地仓库,推进仓库后才会生成一个版本号。

远程仓库(Remote):

线上git储存代码的地方,使用push,pull推送拉取代码,clone拷贝线上仓库到本地。

版本库:

当我们使用git管理文件时,比如git init时,这个时候,会多一个.git文件,我们把这个文件称之为版本库,但一般脚手架会搞定。

注:

1.工作区、缓存区、本地仓都是在本地的。

2.本地仓和远程仓是两个相互独立的仓库,各有自己的分支,当然本地和线上分支可一对一绑定。

1.2 忽略文件 .gitignore

# 此行为注释 会被Git忽略 
# 忽略 node_modules/ 目录下所有的文件 
node_modules 

# 忽略所有.vscode结尾的文件 
.vscode 

# 忽略所有.md结尾的文件 
*.md 

# 但README.md 除外 
!README.md 

# 会忽略 doc/something.txt 但不会忽略doc/images/arch.txt 
doc/*.txt 

# 忽略 doc/ 目录下所有扩展名为txt文件 
doc/**/*.txt
              

2.命令行

2.1 配置命令

//列出当前配置
git config --list

//列出本地仓配置
git config --local --list

//列出全局配置
git config --global --list

//列出系统配置
git config --system --list

//配置用户名
git config --global user.name "my.name"

//配置用户邮箱
git config --global user.email "my@github.com"

2.2 分支管理

//列出本地分支
git branch

//列出远程分支
git branch -r

//同时列出本地和远程的分支
git branch -a

//从本地分支切换到其它远程分支
git checkout [branch]
//先切本地分支,无该分支再去切远程分支,都无则报错

//创建并切换到新的分支(本地)
git checkout -b [branch]

//删除本地分支
git branch -d [branch]

//删除远程分支
git push -d origin [branch]

//将指定分支合并到当前分支(本地)
git merge [branch]

//查看哪些分支已经合并到当前分支
git branch --merged

//查看哪些分支没有合并到当前分支
git branch --no-merged

//查看各个分支最后一次提交的信息
git branch -v

//重命名分支(本地)
git branch -m [old_branch] [new_branch]
//重命名远程分支,只能将远程分支删掉,再推一次

//拉取远程分支并创建本地分支
git checkout -b [local_branch] origin/[remote_branch]

2.3 代码存取(版本控制)

//将工作区内容存到缓存区(当前分支)
git add .

//将缓存区内容存到本地仓(当前分支)
git commit -m '版本信息'

//将本地仓的内容推到远程仓(当前分支)
git push

//将远程仓内容拉取到工作区
git pull //拉取当前分支
git pull origin [branch] //拉取指定分支

//将某个远程仓库的更新,全部取回本地
git fetch [远程主机名]

//拉取指定远程分支的更新到本地
git fetch [远程主机名][分支名]
//本地仓库A的b分支可以拉取远程仓库B的a分支

//拉取指定远程分支的更新到本地指定分支
git fetch origin [远程分支]:[本地分支]

//撤销工作区的修改
git checkout -- '*' //撤销所有类型文件的修改
git checkout -- '*.tsx' //撤销tsx类型文件修改

//撤销缓存区内容(不覆盖工作区)
git reset HEAD '*'

//版本回滚
git reset [--soft | --mixed | --hard] [HEAD] <file>
//--hard  回退全部,包括HEAD、index、working tree
//--mixed  回退部分,包括HEAD、index(默认)
//--soft  只回退HEAD
git reset --mixed HEAD^ hello.php //回退 hello.php 文件的版本到上一个版本
//HEAD(当前版本)、HEAD^(上个版本)、HEAD^^(上上个版本)、HEAD^^^(上上上个版本)...
git reset --mixed bae128 //回退到指定版本
git reset --hard origin/master //将当前版本回退到与指定的远程分支一致      

2.4 文件暂存

git允许我们将缓存区和工作区的改动暂存起来,并且存放暂存文件的 "区域" 是跨分支的。这个 "区域" 是一个队列,可以多次压入不同的更改,每执行一次释放动作只会弹出一个暂存改动。

//将改动内容压入暂存队列
git stash 

//弹出暂存改动
git stash pop 

//弹出上一次暂存改动
git stash pop index 
//弹出指定暂存改动,index为队列下标

//查看暂存列表
git stash list

//清空暂存列表
git stash clear

//删除指定暂存
git stash drop index

//index为暂存改动在队列中的下标//精确到改动点进行暂存
git stash -p

2.5 查看相关信息

//查看文件状态
git status
//可能得到的结果如下:
//Changes not staged for commit
//表示得大概就是工作区有该内容,但是缓存区没有,需要我们 git add
//Changes to be committed
//一般而言,这个时候,文件放在缓存区了,我们需要 git commit
//nothing to commit, working tree clean
//这个时候,我们将本地的代码推送到远端即可

//查看个人历史操作记录(所有分支)
git reflog

//查看所有人操作记录(日志,所有分支)
git log

//查看git命令大纲
git help -a //命令大纲
git help //详细命令

//比较工作区和缓存区差异
git diff

//比较缓存区和本地库差异
git diff --cached

//比较工作区和本地库差异
git diff HEAD

//查看分支合并情况
gitk