工作中使用 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 后提交前史的改动情况

作业中运用 Git 解决问题的场景

不明白单分支的优点,可以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 的四大作业区域

四大作业区域

作业中运用 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 的?

发表回复

提供最优质的资源集合

立即查看 了解详情