git常用操作汇总大全

  • 👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,入职小红书广告投放开发,很高兴认识大家
  • 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦
  • 🍂博主正在努力完成2024计划中:校招入职,稳扎稳扎
  • 📝联系方式:nhs19990716,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬👀

前言

对于程序员来说,熟练的掌握git操作是最基本的东西了,只不过会被大多数校招生或者刚工作的人所遗漏,总是过分的关注技术,但是连基本的git操作都不曾熟练掌握,因此本文章在这里为大家介绍一下。

工作中git基本操作

git配置

首先需要安装git 并且配置 git的一些基本信息(这些信息一般公司都会提供,所以按照公司要求配置即可)

idea中使用git拉项目

一般来说 配置好了以后,从idea中远程 clone到本地,需要,file --> new --> Project from Version Control 填写好对应的clone地址即可。

此时项目就clone下来了。其实针对git来说 操作其实就有数的几个 add commot push,以及每次都要去master pull下来最新的分支。但是针对这种情况又会有多种操作,比如说merge 和 rebase(重点)。

git约定俗成

按照约定俗成,一般来说,每次开发新需求都要新建一个新的分支,具体的分支命名要按照项目 + 团队的风格!!!(这个很重要)

新分支都是从master创建的,理论上新分支push上的版本其实是优先于master的,但是会出现这样的一种情况,因为大家都是多个分支并行开发,别人的分支合并进master,而你自己的分支还是依赖于之前的master。

出现以上这种问题,说明master分支的代码领先于自己的分支,此时需要将master分支代码合并到自己的分支上。因为在我的分支正在开发中,同事完成的分支被合并了,此时的master又被更新了一次,而我的分支仍然是没有合并同事之前的master,所以此时我的分支就落后于master了,所以此时我需将master上的新代码合并到我自己新建的分支上来。

这个其实就涉及到了两个比较关键的技术了,merge 和 rebase。

git stash

git stash的功能其实概括起来就是,当前的分支还没有commit,但是需要切出去,所以需要暂存下这些修改,毕竟如果还没有commit的话,你切出去,实际上本次修改的代码其实就没有了,通过这种方式,可以很方便的切出去,等到切回来的时候,使用git unstash即可。

给大家举一个例子吧。

比如说你正在开发一个新分支,但是远程的master更新了,但是你本地的master还没有更新,那么你提交代码的时候,你肯定是要和线上最新的master合并了,然后再提交自己的新分支呀。那么这个其实就能用到了git stash了。

首先git stash,然后切换master,然后pull master更新,然后切换回去新分支,git unstash,然后merge合并master的变更,然后解决文件冲突,然后push,这样就能保证新分支时依赖于最新的master版本。

merge的常见问题

修改远程仓库代码:

在这里插入图片描述

修改本地仓库代码:

在这里插入图片描述

提交本地仓库代码并拉取,发现代码产生冲突,点击Merge进行合并:

在这里插入图片描述

点击箭头将左右两侧代码合并到中间区域:

在这里插入图片描述

冲突合并完成后,点击Apply生效:

在这里插入图片描述

提交代码并推送到远程。

git提交版本

点击idea左侧的git就能看到各个分支的版本历时树了。

单击左下角git即可。还是和 git stash相关的是,如果切换出去分支就要add commit一次,那么其实就会在git 提交版本历史中有一个不美观的版本结构树。因此还是需要广泛使用git stash 和 git unstash

git 回滚

这个功能是有的时候,一不小心在master分支上,git unstash了一下,导致错误了merge冲突,这个时候,完全可以点击 git rollback,然后回滚回去就可以了。

git 更新最新的分支情况

b新分支push上去了,a分支待合并,但是在merge中找不到对应push上去的b分支,针对这种情况,需要在idea上的控制台输入:git fetch

新分支每次push前是基于最新的master

每次push分支之前,都需要和 master merge一下,防止给别人带来额外的merge冲突。

merge 和 rebase(具体内容都是参考博客:流浪在世界的博客内容,图片也是借用,再次声明!!!)

rebase本质点来说可以使得你的代码的版本提交树是线性的,而merge却不是,会有很多分叉,感觉不太美观,当然最终怎么样取决于 团队开发的约定俗成。

git rebase应用

先准备好一个主基线:

在这里插入图片描述

在此基础上创建一个分支:名字为fenzhi_1,创建另一个分支,名字为fenzhi_2

在这里插入图片描述

在这里插入图片描述

最开始fenzhi_1和fenzhi_2以及master的基线是同一个。

同一分支的rebase操作

当前分支为fenzhi_2,共有三个提交记录:

在这里插入图片描述

在第一次修改上进行右击鼠标:选择图中的选项,翻译一下就是在此处进行交互式改变基址。
交互式可以理解为可自定义的选择不同rebase行为进行操作。

在这里插入图片描述

然后就会出现这个页面,点击squash进行合并即可。

