git相关操作命令

配置 Git

#查看配置信息
git config --global --listgit config --global user.name "Your Name"
git config --global user.email "youremail@example.com"

初始化Git 仓库

git init
git clone https://github.com/username/repository.gitgit remote -v#添加远程仓库地址ssh or http/https
git remote add gitName gitPath

基础工作流

#查看文件状态
git status#将文件添加到暂存区
git add <filename>#将全部文件添加到暂存区
git add .#提交更改
git commit -m "Commit message"#将本地更改推送到远程仓库
git push origin main

分支(Branch)管理

#查看所有分支
git branch#创建新分支
git branch <branchname>#新建分支
git checkout -b <new-branch-name>#基于远程分支 新建本地分支
git checkout -b <new-branch-name> origin/<new-branch-name>#切换分支
git checkout <branchname>#合并分支
git merge <branchname>#删除分支
git branch -d <branch-name>#强制删除分支
git branch -D <branch-name>#删除远程分支
git push origin --delete <branch-name>

更新与合并

#拉取远程分支,不merge
git fetch#拉取远程分支 进行merge操作
git pull#合并其他分支到你的当前分支
git merge <branchname>
git merge --continue
git merge --abort#查看文件差异
git diff <source_branch> <target_branch>

Push

#推送分支到远程仓库
git push#推送本地分支到远程仓库分支
git push branchName origin_branchName#强制推送--force
git push -f origin branchName#将本地分支push到远程remote仓库,多个仓库添加gitName区分,gitName指向gitPath
git push gitName --all#本地和远程分支存在非fast-forward,基不一样
#允许远程分支历史版本合并,将本地和远程基合并,存在两个parent
git merge --allow-unrelated-histroys gitName/master 

分支Diff

#两个分支diff
git diff branch1 branch2 #两个分支中某个文件diff
git diff branch1 branch2 -- fileName#可以用commit_id 替换分支
git diff commit_id1 commit_id2 -- fileName

合并提交

#修改最近一次提交message
git commit --amend#修改历史提交的commit message,此处commit id是需要修改提交信息的上一次提交
#弹出rebase 信息框,修改对应的commit id,将pick改为改为r或者reword,修改对应的message描述即可
git rebase -i 4adc51cgit merge 
#合并远程分支
git merge origin/branch 
#忽略本次merge
git merge --abort
#merge 后提交一次
git commit -am 'msg'#基于master变基
git rebase master#基于master变基 合并提交
git rebase master -i#批量将pick 修改为squash
:%s/pick/squash/ggit rebase --continue
git rebase --abort

回滚更改

#撤销工作目录中所有未提交文件的修改
git checkout .#将文件回滚到上一个提交的状态
git checkout <commit_hash> <filename>#重置暂存区与工作目录,匹配最近一次的 commit
git reset --hard#删除最近几次提交
git reset --hard 4adc51c

查看提交历史

#查看提交历史
git log#查看特定文件的变更历史
git log -p <filename>#查看简洁的提交历史
git log --pretty=oneline#最近4次,一行展示,图形化展示
git log -n4 --oneline --graph#查看提交类型
git cat-file -t 4adc51c#查看提交的父提交
git cat-file -p 4adc51c

暂存区

Git 暂存区(Staging Area,也有时被称为“索引”)是 Git 版本控制系统的一个非常强大和独特的特性,它允许开发者在最终提交改动到仓库之前,对即将提交的文件和更改进行精细的审查和修改。

暂存区位于工作目录(你正在工作的文件夹)和仓库(项目的历史记录所在地)之间。

#暂存区和head diff
git diff --cached#工作区和暂存区diff
git diff#工作区和暂存区某个文件diff
git diff -- fileNme#让暂存区恢复和head一致
git reset HEAD
git reset --hard HEAD#让暂存区某个文件恢复和head一致
git reset HEAD -- fileName#让工作区恢复和暂存区一致
git checkout -- fileName

stash

用于查看工作目录的状态,显示已修改、未跟踪等文件的信息。

该命令会列出已暂存和未暂存的变更,以及未被Git跟踪的文件。这可以帮助您了解当前工作目录中的变更情况

git status#将当前工作目录中的临时变更(尚未提交)暂存起来,使其回到一个干净的工作目录状态,方便切换到其他分支或进行其他操作。
git stash#查看已经暂存的内容列表
git stash listgit status#可以将最近的暂存内容重新应用到工作目录中
git stash apply#应用的同时删除该stash
git stash pop

rerere工具

#解决rebase 多次处理冲突的问题
git config --global rerere.enabled truegit merger master#处理冲突
vim file#提交工作区
git add filegit log#本次操作会产生一次commit id
git commit -am 'temp'git log#回滚产生的temp commit id (HEAD~1 头指针的父指针)
git reset --hard HEAD~1

gitignore

doc: 这个规则表示忽略所有名为“doc”的文件或目录,无论其位于什么位置。

doc/: 这个规则表示忽略名为“doc”的目录,但不会忽略同名的文件。它只匹配“doc”这个目录,而不包括子目录。

