Git学习——细节补充

这篇具有很好参考价值的文章主要介绍了Git学习——细节补充。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Git学习——细节补充,Git,git,学习,elasticsearch
1

1. git diff

如果忘记了修改了什么,可以使用此命令进行变更详情查看。

# 1. 查看当前目录指定文件与(暂存区)目录该文件之间的区别
git diff hwy.txt	
# 2. 查看当前目录,所有文件变更情况
git diff
# 3. 查看当前目录,与(最新的提交`HEAD`)之间的差异
git diff HEAD -- cxk.txt

Git学习——细节补充,Git,git,学习,elasticsearch


Git学习——细节补充,Git,git,学习,elasticsearch


Git学习——细节补充,Git,git,学习,elasticsearch


Git学习——细节补充,Git,git,学习,elasticsearch


2. git log

git log		# 详细的查看历史的所有commit版本

Git学习——细节补充,Git,git,学习,elasticsearch


3. git reset

# 回退历史版本
git reset --hard HEAD^		# 回退到上一个commit版本
git reset --hard HEAD~5		# 向前回退5个commit版本
git reset --hard st34f2r	# 变更到指定某一个版本

Git学习——细节补充,Git,git,学习,elasticsearch


4. git reflog

由于后退到某个历史版本后,git log就不会输出该版本之后的提交id,可以通过查看git命令执行日志,找到对应的提交ID,在进行commit版本变更。

git reflog

Git学习——细节补充,Git,git,学习,elasticsearch


5. 提交撤销

5.1 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时

git checkout -- cxk.txt			# 1. 撤回指定文件工作区中的修改

Git学习——细节补充,Git,git,学习,elasticsearch


5.2 当提交到了stage区后,想要退回

git reset HEAD cxk.txt

Git学习——细节补充,Git,git,学习,elasticsearch

  • 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout – file。
  • 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。
  • 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

6. git remote

# 1. 新建与远程仓库的链接
git remote add origin git@github.com:username/project_name.git

# 2. 删除与远程仓库的链接
git remote -v			# 查看有哪些远程仓库链接
git remote rm xxxxxx	# rm删除与远程仓库的链接

Git学习——细节补充,Git,git,学习,elasticsearch


7. git pull origin master --no-rebase

# 当遇到本地仓库有自己独有的文件,远程仓库有独有的文件,合并两个仓库
# 1. 重新生成一个提交,用于合并本地分支和远程仓库分支
git pull origin master --no-rebase

# 2. 采用变基(rebase)策略,将本地分支的所有提交,在远程分支最新提交上”重新播放“,从而达到一个线性的提交历史
git pull origin master --rebase

Git学习——细节补充,Git,git,学习,elasticsearch


8. 分支管理

git checkout -b dev		# 快速创建一个dev分支,并切换到该分支

# 等价于如下
git branch dev
git checkout dev		

Git学习——细节补充,Git,git,学习,elasticsearch

# 合并dev到当前所在分支
git merge dev

Git学习——细节补充,Git,git,学习,elasticsearch

  • 需要切换到指定分支,然后再将dev分支合并到指定分支.
  • 创建分支,实际上只是创建了一个指向当前commit的一个指针,上述merge将会采用Fast-forward策略,快速合并;这是因为这种合并只是将master指针指向了dev当前commit所在的版本位置。
  • 随后直接删除dev即可

9. git rebase

当本地分支需要与远程分支同步,但是远程分支已经有了新的版本,因此无法直接git push.

此时,需要先git pull origin master,将远程的分支与本地进行合并,但是这样一来,就会有很多分叉的历史提交线.

为了保证美观,因此可以考虑使用变基(rebase)

这里我演示一下rebase的工作原理

任务:

  • 新建并切换到 bugFix 分支
  • 提交一次
  • 切换回 main 分支再提交一次
  • 再次切换到 bugFix 分支,rebase 到 main 上
# 1. 创建bugFix分支,并切换过去
git checkout -b bugFix

Git学习——细节补充,Git,git,学习,elasticsearch

2. 在bugFix分支提交一次,随后切回到main分支(这里就不打命令了)

Git学习——细节补充,Git,git,学习,elasticsearch

3. 在main分支commit一次(这里就不打命令了)
git checkout bugFix		# 切到bugFix分支

Git学习——细节补充,Git,git,学习,elasticsearch

# 4. 执行rebase合并(变基合并)
git rebase main

Git学习——细节补充,Git,git,学习,elasticsearch

rebase工作原理可以解释为如下:

  • c1->c2的变更操作,应用到main分支的最新提交位置,从而达到合并的效果。
  • 因此,在main分支的最新提交处c3,新增了一个提交操作,从而到达了c2’;c3->c2'的文件变更情况与c1->c2一样

为了更详细的展示,这里举了一个多次commit的例子。

如下图,可以看到:

  • bugFix的提交过程为C1->C2->C3
  • main的提交过程为C1->C4->C5

执行rebase命令后,则会将C1->C2->C3的版本变更操作,执行到main分支的最新提交C5上;

从而得到一个使得历史提交版本线像是在同一条线上进行的,更加美观。
Git学习——细节补充,Git,git,学习,elasticsearch

PS: merge和rebase的用户不同之处

  • rebase:如果需要将A分支合并到B分支,则需要先切换到A分支,然后执行git rebase B,有种基于B,把当前分支提交合并进去的意思;
  • merge:如果需要将A分支合并到B分支,那么直接切到B分支作为骨干,执行git merge A,有种将A拉过来合并的意思。