在这里插入图片描述

在这里插入图片描述

执行结果看一下:

在这里插入图片描述

如果自己分支的几个提交都是本地的,还没有提交到远程分支fenzhi_2上,那么就可以直接push推到远程,但一般我们总要合自己代码到dev/test,所以必然是已经提交到自己远程分支上了, 此时当你去push你的commit时,会再次与你远程分支的commit合并,之前本地rebase的那些commit又会出现了。

若选择force push呢,翻译过来就是强制推送,看一下操作结果:有个提示,翻译一下就是:强制推送,可能会覆盖远程服务器的提交。

在push中选择 force push。

若这个远程分支只有你一个人在开发:强制推送是可以的,没有人会在你rebase没完成时提代码,可以直接理解为用你本地分支的状态区覆盖掉远端origin分支的状态,也就是执行过后,本地的分支什么样,远端分支就什么样

分支跟master之间的rebase操作

Rebase的本意是改变基线,意思就是当从master拉取的分支1开发一段时间后,master也提交了几个版本,这就使得分支1的基线与现在的master不是同一个版本。需要将分支1的基线改成最新master。那就需要rebase操作了。看案例效果:

看一下fenzhi_2的基线是在提交id为1639f5db的基础上拉的分支,然后做了俩次变更

在这里插入图片描述

再看一下master的提交记录:master在 1639f5db上提交了一次变更。

在这里插入图片描述

这就造成了fenzhi_2的基线不是最新的master了,现在要将fenzhi_2的基线改为提交id为f7ec72e7,看下面操作
本地分支改为fenzhi_2:

在这里插入图片描述

在master上右击鼠标:第二步操作翻译一下就是在master基础上改变fenzhi_2的基线。

在这里插入图片描述

点击操作:若看到有冲突,手动处理一下即可,

在这里插入图片描述

可以看到同一个位置都有改动,这就根据实际情况合并代码了,这里我的目的是master的改动和本分支的改动都要保留。

在这里插入图片描述

解决完后,会自动弹出一个窗口:是提交信息的修改,这个也是根据实际情况定,这里我不改,点击继续rebase。

在这里插入图片描述

看结果:提交id为f7ec72e7的成为了fenzhi_2的基线。

在这里插入图片描述

接下来push:可以看到push有俩个操作,一个push一个是force push(强制推送)。

在这里插入图片描述

若分支是自己使用,那我们就强制推送。本地的分支提交记录覆盖远程的。

上面的操作是分支改变基线,那反过来操作呢,在master上rebase呢。

看一下分支fenzhi_3:这个分支做了俩次变更

在这里插入图片描述

Master也做了俩次变更

在这里插入图片描述

在master上进行rebase onto fenzhi_3:

在这里插入图片描述

可以看到有个提示:

在这里插入图片描述

大概意思就是会对master的提交记录进行修改,看下执行结果:

在这里插入图片描述

发现分支的提交记录在master记录之前,这个与merge操作是相反的。继续操作push

在这里插入图片描述

可以看到上面提示,若点击合并呢:可以看到分支的提交跟master在一条线上,但最上面又有一条合并记录。

在这里插入图片描述

若点击的是rebase呢:可以看到是将分支fenzhi_3的提交放在了最前面。这个操作就模拟了代码merge,但提交记录是一条线。这个才是我们的本意。

在这里插入图片描述

  • 26
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python Git常用命令大全Git是现代化的版本控制系统,常被用于软件开发,协作和管理。它允许在开发过程中创建和管理不同的版本,跟踪文件的更改,以及支持团队合作。Python则是一种广泛应用于开发Web应用程序以及数据科学和人工智能领域的高级编程语言。在使用Git时,Python的代码可以与Git进行集成。这里是Python Git常用命令的大全: 1. git init:初始化一个新的 Git 仓库。 2. git clone:从现有的 Git 仓库克隆项目,可以是本地仓库或远端仓库。 3. git add:将文件添加到 Git 仓库中。git add . 可以添加所有更改。 4. git commit:将所有已添加的文件提交到本地 Git 仓库中。 5. git status:查看当前工作目录中 Git 仓库的状态。 6. git log:查看提交记录。 7. git push:将本地 Git 仓库的更改推送到远端仓库。 8. git pull:将远端 Git 仓库的更改拉到本地仓库。 9. git branch:创建新的分支。 10. git checkout:切换分支。 11. git merge:将一个分支的更改合并到另一个分支。 12. git revert:撤销一个提交。 13. git rebase:将一个分支的修改合并到当前分支。 14. git config:配置 Git。 15. git remote:管理远端仓库。 这是Python Git常用命令的大部分命令,但这并不是全部。在使用Git和Python时,这些命令应该是最为重要的。无论是在个人项目中还是团队合作中,这些命令会让你更加高效地使用Git,并保护你的代码免遭不可挽回地灾难。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃芝士的土豆倪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值