/doc: 这个规则表示从根目录开始,忽略名为“doc”的目录或文件。它指定了路径是相对于根目录(工作树)的,而不是相对于当前.gitignore文件所在的目录。这将确保只有根目录下的“doc”会被忽略,而子目录中的“doc”不会被忽略。

更有趣的变基例子

Git - 变基

在对两个分支进行变基时,所生成的“重放”并不一定要在目标分支上应用,你也可以指定另外的一个分支进行应用。 就像 从一个主题分支里再分出一个主题分支的提交历史 中的例子那样。 你创建了一个主题分支 server,为服务端添加了一些功能,提交了 C3 和 C4。 然后从 C3 上创建了主题分支 client,为客户端添加了一些功能,提交了 C8 和 C9。 最后,你回到 server 分支,又提交了 C10。

Figure 39. 从一个主题分支里再分出一个主题分支的提交历史

假设你希望将 client 中的修改合并到主分支并发布,但暂时并不想合并 server 中的修改, 因为它们还需要经过更全面的测试。这时,你就可以使用 git rebase 命令的 --onto 选项, 选中在 client 分支里但不在 server 分支里的修改(即 C8 和 C9),将它们在 master 分支上重放:

$ git rebase --onto master server client

以上命令的意思是:“取出 client 分支,找出它从 server 分支分歧之后的补丁, 然后把这些补丁在 master 分支上重放一遍,让 client 看起来像直接基于 master 修改一样”。这理解起来有一点复杂,不过效果非常酷。

Figure 40. 截取主题分支上的另一个主题分支,然后变基到其他分支

现在可以快进合并 master 分支了。(如图 快进合并master分支,使之包含来自client分支的修改):

$ git checkout master
$ git merge client

Figure 41. 快进合并 master 分支,使之包含来自 client 分支的修改

接下来你决定将 server 分支中的修改也整合进来。 使用 git rebase <basebranch> <topicbranch> 命令可以直接将主题分支 (即本例中的 server)变基到目标分支(即 master)上。 这样做能省去你先切换到 server 分支,再对其执行变基命令的多个步骤。

$ git rebase master server

如图 将server中的修改变基到master上 所示,server 中的代码被“续”到了 master 后面

Figure 42. 将 server 中的修改变基到 master 上

然后就可以快进合并主分支 master 了:

$ git checkout master
$ git merge server

至此,client 和 server 分支中的修改都已经整合到主分支里了, 你可以删除这两个分支,最终提交历史会变成图 最终的提交历史 中的样子

$ git branch -d client
$ git branch -d server

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaWeb】网上蛋糕项目商城-注册,登录,修改用户信息,提交订单

概念 通过以上多篇文章的讲解&#xff0c;对该项目的功能已经实现了很多&#xff0c;本文将对该项目的用户注册&#xff0c;登录&#xff0c;修改用户信息&#xff0c;以及用户添加至购物车的商品进行提交订单等功能的实现。 注册功能实现 点击head.jsp头部页面的注册按钮&a…

微信小程序 手机号授权登录

手机号授权登录 效果展示 这里面用的是 uni-app 官方的登录 他支持多端发布 https://zh.uniapp.dcloud.io/api/plugins/login.html#loginhttps://zh.uniapp.dcloud.io/api/plugins/login.html#login 下面是代码 <template><!-- 授权按钮 --><button v-if&quo…

3D人体展示仪

网址 https://3dbodyvisualizer.com/ 可以根据身高体重之类的在线生成人体的3D模型&#xff0c;感兴趣的可以试试

vue3+arco design通过动态表单方式实现自定义筛选

目录 1.说明 2.示例 3.运行截图 ​编辑 4.总结 1.说明 (1) 本文主要实现通过动态表单的方式实现自定义筛选的功能&#xff0c;用户可以自己添加筛选的项目&#xff0c;筛选条件及筛选内容。 (2) 每个项目的筛选包含筛选项目&#xff0c;筛选条件&#xff0c;筛选方式及筛选…

重学java 30.API 1.String字符串

于是&#xff0c;虚度的光阴换来了模糊 —— 24.5.8 一、String基础知识以及创建 1.String介绍 1.概述 String类代表字符串 2.特点 a.Java程序中的所有字符串字面值(如“abc”)都作为此类的实例(对象)实现 凡是带双引号的&#xff0c;都是String的对象 String s "abc&q…

在家中访问一个网站的思考

在家中访问一个网站的思考 1、家庭网络简介2、家庭WLAN DHCP2.1、家庭路由器PPPOE拨号2.2、DHCP&#xff08;动态主机配置协议&#xff09;2.3、接入家庭网的主机IP地址2.4、家庭总线型以太网2.5、Mac地址2.6、ARP协议2.7、IP协议 & UDP/TCP协议2.8、NAT&#xff08;Netwo…

【一起深度学习吧!!!!!】24/05/03

