Git的使用 | 青训营笔记

103 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第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' 的一条提交信息。