这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
前言
GIt作为开发工程师必备的技能是必须要掌握的。本文将分享我在青训营期间学到的一些Git的常用命令。
Git的基础命令
项目初始化
git init
目录结构
tree.com ./git
查看git配置
-global 用户级别优先级居中
--system 系统级别优先级最低
--local 仓库级别,优先级最高
# 例如:
git config --global -l
# 配置用户名
git config --global user.email "youremail"
git config --global user.name "yourname"
连接远程仓库
# ssh 连接
git remote add origin_ssh git地址
# http连接
git remote add origin_http git地址
查看Remote信息
git remote --v
基本上传代码流程
# 提交新文件
git add .
# 提交信息
git commit -m "提交信息"
# 上传远端
git push -u origin 分支名
# 出现无法push的情况可能是缺少远端的某些文件,这是使用下面命令
git pull
分支相关操作
# 新建本地分支,但不切换
git branch <branch-name>
# 查看本地分支
git branch
# 查看远程分支
git branch -r
# 查看本地和远程分支
git branch -a
# 删除本地分支
git branch -D <branch-nane>
# 重新命名分支
git branch -m <old-branch-name> <new-branch-name>
# 切换分支
git checkout <branch-name>
revert命令
应用场景:
有一天测试突然跟你说,你开发上线的功能有问题,需要马上撤回,否则会影响到系统使用。这时可能会想到用 reset 回退,可是你看了看分支上最新的提交还有其他同事的代码,用 reset 会把这部分代码也撤回了。由于情况紧急,又想不到好方法,还是任性的使用 reset,然后再让同事把他的代码合一遍(同事听到想打人),于是你的技术形象在同事眼里一落千丈。
使用 git revert 回滚某次的提交
git revert 撤销某次操作,此操作不会修改原本的提交记录,而是会新增一条提交记录来抵消某次操作。
语法: git revert 针对普通 commit
git revert -m 针对 merge 的 commit
stash命令
应用场景:
某一天你正在 feature 分支开发新需求,突然产品经理跑过来说线上有bug,必须马上修复。而此时你的功能开发到一半,于是你急忙想切到 master 分支,然后你就会看到以下报错:
因为当前有文件更改了,需要提交commit保持工作区干净才能切分支。由于情况紧急,你只有急忙 commit 上去,commit 信息也随便写了个“暂存代码”,于是该分支提交记录就留了一条黑历史...(真人真事,看过这种提交)
简单使用
git stash
#修复完,要切回feature分支,只要
git stash apply
使用 git stash 的相关命令
git stash //把本地的改动暂存起来
git stash save "message" 执行存储时,添加备注,方便查找。
git stash pop // 应用最近一次暂存的修改,并删除暂存的记录
git stash apply // 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即 stash@{0},如果要使用其他个,git stash apply stash@{$num} 。
git stash list // 查看 stash 有哪些存储
git stash clear // 删除所有缓存的 stash
git merge 和 git rebase 的区别
不同于 git rebase 的是,git merge 在不是 fast-forward(快速合并)的情况下,会产生一条额外的合并记录,类似 Merge branch 'xxx' into 'xxx' 的一条提交信息。