卷积层里的多输入输出通道 1、 多输入通道&#xff1a;代码演示&#xff1a; 多输出通道&#xff1a;代码实现&#xff1a; 1、 多输入通道&#xff1a; 当输入包含多个通道时&#xff0c;需要构造一个输入通道与之相等的卷积核&#xff0c;以便进行数据互相关计算。 例如李沐…

Ubuntu24.04安装中文输入法

Ubuntu24.04安装中文输入法 为了更好的体验&#xff0c;请访问个人博客 www.huerpu.cc:7000 一、添加中文语言支持 在安装中文输入法之前&#xff0c;首选要添加中文语言支持。选择System&#xff0c;点击Region & Language。 点击Manage Install Languages。 点击Insta…

repo跟git的关系

关于repo 大都讲的太复杂了,大多是从定义角度跟命令角度去讲解,其实从现实项目使用角度而言repo很好理解. 我们都知道git是用来管理项目的,多人开发过程中git功能很好用.现在我们知道一个项目会用一个git仓库去管理,项目的开发过程中会使用git创建分支之类的来更好的维护项目代…

css 文字描边

又是抄样式的一天。这次是百度地图。实现了问题和图形描边的效果。 代码&#xff1a; .BMap_scaleTxt.dark {color: #fff;text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; } 效果&#xff1a;

安装numpy遇到的问题

安装numpy的时候提示无法安装如下&#xff1a; (venv) E:\works\AI\venv\Scripts>pip install numpy pandas matplotlib jupyter -i https://pypi.douban.com/simple Looking in indexes: https://pypi.douban.com/simple WARNING: Retrying (Retry(total4, connectNone, r…

分析师常用商业分析模型

一、背景 在用户调研中&#xff0c;我们发现分析师对商业分析模型的使用还是比较频繁。本文主要对用户调研结果中的分析师常用商业分析模型以及一些业界经典的商业分析模型进行分析&#xff0c;并梳理出执行落地流程&#xff0c;以此来指导分析师工具设计分析功能的引导性。 …

软件测试--接口测试

接口测试&#xff1a;直接对后端服务的测试&#xff0c;是服务端性能测试的基础 接口&#xff1a;系统之间数据交互的通道 接口测试&#xff1a;校验接口响应数据与预期数据是否一致

【JavaEE初阶系列】——Servlet运行原理以及Servlet API详解

目录 &#x1f6a9;Servlet运行原理 &#x1f6a9;Servlet API 详解 &#x1f393;HttpServlet核心方法 &#x1f393;HttpServletRequest核心方法 &#x1f388;核心方法的使用 &#x1f534;获取请求中的参数 &#x1f4bb;query string &#x1f4bb;直接通过form表…

回归分析的理解

1.是什么&#xff1a; 2.回归问题的求解&#xff1a; 首先是根据之前的数据确定变量和因变量的关系根据关系去预测目标数据根据结果做出判断 2.1如何找到关系&#xff1f; y’是根据模型生成的预测结果&#xff1a; y’axb&#xff0c;而我们的目的是y’和y(正确的结果)之间…

构造照亮世界——快速沃尔什变换 (FWT)

博客园 我的博客 快速沃尔什变换解决的卷积问题 快速沃尔什变换&#xff08;FWT&#xff09;是解决这样一类卷积问题&#xff1a; ci∑ij⊙kajbkc_i\sum_{ij\odot k}a_jb_k ci​ij⊙k∑​aj​bk​其中&#xff0c;⊙\odot⊙ 是位运算的一种。举个例子&#xff0c;给定数列 a,…

二叉搜索树相关

二叉搜索树 定义&#xff1a;对二叉搜索树的一些操作基本结构Insert操作Find操作Erase操作 InOrder遍历二叉树操作模拟字典模拟统计次数 定义&#xff1a; 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树:若它的左子树不为空&a…

品鉴中的艺术表达:如何将红酒与绘画、雕塑等艺术形式相结合

品鉴雷盛红酒不仅是一种味觉的享受&#xff0c;更是一种艺术的体验。将雷盛红酒与绘画、雕塑等艺术形式相结合&#xff0c;能够创造出与众不同的审美体验&#xff0c;进一步丰富品鉴的内涵。 首先&#xff0c;绘画作为视觉艺术的一种表现形式&#xff0c;能够通过色彩和构图来传…

Linux:进程等待 进程替换

Linux&#xff1a;进程等待 & 进程替换 进程等待wait接口statuswaitpid接口 进程替换exec系列接口 当一个进程死亡后&#xff0c;会变成僵尸进程&#xff0c;此时进程的PCB被保留&#xff0c;等待父进程将该PCB回收。那么父进程要如何回收这个僵尸进程的PCB呢&#xff1f;父…

47.Redis学习笔记

小林coding -> 图解redis的学习笔记 文章目录 Rediswindwos安装docker安装redis启动redis使用RDM访问虚拟机中的redispython连接redis缓存穿透、击穿、雪崩基本数据类型高级数据类型高并发指标布隆过滤器分布式锁Redis 的有序集合底层为什么要用跳表&#xff0c;而不用平衡…