工作中使用 Git 解决问题的场景
简略来说,就这七点:
运用 git rebase 让提交记载愈加清楚可读
运用 git reflog + git reset 跳到恣意 commit
运用 g电脑黑屏却开着机it cherry-pick 获取指定的 comgiti轮胎mit
运用 git cgitlab搭建ommit –amend 更改提交内容
运用 git reappstorevert 回滚某次的提交
运用 git stash 来暂存git命令文件
配备 gapproachit alias 前进作业效率
运用 ggitiit rebase 让提approve交记载愈加清楚可读
rebase 底子用法
rebase 翻译为变基,appreciate它的gitlab登录作用和 merge 相似giticomfort是什么轮胎,用于把一个分支的批改吞并到其时分支
如下图所示,通过 rebagitlab拉取代码到本地se 后提交前史的改动情况
不明白单分支的优点,可以giti在看看知乎的这个问题:Ggitlab设置中文it cgitlab运用教程ommits前史是怎么做到如此清爽的?
Vue 的作电脑怎么录屏者尤雨溪便是说:多用 rebase
具体用法:
- 根据 mastgitlab中文官网er 分支创立 fegitlab是干giti什么用的ature 分支
- 在 featgitlab中文官网ure 分支上开gitlab登录发功用点
- master 上也提交了commitapplication
- 在 featapproveure 分支上履行
git rebase master
,意为以 master 分支最终的提gitlab登录交作为appear基点,逐个运用 feature 的每个更改
git rebase VS git merge
吞并分支有两种,即 rebase 、merge
merge 翻译为吞并,即 git merge branchname
,即吞并分支代码,这种办gitlab是干什么用的法会保存每次 commit 的,当你运用 gitk 查看时就发现好几条色彩的线
另一种是 rebase,即去除一系列的提交记appetite载,“gitlaappointmentb建立仿制”它尤雨溪个人资料们,然后在另一个当地逐个放下去
所以 rebase 的优势就明了了,它能发明更清楚的提交记载
但 merge 会保存你全部的gitlab建立 com电脑安全模式mit 的前史时刻,当开发人员一多,前史记载就会变得紊乱
rebase 的交互方式
在开发中,通常会在一个分gitlab登录支上发生许多无效的提交,这种情况下运用 rebase 的交互方式可以把多次 commit 压缩成一次提交,得到一个洁净的提交前史
# 先看提交
git log
# f9f6f3b commit 3
# 2feb45f commit 2
# 07a3cb6 commit 1
# 我们要批改 2 的话,rebase 到它的下一个 commit,这儿是 1
git rebase 07a3cb6 -i
# 然后在翻开的对话框里面批改,之后还要一个 rebase continue
git rebase -i <base-commit>
# 或许是 git rebase -i HEAD~2 对最近的两次 commit 进行吞并
也有人称之为后悔药apple功用,即你不论写什么 commit电脑截图,最终都可以批改,不论提交什么,都可appearance以吞并,DIY性强
运用 git reflog + git re电脑蓝屏set 跳到恣意 commit
换个说法叫时光机,即通过电脑锁屏快捷键查找全部分支的全部操作记载(包含现已被删去的 commit 记载和 reset 的操作),通过 reset HEAD 跳到指定 commit
git reflog
#afa2f45 HEAD@{10}: checkout: moving from 今天 to 明日
#4abcda5 HEAD@{11}: commit: 打通1800处仙窍
#de42069 HEAD@{12}: commit: 真言轮经大成
git reset HEAD@{10}
# 或许 git reset --hard afa2f45
如此gitlab官网一来,就回到了 afa2Gitapplef45 commit 处APP,了解「时刻规律」、「时光机」的人都知道,这是回到gitlab官网以前
运用 git cherry-pigiti轮胎ck 获取指gitlab运用教程定的 commit
意为“gitlab中文官网挑拣”提交电脑快捷键,和 merge 吞并一个分支的application全部提交不同,它会获取某个分支的单个提交,并作为一个新的提交接入到其时分支上
这个需求故事布景github中文官网网页才简单了解
张三在分支上开Git发功用,每个功用点gitlab提交一次commit,共六个提交六approve个功用点(分APP别是 feature1~featugitlab官网re6),再回到第一gitlab登录个提交点,即他运用 git reset --hard feature1
跳转第一个 commgit命令it,在此基础上开发一个新功用,即 feature7,那么如果把 feature7 吞并到 feature6gitlab搭建 上怎么做?
git reflog
# git reflog 查看全部分支的全部操作记载(包含现已被删去的 commit 记载和 reset 的操作)
# 找到 feature7 的 commit 4c97ff3
# 回到 feature6 的 commit cd52afc
git reset --hard cd52afc
# 运用 cherry-pick 拿到 feature7 的代码
git cherry-pick 4c97ff3
具体可看小蝌蚪的这篇 小蝌蚪列传:git时光络绎电脑机–github中文官网网页女神的侧颜 来体会一二
简略来说,你的每一次 commit,便是一次记载,可以吞并到GitLab恣电脑怎么录屏意当地。giti所以开发功用点或许批改bug之类,尽量做appointment到一个功用点一个commit,便利出错时挑拣代码
运用 git commit –amend 更改提交内容
amegitlab拉取代码到本地nd 的电脑开不了机意思是批改
# 继续改动你的文件
git add .
git commit --amend --no-edit
# 你这次的改动会被添加进最近一次的 commit 中
吞并到前gitlab安装次Git的commigitlab拉取代码到本地t 中
git commit --amend
:弹出让你批改内容
git commit --amend --no-edit
:保持上一次的commit内容
PS:假设你的代码现已 pappearush 了的话git教程,要慎用,因为会批改提交前史。
运用 git revert 回滚某次的提交
上文提giti轮胎到一个回滚操作:git rgiti轮胎eset --hard xxx
,能回到某次的 commit,除此之外,还有一种Git则是能吊销某次 commit
# 先找到你想吊销的那个 commit hash值
git log
git revert <commit-id>
这种做法会新建一条cgitiommit 信息,来撤回之前的批改。
而 git res尤雨溪个人资料et 会直接提交记载退回到指定的 cappointmentommit 上。
所以就个人开发或个人 feature 分支而言,可以运用 git电脑怎么录屏 reset
来回滚代码,但在多人协作的集成分支电脑快捷键上,git revert
更适合。这样,提交的github中文官网网页前史记载不会被抹去,可以安全地进行撤回
运用 git stash 来暂存文件
顾名GitLab思义,便是把本地的改动暂存起来
先了解下 git 的四大作业区域
四大作业区域
W尤雨溪orkspacegitlab建立(作业区):本地电脑所见的文尤雨溪件和目录
I尤雨溪ndapplicationex/St电脑截图快捷键age(暂存区):一般存gitlab放在
.git
目录下,当你git add 改动文件
,改动的文件就放入在「暂存区」Respository(本地仓库):当你
git clone 地址
,就将远程仓库克隆到本github中文官网网页地仓库。它是存在本地的版别库,其间HEAD指向最新放入仓库的版别。apple当你履行git commit
,文件改动就到本电脑截图地仓库Remote(远程仓库):相似Github、Gitgiti轮胎lab、码云等放在代git教程码保管途径
常见的场景是你还在开发一个gitlab安装功用点的时分,突然有个线上 bug 需求你紧急批改,这次你可以git commit 提交到本地仓库,后续通过 git commit --amend
继续在原 commi电脑t 上批改内容。但这儿还有一种办法,行将代码存在暂存电脑快捷键区,等 bug 批改完gitlab后,再从电脑怎么重装系统暂存区取出
底子指令如下:
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 ls-files --stage #查看 index 暂存区
配备 git alias尤雨溪 前进作业效尤雨溪个人资料率
首要是为了简化指令,它的底子用法是 git config --ggitlab登录lobal alias.<简化的字符> 原始指令
如下面的比方git教程approve:
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.br branch
当然,另一种办法电脑黑屏却开着机是在 .gitconfiggitlab运用教程 文件中设置
[alias]
st = status -sb
co = checkout
br = branch
mg = merge
ci = commit
ds = diff --staged
dt = difftool
mt = mergetool
last = log -1 HEAD
latest = for-each-ref --sort=-committerdate --format="%(committername)@%(refname:short) [%(committerdate:short)] %(contents)"
ls = log --pretty=format:"%C(yellow)%h %C(blue)%ad %C(red)%d %C(reset)%s %C(green)[%cn]" --decorate --date=short
hist = log --pretty=format:"%C(yellow)%h %C(red)%d %C(reset)%s %C(green)[%an] %C(blue)%ad" --topo-order --graph --date=short
type = cat-file -t
dump = cat-file -p
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
参阅政采云的配备appear
除此之外
还有一些不常见却好用的指令
-
gitk
:翻gitlab官网注册入口开git的图git教程形化东西 -
gitjk
:撤消您刚刚在gGitLabit中所做的操gitlab拉取代码到本地作 -
git help -g
:展现帮助信息 -
cat .git/HEAD
:查看分支文件 -
git fetch --al尤雨溪个人资料l &&github中文官网网页amp; git reset -gitla尤雨溪b安装-hard ogitlab是干什么用的rigin/master
:回到远程仓库gitlab登录的情况- 扔掉本地全电脑部的批改,回到远程仓库的情况
-
git push电脑截图 -f originappreciate master
:强行覆盖远程master
参阅资料
- git 时光穿gitlab是干什么用的梭机
- 我在作业中是怎么Git运用 git 的
- 程序员必会的六条黄金 Git 指令,让你效率前进百分之百
- Oh Shit,APP Git!?appearance!
- 我是怎么运用 git 的?