git gui 历史版本_这些Git命令都不会,还是不要去面试了

前言

以下,项目中经常使用的Git命令,汇总到这里以便与你能快速的学习和掌握Git命令,在文章最后有惊喜哟,一定要看到最后啊!

使用的 Git版本:git version 2.24.0

命令

git log
# 输出概要日志,这条命令等同于# git log --pretty=oneline --abbrev-commitgit log --oneline
# 指定最近几个提交可以带上 - + 数字git log --oneline -5
# 提供类似 GUI 工具的 log 展示git log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset'

查看日志,常规操作,必备dad53ae1e5a6288ad6163480ad5b301f.png

git status

查看工作区状态的东东,不如GUI直观,但是命令行也有一些用的

git statusgit status -sgit status --show-stashgit checkout

用来切换到对应记录的,可以基于分支,提交,标签。

切提交和标签一般用来热修复或者老版本需要加新特性。

git checkout dev

git checkout origin/test

git checkout --track origin/feature-test

git checkout -b testbranch

git checkout -- file

git checkout .

git checkout -

git commit

天天打交道的命令,这里说一些很常见的姿势

git commit --amend --no-edit

git commit --no-verify -m "xxx"

git commit -m "xxx"

git commit -t templateFile

git commit -F

git reset

不得不说,代码回滚中这个命令也是用的很多,而且是 --hard

git reset --hard commit_sha1git reset --soft commit_sha1git reset --soft HEAD~1git reset --mixed commit_sha1git reset --merge commit_sha1git reset --keep commit_sha1

git revert

一般用于master 的代码回滚,因为多人在上面协作,

revert 可以平稳的回滚代码,但却保留提交记录,不会让协作的人各种冲突

git revert commit-sha1

git rebase

变基在项目中算是很频繁的,为什么这么说。

比如你开发一个新的 feature, 遵循最小化代码提交的理念。

在整个功能开发完毕的时侯,会有非常多的 commit,用 rebase 可以让我们的commit记录很干净

git rebase -i git-sha1|branch(HEAD)git rebase --continuegit rebase --skipgit rebase --abort
  • pick: 是保留该 commit(采用)
  • edit: 一般你提交的东西多了,可以用这个把东东拿回工作区拆分更细的 commit
  • reword: 这个可以重新修改你的 commit msg
  • squash: 内容保留,把提交信息往上一个 commit 合并进去
  • fixup: 保留变动内容,但是抛弃 commit msg
  • drop: 用的比较少,无用的改动你会提交么!!!
突然发现截图还有几个新的行为,估计是新版本带来的,从字面上就可以看出来大体的意思, 就是把回滚和打标签这些放到变基中简化操作。温馨提示:
  • 本地提交之前,最好把基准点变为需要合并的分支,这样提交 PR/MR 的时侯就不会冲突(本地来解决冲突)
  • 不要在公共分支上变基!!!一变其他协作者基本都一堆冲突!除非你们有很清晰的分支管理机制

git merge

git merge --no-ff branchName

git pull

git pull中用的最多是带--rebase(-r)的方式(变基形式拉取合并代码),保持分支一条线。默认的pull会走ff模式,多数情况会产生新的commit,部分参数与 merge提供一致。

git push

当本地分支存在,远程分支不存在的时侯,可以这样推送关联的远程分支
git push origin localbranchgit push -d origin branchNamegit push --tagsgit push --follow-tagsgit push -f origin branchNamegit push --force-with-lease

git remote

这个东西用在你需要考虑维护多个地方仓库的时侯会考虑,或者修改仓库源的时侯
git remote add origin urlgit remote add github urlgit remote set-url  origin(或者其他上游域) url
git branch该命令用的最多的就是删除本地分支,重命名分支,删除远程分支了
git branch -d branchNamegit branch -M oldBranch newNameBranchgit branch --set-upstream-to=origin/xxxgit branch --set-upstream-to origin xxx

git stash

暂存用的最多时侯就是你撸代码撸到一半,突然说有个紧急 BUG 要修正。或者别人在你这里需要帮忙排查代码,你这时候也会用到。强烈建议给每个 stash添加描述信息!!!
git stash save stashName
git stash -u save stashName
git stash push -m "更改了 xx"
git stash apply stash@{0}
git stash pop stash@{0}
git stash list
git stash clear 
git stash drop stash@{0}
git stash show stash@{0}

git reflog

这个命令的强大之处,是记录了所有行为,包括你 rebase,merge, reset这些当我们不小心硬回滚的时侯,或变基错了都可以在这里找到行为之前的commit,然后回滚。当然这个时间回溯也只在本地有用,你推送到远程分支的破坏性改动,该凉还是得凉。
git reflog -5

