git的使用
1. 版本控制工具
一种软件工程技巧,确保由不同人所变编辑的同一程序文件都能得到同步
追踪、维护、控制
集中式
集中管理的服务器,保存所有文件的修订版本。开发人员需要连接这台服务器
CVS
SVN
分布式
git
2. Bash-CMD-GUI的区别
Bash
- git bash 就是一个shell, 是window下的命令行工具,可以执行linux命令
- 基于CMD,在CMD上增加了一些新的命令与功能
- 使用bash更方便
CMD
- 命令行提示符,是Window操作系统上的命令解释程序
- 可以启动cmd运行git命令
GUI
- 适合不喜欢命令行编码的人
- 图形界面
3. Git配置分类
/etc/gitconfig
文件:针对系统配置- 执行
git config --system
会读写该文件中的配置变量 - 需要管理员权限才能修改(开发中通常不修改)
- 执行
~/.gitconfig
或C/用户/xxx/.gitconfig
文件:针对当前用户- 执行
git config --global
读写此文件,对系统的所有仓库生效
- 执行
- 使用当前仓库Git目录中的config文件(
.git/config
):针对该仓库- 执行
git config --local
读写该文件,默认情况下使用的就是它
- 执行
安装git之后,第一要做的就是设置用户名和邮箱
git config --global user.name '用户名'
git config --global user.email '邮箱'
# 查看配置信息
git config --list
4. git 命令别名
git config --global alias.别名 命令
git config --global alias.st status
git st == git status
5. VS code 集成 git bash 终端
{
...
// settings.json 终端配置
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell"
},
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"icon": "terminal-cmd"
},
"GitBash": {
"path": ["C:\\Program Files\\Git\\bin\\bash.exe"],
"icon": "terminal-bash"
},
},
"terminal.integrated.defaultProfile.windows": "GitBash",
...
}
6. git 操作
-
git init
:创建仓库 -
git clone register
: -
git add .
-
git commit -m msg
-
git log --pretty=oneline --graph
-
git reflog
-
git status
-
git reset
git reset --hard HEAD^^^
git reset --hard HEAD~3
git reset --hard <commit id>
-
git remote
-
git remote -v
-
git remote add 仓库名 仓库地址
-
git remote show origin
-
git remote prune origin
: 删除了那些远程仓库不存在的分支 -
git remote rename old new
-
git remote remove old
-
git pull origin xxx
: 拉取远程分支 git fetch + git merge -
git push origin xxx
: 当前分支提交到远程 -
git branch -a
: 全部分支 -
git checkout -b xxxx
: 创建并切换分支 -
git checkout xxx
: 切换分支 -
git checkout--track 远程分支
:跟踪远程分支 -
git branch -m oldName newName
: 修改分支名称 -
git branch -d xxx
: 删除本地分支 -
git branch -D xxx
: 强制删除本地分支 -
git push origin --delete [branch_name]
: 删除远程分支 -
git push origin :xxx
: 删除远程分支 -
git stash
-
git pop
: 释放并删除 -
git commit --amend
: 修改commit注释 -
git reset --soft HEAD^
: 撤销上一次commit提交内容,--soft(不删除工作空间改动代码,撤销commit,不撤销git add . ) -
git reset --mixed HEAD^
: (不删除工作空间改动代码,撤销commit,并且撤销git add . 操作),, -
git reset --hard HEAD^
: (删除工作空间改动代码,撤销commit,撤销git add . ) -
git branch --set-upstream-to=origin/master
: 和上游分支建立关联 -
git merge --allow-unrelated-histories
: 允许没有基类的两个分支合并
7. 忽略文件配置
不希望git进行跟踪和管理
通常不需要自己创建
.gitignore
文件
# .gitignore
node_modules
8. git校验和
SHA-1 散列 hash,
40位16进制(0-9)和(a-f)组成的字符串,基于git中文件的内容或目录结构计算出来的
9. 远程仓库验证
git Crediential
选项- 默认都不缓存,每次连接都要输入账号和密码
- cache, 存放在内存中,15分钟自动清除
- store: 以明文形式存在磁盘中
- Mac 中是
osxkeychain
: 加密存到用户的钥匙串中 - windows中是
git gredential manager for windows
加密存到用户的钥匙串中
ssh
ssh-keygen -t ed25519 -C '你的邮箱'
生成公钥和私钥
10. git标签
重大的版本时,打上标签 v1.0
git tag v1.0
git tag
git tag -a v1.1 -m '注释'
git show v1.1
git push origin v1.0
git tag -d v1.0
git push origin -d v1.0
git checkout v1.0
11. Git 提交对象
git cat-file -t <objects/xx/aaasdfsdf>
: 返回文件的二进制git cat-file -p <objects/xx/aaasdfsdf>
:返回文件内容
12. Git 工作流
-
master: 主分支
-
develop: 开发分支,版本稳定以后,合并到master分支
-
hotfix: 修复bug分支
-
feature: 新功能、新特性
-
release: 预发布,测试经过测试
origin/main与本地master分支:
git checout --track origin main
会创建main分支并关联上层分支上面的简写:
git checkout develop
会检测本地是否有develop分支,没有的话就去远程中找,并且跟踪远程分支并在本地创建develop分支本地develop分支:
git push origin develop
直接将本地分支提交到远程
git rebase master
: 将当前分支的base变为master, 变为线性结构