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…

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…

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

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

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

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

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

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

C++异常的规则

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

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

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

C++ STL详解(1)

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

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

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

C++ STL详解(2)

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

斐波那契数列的四种实现方式(C语言)

点击蓝字关注我们来源自网络&#xff0c;侵删斐波那契数列是一组第一位和第二位为1&#xff0c;从第三位开始&#xff0c;后一位是前两位和的一组递增数列&#xff0c;像这样的&#xff1a;0、1、1、2、3、5、8、13、21、34、55......今天&#xff0c;我们用四种方式来进行实现…

linux make命令_第一章 1.3Linux下安装Redis

1.3.2 Linux下安装Redis第一步: 去官网下载安装包 ,传送门第二步: 上传到Linux服务器,解压redis的安装包tar -zxvf redis-6.0.8.tar.gz这里我已经解压好了,并且移动到了redis目录下第三步: 安装基本环境yum -y insatll gcc-c这里注意一个问题,Centos下安装的gcc默认版本为4.8.5…

C语言strcpy函数的使用

点击蓝字关注我们strcpy简单使用&#xff1a; #include <stdio.h> #include <string.h>struct Student {int sid;char name[20];int age;} st; //此处分号不可省略int main(void) {struct Student st {1000,"zhangsan",20};printf("%d %s %d\n&…

什么镜头最适合拍风景_为什么您的风景摄影套件中应始终装有远摄镜头

当您考虑风景摄影镜头时&#xff0c;许多摄影师只考虑广角镜头。14-24mm f / 2.8或24-70mm f / 2.8等经典镜头是用于风景的流行光学元件。它们是绝佳的选择但是&#xff0c;也值得在风景摄影套件中使用长焦镜头。为什么要使用长镜头进行风景摄影&#xff1f;您在网上或浏览Inst…

C++ STL详解(3)

点击蓝字关注我们简介set 是 关联容器 的一种&#xff0c;是排序好的集合&#xff08;元素已经进行了排序&#xff09;。set 和 multiset 类似&#xff0c;它和 multiset 的差别在于 set 中不能有重复的元素。multiset 的成员函数 set 中也都有。使用 set 必须包含 #include<…

检测到基于堆栈的缓冲区溢出_检测到堆栈粉碎

检测到基于堆栈的缓冲区溢出我敢打赌&#xff0c;每个Java开发人员在他们的职业生涯开始时第一次遇到Java代码的本机方法时都会感到惊讶。 我还可以肯定&#xff0c;多年来随着了解JVM如何通过JNI处理对本机实现的调用而使惊奇消失了。 这篇文章是关于本机方法的最新经验。 更…

探讨 C++ 虚函数 virtual

点击蓝字关注我们来源于网络&#xff0c;侵删有无虚函数的对比C 中的虚函数用于解决动态多态问题&#xff0c;虚函数的作用是允许在派生类中重新定义与积累同名的函数&#xff0c;并且可以通过基类指针或引用来访问基类和派生类中的同名函数。首先写两个简单的类&#xff0c;类…

C++ STL详解(4)

点击蓝字关注我们来源于网络&#xff0c;侵删unordered_set / unordered_multiset这两个容器的方法与上一篇 C STL简介&#xff08;3&#xff09; 提到的 set / multiset 基本一样。但是要注意的是&#xff1a;这两个是无序的&#xff0c;基于哈希表实现的&#xff0c;增删改查…

js压缩图片_Web 性能优化: 图片优化让网站大小减少 62%

图像是web上提供的最基本的内容类型之一。他们说一张图片胜过千言万语。但是如果你不小心的话&#xff0c;图片大小有时高达几十兆。因此&#xff0c;虽然网络图像需要清晰明快&#xff0c;但它们尺寸可以缩小压缩的&#xff0c;使用加载时间保持在可接受的水平。在我的网站上&…