Git工作流
Flow
for ( =>local-code => submit to local-repository => submit to server-repository => from remote-repository update code => )
Detail
localfolder -> git Stage -> git local -> git remote
本地工作文件夹 -> 索引区 -> 本地库 -> 远程库(服务器端)
基础配置
git init
初始化git config -l
查看配置信息git config --global user.name "XXX"
git config --global user.email "xxx@zz.com"
git config --help
查看帮助信息git help config
git help commit
git help ...
提交本地仓库
创建本地仓库
mkdir mygit
建立本地工作文件夹cd mygit
进入文件夹
git init
git init
初始化git库
更新仓库内容
git status
git add FN
git commit -m “RI”
git log
查看提交日志
git log -[number]
git log –oneline
git log -p
git log -p -[number]
git log -p -[number]
git log –stat
git log –help
git log --help
查看其他命令用法
工作状态回退
未添加到索引区
git checkout – [FN]
已添加到索引区
git reset HEAD [FN]
比较修改内容
git diff
git diff –cached
文件操作
git mv OldFN NewFN
git rm –cached FN
忽略管理
设置Git忽略的文件,这些文件不参与Git库的提交和管理。(动态文件,比如Node.js的 node_modules 文件夹)
新建两个文件;ingnore.tmp为需要被忽略的文件, .gitignore为配置文件
查看状态
目前状态为两个文件都将被Git管理
在 .gitignore 中添加
*.tmp
忽略这类文件:即使是在同级目录文件夹内的.tmp 都会被忽略查看状态
.tmp 已被忽略 ;
更新最后的提交记录
在上次提交过一次记录,后来发现内容有误,需要修改下内容但是又不想再提交一条修改记录,而是添加到上次提交的记录中去。
git commit –amend
版本回退/切换
git reset –hard HEAD
git reset --hard HEAD
回退到最新提交版本git reset --hard HEAD~
回退到最新提交的上一次版本git reset --hard HEAD~n
回退到倒数第N版本git reset --hard 版本ID号
回退到指定版本号
git reflog -[number]
分支使用⭐
以上的操作都是在主分支上执行的,但是在实际应用中不应该多次在主分支操作。
在项目中每个人都有自己的要执行的任务,每个人执行的任务都不同,那么就需要在主分支上建立自己的分支,在自己的分支上不断的完善后再向主分支进行合并。
git branch BN
git branch 分支名
建立新分支
git checkout BN
git checkout 分支名
切换分支
Detailed Process
分支文件存储位置
通过git在本地创建仓库,切换分支时另外一个分支的内容在哪里?
项目文件都保存在.git目录下,始终存在,包括历史的各种版本,只不过不能从文件名字搜索到,因为Git是Content Addresing的。每次切换到一个分支,或者是check out一个历史版本,Git就从数据库(就是.git目录)中把这个版本的文件和目录都找出来,Copy一份放这当前的项目目录下。
合并分支
git merge BN
git branch BN
分支冲突
git checkout -b BN
git checkout -b 分支名
建立分支并切换到该分支修改文件内容,提交
切换分支,继续修改同样文件的内容,提交
在主分支上合并开发分支
有冲突,需要手动修改
打开有冲突的文件
这是VSCode的功能(当前所处分支|被合并分支|两者都要|比较)
修改完毕后,回到主分支,查看状态并提交
使用Tag标签
简单了解版本号
版本号: 1.1.4 (NNN.abc.xxx)
有些为四位数 1.1.4.2356 最后的数字为编译次数等其他信息
- NNN:大版本号
- abc:每次做出的小更新时,发布的版本号
- xxx:每次bug修正时发布的版本号
git tag VersionNumber
使用别名
在Git中可以将经常使用的命令以别名缩写的方式简化使用,根据个人习惯或者开发组规范吧。
git config --global alias.别名 原命令名
例如:
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
git config --global alias.st status
...
GitHub
常用命令
git branch -a
查看全部分支情况git branch 分支名1 remotes/origin/分支名2
以远程分支名2为依据建立本地分支名1 (这两个是同一个东西来的)git remote -v
查看获取和推送的URLgit push origin 分支名
推送到指定分支git pull
拉取远端内容
Remark
文章中用到的简写:
- RI ==Remark Information
- FN == FileName
- BN == branchName