git cherry-pick

这个东西你可以理解为你去买橘子,你会专门挑一些符合心意的橘子放到购物篮中。你可以从多个分支同时挑取部分需要的 commit 合并到同一个地方去,是不是贼骚。这货和变基有点类似,但是仅仅类似,挑过来的 commit 若是没有冲突则追加。有冲突会中断,解决后 --continue
git cherry-pick commit-sha1git cherry-pick master~4 master~2git cherry-pick startGitSha1..endGitSha1

git rm

这个命令在旧的版本用的比较最多的姿势是为了重新索引.gitignore 的范围
git rm --cache -- filegit rm -r --cached .git add .git commit -m "xxx"

git rev-parse

这个估计一般人用的不是很多,可以通过这个快速获取部分git 仓库的信息我在弄脚本的时侯就会从这里拿东西
git rev-parse --short HEAD --verifygit rev-parse --show-toplevelgit rev-parse --git-dirgit rev-parse --all

git diff

对于这个命令,在终端比对用的不是很频繁,除了少量改动的时侯可能会用这个看看。其他情况下我更倾向于用 GUI 工具来看,因为比对更加直观。

总结

git 的常用命令其实很好掌握,很多命令都有 Linux 的影子。列出来的命令都是高频使用的,或许有一些更骚的姿势没有摸索到,有更好建议的,或者发现不对之处的请留言,会及时修正,谢谢阅读。

bed8184e0931d7226b027c13d2532033.png

bf636395c672d8345d1fbaa8a5d60e30.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337382.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java restful_Java EE中的RESTful计时器

java restful在这篇文章中...。 EJB计时器旋风之旅 通过带有示例实现的简单REST接口即时使用EJB计时器 更新(2015年7月14日) 该应用程序的前端现在可以在OpenShift上使用 。 由于我是前端新手,因此我在其他来源的帮助下组装了此HTML5 Ang…

【lua学习】1.源码组织

虚拟机核心相关文件列表内嵌库相关文件解释器,字节码编译器相关的文件做cocos2d-x lua已经有一段时间了,想更深入了解lua。我会出一系列地 自身学习过程中地解读。我会带大家沿着源码来逐步解读lua,我喜欢按照 深度优先遍历的顺序来解读源码&…

c# 联合halcon 基于相关性 模板匹配_机器视觉之halcon入门(5)-字符识别exe生成...

2.3.2 第二个halcon程序转EXE程序:字符识别老规矩,每一段halcon代码得用C#二次开发下。根据上一节所教的,我们配置下C#的环境,顺便添加好控件,如下图(2-3-2-1)。图 2-3-2-1控件基本跟上一节一样,只是少了一…

C语言数据的存储和取出(超详细讲解)

点击蓝字关注我们整形的储存我们知道一个整形的存储是以补码的形式储存取出是原码的形式。比如:int a 5;的二进制是101那它的原码应该是:00000000 00000000 00000000 00000101正数的原反补相同那它存进去和取出来都是:00000000 00000000 000…

go语言 不支持动态加载_动态语言支持

go语言 不支持动态加载本文是我们名为“ 高级Java ”的学院课程的一部分。 本课程旨在帮助您最有效地使用Java。 它讨论了高级主题,包括对象创建,并发,序列化,反射等。 它将指导您完成Java掌握的旅程! 在这里查看 &am…

【lua学习】2.数据类型

【lua学习】2.数据类型Lua中的数据类型关于TValue自顶向下分析TValue表示所有的Lua数据结构并带一个类型字段Value表示所有的Lua数据结构GCObject表示所有需要进行垃圾回收的数据结构GCheader表示需要GC的数据结构最开始的部分Lua中的数据类型 宏名 (见lua.h)宏值类型对应数据…

打印pdf就一页_PDF 文件转换工具

是将 PDF 文件转换为完全可编辑的 Windows 文档最好的转换软件。无论您需要您的内容是 Microsoft Word、Excel、PowerPoint、HTML 还是仅需要文本, 总会给您一个简单的方法,快捷地获取您要的内容。可转换整个文档或选择内容。亦可创建 PDF 文件。PDF 转换…

C++类的this指针,静态成员,友元函数友元类

点击蓝字关注我们1. this指针在上篇讲C中类,对象,封装,继承(派生),多态的时候,this指针出现在成员函数中,并使用->成员提取符操作成员变量。在 C 中,每一个对象都能通…

jooq和jdbc_将jOOQ与JDBC比较