10. git cherry-pick(选择性提交)

# 顾名思义,筛选,挑拣。
# 意思是指定一些commit,合并到当前所在分支。
git cherry-pick c3 c4 (可接多个提交版本)

举个例子,下图共有4个分支,当前处于main分支,现在想要吧c3,c4,c7三个提交,合并到main分支上。

Git学习——细节补充,Git,git,学习,elasticsearch

神奇的事情来了,通过执行如下命令,完成筛选合并。

可以发现,main分支从当前位置c1开始,依次提交c3 c4 c7

git cherry-pick c3 c4 c7

Git学习——细节补充,Git,git,学习,elasticsearch

总结

最后,个人学习过程中用到的网站如下:

  • 基础概念:廖雪峰-git教程
  • 模拟实战:Learn Git Branching
  • 本地模拟:在本地模拟一个git远程仓库

2023.09.01


  1. 工作区和暂存区 ↩︎文章来源地址https://www.toymoban.com/news/detail-703084.html

到了这里,关于Git学习——细节补充的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用IDEA工具处理git合并后的冲突的细节

    使用 IDEA 处理合并(merge) 使用IDEA处理git合并如果遇到冲突,对冲突文件的不冲突部分需要处理吗?会自动将双方不冲突的部分合并吗? 比如如下,使用 IDEA 合并 branch1 到 branch2 分支,出现了冲突,如下图: 如果处理好冲突,得到如下图: 我的问题是,绿色的部分如果不更新

    2024年02月03日
    浏览(56)
  • Opencv 细节补充

    1.分辨率的解释 2.RGB转Gray的五种算法: 3.RGB转换为浮点数  

    2024年02月15日
    浏览(25)
  • 网络编程(11):三次握手和四次挥手部分细节(后续补充)

    关于listen 服务器如果不listen,TCP协议栈就无法从CLOSED状态变成LISTEN状态, 客户端发起连接,TCP协议栈会直接返回RST报文,从而导致客户端连接失败 关于accept accept发送在三次握手完成之后,从全连接队列中取出一个节点分配sock文件句柄 ,如果没有accept还是可以完成三次握手

    2024年02月14日
    浏览(41)
  • 干翻Dubbo系列第四篇:Dubbo3第一个应用程序细节补充

    1:协议端口 补充说明1: 显示指定Dubbo服务启动的端口号:一个服务器上起多个Provider都这样显示的指定port端口号的话,会造成端口号冲突。 解决方式:我们可以port设置为-1,服务启动时默认采用20880(dubbo协议默认端口),此端口被占用默认会+1,一直到加端口不占用为止。

    2024年02月15日
    浏览(42)
  • Spring Authorization Server入门 (三) 集成流程说明、细节补充和各种方式获取token测试

    在上一篇文章中的AuthorizationConfig.java配置类中,类上有三个注解,分别是@Configuration、@EnableWebSecurity和@EnableMethodSecurity注解,虽然在类中有注释,但是这里在细讲一下,同时放一下官网的说明 @EnableWebSecurity 加载了WebSecurityConfiguration配置类, 配置安全认证策略。 加载了Authenti

    2024年02月11日
    浏览(44)
  • 文件搜索引擎的搭建Elasticsearch+Fscrawler+SearchUI+Git+Nginx

    搭建一套文档搜索引擎。有时候,我们有一批文档,需要在这批文档中查找想要的内容,此时想要找到文档里面的内容就变的很麻烦。本文将介绍如何搭建一套文档搜索引擎。 一台Cenos 7.x 的服务器 支持Docker NodeJs环境 支持nodejs和npm 安装命令 支持git命令 如下服务均搭建在同

    2024年02月10日
    浏览(46)
  • Git教程学习:09 Git分支

    几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着我们可以把我们的工作从开发主线分离开来,从而影响开发主线。在很多版本控制系统中,效率稍低这个过程——通常需要完全创建一个源代码目录的副本。对于大项目来说,这样的过程会消耗很多时间。 有人

    2024年01月20日
    浏览(35)
  • Git教程学习:08 Git别名

    Git 并不会在我们输入部分命令时自动推断出我们想要的命令。我们可以通过文件来轻松地 git config 为每个设置一个别名。一些示例: 这意味着,当要输入 git commit 时,只需要输入 git ci 。随着我们继续不断地使用 Git,可能还会经常使用其他命令,所以创建别名时不要犹豫。

    2024年01月19日
    浏览(37)
  • 《Git学习笔记:IDEA整合Git》

    通过Git命令可以完成Git相关操作 ,为了简化操作过程,我们可以 在IDEA中配置Git ,配置好后就可以 在IDEA中通过图形化的方式来操作Git 。 在IDEA开发工具中可以集成Git: 集成后在IDEA中可以看到Git相关图标 :   在IDEA中使用Git,本质上还是使用的本地安装的Git软件 ,所以需要

    2024年01月20日
    浏览(45)
  • 【Git】更直观地学习Git命令

    本文参考于 Learn Git Branching 这个有趣的 Git 学习网站。 在该网站,可以使用 show command 命令展示所有可用命令。 你也可以直接访问网站的sandbox,自由发挥。 git commit git commit 将暂存区(staging area)的修改提交到本地版本库并创建一个新的提交,新提交会指向前一个提交,像是

    2024年02月07日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包