jooq和jdbc本文是我们学院课程“ jOOQ –类型安全数据库查询”的一部分 。 在SQL和特定关系数据库很重要的Java应用程序中,jOOQ是一个不错的选择。 当JPA / Hibernate抽象过多而JDBC过于抽象时,这是一种替代方法。 它显示了一种现代的领域特定语言如何可…

【lua学习】3.字符串

【lua学习】3.字符串Lua字符串的概况字符串实现字符串结构TString全局字符串表stringtable新建字符串luaS_newlstr (先查表,再决定创建与否)新建字符串 newlstr重新设置全局字符串的大小 luaS_resize全局字符串表的缩容保留字是如何不被回收的…

【lua学习】4.表

1 概述2 数据结构2.1.表Table2.2 键TKey2.3 节点(键值对)Node3 操作算法3.1 查找3.1.1 通用查找luaH_get3.1.2 根据字符串查找 luaH_getstr3.1.3 根据整数查找 luaH_getnum3.2 新增元素/修改元素/删除元素 luaH_set系列3.2.1 根据key获取或创建一个value…

批量提取文件创建时间_批量采集新浪微博用户内容

有时我们需要把某些用户的微博数据全部采集下来用作分析,每条信息复制的工作量是非常低效的,必须要借助工具。今天给大家介绍一款采集软件:微风采集器。打开软件,选择模板,下拉框选:批量提取指定用户微博内…

C++异常的规则

点击蓝字关注我们异常是指存在于程序运行时的异常行为,这些行为超出了函数正常功能的范围,当程序的某部分检测到一个无法处理的问题时,就需要用到异常处理。1. C语言中传统的处理错误方式终止程序:如assert,当发生错误…

java中集合选取怎么选_集合中的可选

java中集合选取怎么选有时有人认为Optional类型值得在集合中使用。 据称&#xff0c;它解决了以下问题&#xff1a; HashMap在没有键映射以及值null映射到键的情况下返回null 。 如果使用Map<Optional<Something>>则可以清楚地区分缺少的映射和缺少的值。 这样一来…

【lua学习】7.环境

1 最重要的两个数据结构1.1 lua_State(Lua虚拟机/Lua协程)1.2 global_State(Lua全局状态)2 环境相关的变量2.1 Global表2.1.1 Global表在lua_State结构中2.1.2 Global表在 f_luaopen 时被初始化2.2 env表2.2.1 env表在Closure结构中2.2.2 查找一个全局变量<>在当前函数的…

异质性查询需要为连线设定_振奋人心!华东理工大学开发新型的荧光染料,为细胞成像奠定基础...

结合并激活荧光染料的适体荧光RNA(FR)已用于对丰富的细胞RNA种类进行成像。然而&#xff0c;诸如低亮度和具有不同光谱特性的染料/适体组合的有限可用性的局限性&#xff0c;限制了这些工具在活的哺乳动物细胞和体内的使用。最近&#xff0c;华东理工大学朱麟勇及杨弋共同通讯在…

C++ STL详解(1)

点击蓝字关注我们概述STL 是“Standard Template Library”的缩写&#xff0c;中文译为“标准模板库”。STL 是 C 标准库的一部分&#xff0c;不用单独安装。C 对模板&#xff08;Template&#xff09;支持得很好&#xff0c;STL 就是借助模板把常用的数据结构及其算法都实现了…

jooq 配置oracle_jOOQ配置

jooq 配置oracle本文是我们学院课程“ jOOQ –类型安全数据库查询”的一部分 。 在SQL和特定关系数据库很重要的Java应用程序中&#xff0c;jOOQ是一个不错的选择。 当JPA / Hibernate抽象过多而JDBC过于抽象时&#xff0c;这是一种替代方法。 它显示了一种现代的领域特定语言…

各种说明方法的答题格式_高中化学:选择题答题方法与知识点总结,让你轻松秒杀各种难题...

选择题是化学考试中被广泛采用的一种题型。它具有知识容量大&#xff0c;覆盖面广&#xff0c;构思新颖、灵活巧妙&#xff0c;考试的客观性强&#xff0c;答题简单&#xff0c;评分容易、客观准确等优点。 选择题按考查形式可分为三种类型&#xff0c;即&#xff1a;常规型选择…

C++ STL详解(2)

点击蓝字关注我们来源自网络&#xff0c;侵删刷题时常用的STLstring之前写过一篇 string 的简介但是不是特别全面&#xff0c;这里再补充说明一下。size()返回字符串中字符的数量#include<iostream> #include<string>using namespace std;int main() {string str …