Git常用命令fetch和pull和push

2023-11-13

Git常用命令pull和push

1、fetch

从远程获取代码库。

# 会将所有远程分支都拉到本地
# 并不会合并代码
$ git fetch
# 下载远程仓库的所有变动
$ git fetch remote
$ git fetch origin
# 指定拉取远程remote的branch分支到本地
$ git fetch remote branch
$ git fetch origin develop
# 获取所有原创分支并清除服务器上已删掉的分支
# 删掉远程dev分支,此时本地版本库中的数据快照仍然有dev分支
# 该命令会与远程库进行一次同步,最终清理掉版本库中的dev分支,但本地工作区中的dev分支并不会删除
$ git fetch --prune

2、pull

pull 从远程获取代码并合并本地的版本。

# 第一次和远程关联上之后,在提交之前要先pull一下远程的更新才行
# 拉取所有远程分支到本地仓库中
# git pull = git fetch + git merge
$ git pull
# 取回远程仓库的变化,并与本地分支合并
$ git pull <远程主机名> <远程分支名>:<本地分支名>
$ git pull origin master:branch1

如果远程分支是与当前分支合并,则冒号后面的部分可以省略:

$ git pull <远程主机名> <远程分支名>
$ git pull origin master

用 fetch 表示:

$ git fetch origin branchName
# 合并名为origin/master的分支到当前所在分支
$ git merge origin/branchName

获取远程仓库的变更:

# 获取远程服务器上的变更,并合并到你的工作目录
$ git pull repository
$ git pull https://gitee.com/zsx242030/um.git

3、push

从将本地的分支上传到远程并合并。

分支推送顺序的写法是 <本地分支>:<远程分支>。

3.1 推送分支

# 将本地分支推送到远程分支
# 如果远程没有这个分支,会新建一个同名的远程分支
# 如果省略远程分支名,则表示两者同名,即会产生一个和本地分支同名的远程分支
# 该命令可以理解为将<本地分支名>的代码推送到<远程主机名>中的<远程分支名>上
# <远程主机名>默认为origin
$ git push <远程主机名> <本地分支名>:<远程分支名>

该命令的几种用法:

第一种,所有的参数都有:

$ git push origin develop:master

将本地的 develop 分支上的代码推送到远程主机名为 origin 中 master 的分支上,如果远程的 master 分支不存

在,则会被创建,这也是一种创建远程分支的办法。

第二种,省略 <远程分支名>:

$ git push origin develop

如果本地分支名和远程分支名一样的情况下,可以省略 <远程分支名>。如果远程主机中不存在该分支,那么会被

创建。该命令等价于:

$ git push origin develop:develop

第三种,省略 <本地分支名> 和 <远程分支名>:

$ git push origin

如果本地分支已经跟远程分支建立了追踪关系,那么可以省略<远程主机名>和 <远程分支名>。

使用 git branch -vv 命令,可以查看本地分支跟远程分支是否存在追踪关系。

这种推送方式的具体操作:

$ git checkout -b branch1

$ git push --set-upstream origin branch1
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'branch1' on Gitee by visiting:
remote:     https://gitee.com/zsx242030/um/pull/new/zsx242030:branch1...zsx242030:master
To https://gitee.com/zsx242030/um.git
 * [new branch]      branch1 -> branch1
Branch branch1 set up to track remote branch branch1 from origin.

$ git push origin

$ git branch -vv
* branch1 40f466a [origin/branch1] develop | add test.txt

第四种,省略 <远程主机名>、<本地分支名> 和 <远程分支名>:

$ git push

只需要保证本地仓库只跟一台远程主机有关联即可。

如果当前分支与多个主机存在追踪关系,则可以使用 -u 选项指定一个默认主机,这样后面就可以不加任何参数使

用 git push。

$ git checkout -b branch2

$ git push --set-upstream origin branch2
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'branch2' on Gitee by visiting:
remote:     https://gitee.com/zsx242030/um/pull/new/zsx242030:branch2...zsx242030:master
To https://gitee.com/zsx242030/um.git
 * [new branch]      branch2 -> branch2
Branch branch2 set up to track remote branch branch2 from origin.

$ git push

$ git branch -vv
* branch2 40f466a [origin/branch2] develop | add test.txt

不带任何参数的 git push,默认只推送当前分支,这叫做 simple 方式。此外,还有一种 matching 方式,会推送

所有有对应的远程分支的本地分支。Git 2.0 版本之前,默认采用 matching 方法,现在改为默认采用 simple 方

式。如果要修改这个设置,可以采用 git config 命令。

$ git config --global push.default matching
# 或者
$ git config --global push.default simple

除非你将分支推送到远端仓库,不然该分支就是不为他人所见的。

# 强行推送当前本地分支到远程仓库,即使有冲突
$ git push <远程主机名> --force
$ git push --force origin
# 推送所有本地分支到远程仓库
$ git push <远程主机名> --all
$ git push --all origin

上面命令使用 –force 选项,结果导致在远程主机产生一个非直进式的合并(non-fast-forward merge)。除非你很

确定要这样做,否则应该尽量避免使用 –force 选项。

# 第一次推送是要加上-u,可以把本地的master和远程的master关联起来,方便以后的推送或者拉取
$ git push -u origin master

3.2 删除分支

# 删除远程分支
$ git push origin --delete <远程分支名>
$ git push origin --delete develop
# 如果省略本地分支名,则表示删除指定的远程分支
# 因为这等同于推送一个空的本地分支到远程分支
$ git push origin :<远程分支名>
$ git push origin :develop

3.3 推送tag

# 推送某个tag到远程
$ git push <远程主机名> tagname
# 推送所有tag到远程
$ git push <远程主机名> --tags
# 把所有tag推送到远程仓库
$ git push origin --tags

演示:

# master分支创建tag
$ git tag -a v0.1 -m "version 0.1 released"

$ git tag
v0.1

$ git push origin v0.1
Counting objects: 1, done.
Writing objects: 100% (1/1), 163 bytes | 163.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/zsx242030/um.git
 * [new tag]         v0.1 -> v0.1

3.4 删除tag

# 删除远程tag
# 删除的话先删除本地的tag,然后再删除远程的
$ git push origin :refs/tags/[tagName]

演示:

$ git tag -d v0.1
Deleted tag 'v0.1' (was 6b7bd2b)

$ git tag

$ git push origin :refs/tags/v0.1
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/zsx242030/um.git
 - [deleted]         v0.1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git常用命令fetch和pull和push 的相关文章

  • 如何在项目提交历史中找到已删除的文件?

    曾几何时 我的项目中有一个文件 我现在希望能够获取它 问题是 我不知道我什么时候删除了它 也不知道它在哪条路径上 当该文件存在时 如何找到该文件的提交 如果您不知道可以使用的确切路径 git log all full history the
  • 将构建文件夹推送到不同存储库的 Github 操作

    我有 2 个存储库 存储库 A 包含源代码 存储库 B 将构建文件夹发布到网络 我为此目的采取了行动 但收到错误 git clone single branch branch main github com blockcodelabs B
  • git,Heroku:预接收挂钩被拒绝

    我正在设置 git 存储库并尝试将其链接到 Heroku 当我运行命令时 git push heroku master 我收到 Counting objects 7 done Delta compression using up to 2
  • 哪种 git commit 实践更好?

    我坚信 对一个问题做出一次承诺是一种很好的做法 我确信我在 最佳实践 之类的文章中读过它 因此 我的工作流程如下 对于新问题 我创建了一个新的本地分支git checkout b new issue 将所有更改提交到其中 有时这涉及到lot
  • 致命:未配置推送目的地

    请参阅以下屏幕详细信息 git remote v 命令显示我已添加 test vish 但是当我发出 Push 命令时 它给出了错误 有人可以帮忙吗 C Users vishwas gupta03 Documents GitHub test
  • Git 将合并恢复到特定父级

    我有一个 git 存储库 但在恢复合并时遇到问题 当前哈希为 0ce2ca0b35f59af267241cf4d40d16a3e13ba6f3 它有两个父母 df1acf5f54426d30f12c6b4558c3dd922297aae3
  • 版本控制 rpm 规范文件

    我正在配置一台构建机器来为大量非常相似的项目生成 rpm 每个项目的规范文件在名称上以及有时在依赖项和其他属性上都略有不同 每个项目都有自己的 git 存储库 其中包含项目文件 这些规范文件仅存在并且实际上仅对构建系统本身有用 每个项目都可
  • 如何比较本地 Git 分支与其远程分支

    我怎样才能看到diff本地分支和远程分支之间 git diff
  • 如何将 HEAD 移回之前的位置? (分离头)和撤消提交

    在 Git 中 我试图做一个squash commit通过合并到另一个分支然后重置HEAD通过以下方式前往上一个地点 git reset origin master 但我需要走出这一步 如何将 HEAD 移回之前的位置 我有 SHA 1 片
  • git pull:无法快进,

    你能帮我解决我的问题吗 当我尝试从 dev 分支拉取时发生错误 我浏览了解决方案 它说我需要 rebase 但它对我来说没有成功 CT aohc MP1GYWQA MINGW64 c TCO source RAPMD Web Fronten
  • 为什么 iTerm2 中不显示 git 颜色

    所以我有我的 gitconfig 设置来处理颜色 在终端中它工作得很好 看起来也不错 然而 在 iTerm2 中 除非我为 git 设置反向属性 否则我的 gitconfig 根本不会显示颜色 然后它们就出现了 但是谁喜欢相反的颜色呢 为什
  • 如何给 Git 控制台着色?

    我最近看到gitWindows 中的控制台是彩色的 例如绿色表示添加 红色表示删除等 我如何为我的颜色上色git这样的控制台 为了安装它 我使用了以下命令 sudo apt get install git core As noted htt
  • 尽管存在但未找到 Git https:// 存储库

    我在 github 上有一个私人仓库 它的位置被改变了 我尝试更换遥控器 但无法再按了 ls remote https github com xxxxx xxxxx git 给了我这个 远程 未找到存储库 致命 存储库 https gith
  • Git 粒度——解决一行内的差异

    git 基于行的粒度或 diff 粒度是否可以增加到单词 字母分辨率 每行多条语句或使用 git 编写纯文本是值得的 根据评论重新阅读问题时 我想我明白了您最初的意思 所以我将给出一个真正的答案 与伊斯梅尔 巴达维的一行评论 https s
  • Git 和外部备份。子目录是空的,我宁愿它不是空的。

    我想使用 Git 创建外部备份系统 这部分是受到答案的启发在外部磁盘上备份整个 git 存储库的最佳方法是什么 https stackoverflow com a 4372855 2533127 其中建议如下 您还可以通过启动一个新的存储库
  • dulwich - 从远程仓库身份验证克隆

    我找不到有关此主题的任何资源 我需要通过提供用户名和密码从私有存储库进行克隆 然而 当它们作为关键字参数提供给 dulwich get client from path 时 会出现错误 提示 未知参数 用户名 这似乎是一件简单的事情 但我找
  • 从 svn 到 git,移动了主干

    我正在尝试将 svn 存储库切换到 git 这是一个旧的存储库 以前的维护者之一为每个新版本移动了主干 例如 以前的存储库位于 svn ssh svn mycompany com project release 1 trunk 现在 我们当
  • Git core.safecrlf 对具有相同行结尾的文件有不同的行为

    我有带有 VS 项目的 Windows 计算机 并且使用 Visual Studio 和 Cygwin 环境中的工具 包括 Git 有时 编辑后我会在文件中得到不同的行结尾 我想要简单的解决方案来检查文件的行尾一致性 然后再将其发送到存储库
  • AngularJs:显示来自 git 或 Bower 的版本号

    我创建了一个 Angular 应用程序 我想在屏幕上显示应用程序的当前版本号 目前我已将其实现为常量 application constant constants VERSION 1 1 2 但这需要我在每个新版本上更新常量 我使用 Bow
  • 运行 npm install - 如何配置不使用 SSH(端口被防火墙阻止)

    当我跑步时npm install大多数模块配置正确 然而 至少有人想击中ssh 拉取模块的地址 不幸的是 我的公司有一项政策 不允许内部网络之外的 SSH 连接 我收到的具体错误是 Error while executing npm ERR

随机推荐

  • 【华为OD机试】食堂供餐【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 某公司员工食堂以盒饭方式供餐 为将员工取餐排队时间降低为0 食堂的供餐速度必须要足够快 现在需要根据以往员工取餐的统计信息 计算出一个刚好能达成排队时间为0的最低供餐
  • 【华为OD机试真题】【python】 网上商城优惠活动(一)【2022 Q4

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 某网上商场举办优惠活动 发布了满减 打折 无门槛3种 优惠券 分别为 1 每满100元优惠10元 无使用数限制 如100 199元可以使用1张减
  • Ubuntu18.04/16.04调整屏幕分辨率至1920*1080

    Ubuntu在设置 显示里面的分辨率选择没有1920 1080 我们可以手动增加该分辨率配置 然后进行设置 参考文字和图片 crtl alt t 打开终端窗口 获取添加分辨率的格式 输入 cvt 1920 1080 查看显示器信息及已经支持
  • 安卓HAL层 so库文件加载原理

    本文分析代码基于安卓6 0 上层app通过jni调用hal层的hw get module函数获取硬件模块 这个函数是上层与hal打交道的入口 这里我们就具体来看看hw get module的实现 文件路径 vim hardware libh
  • andorid 与滑动相关的一些知识---getscrollY onscrollchange() scrollby scrollto等

    Android系统手机屏幕的左上角为坐标系 同时y轴方向与笛卡尔坐标系的y轴方向想反 通过提供的api如getLeft getTop getBottom getRight可以获得控件在parent中的相对位置 同时 也可以获得控件在屏幕中的
  • python怎么升级python的pip

    报错提示 WARNING You are using pip version 19 1 1 however version 20 0 2 is available You should consider upgrading via the
  • ouldn‘t check the working tree for unmerged files because of an error. detected dubious ownership in

    IDEA的git的clone操作中如果出现问题 couldn t check the working tree for unmerged files because of an error detected dubious ownershi
  • LangChain 的聊天模型

    各位人工智能爱好者 大家好 今天 我们就来详细了解一下 LangChain 聊天模型 LangChain是一个很棒的工具 它提供了与各种语言模型交互的标准接口 包括基于文本的大型语言模型 LLM 和聊天模型 LangChain模型的概念 模
  • 【Linux命令详解

    文章标题 简介 一 参数列表 二 使用介绍 1 使用基本模式搜索 2 忽略大小写匹配 3 反向匹配 4 递归搜索目录 5 显示文件名 6 显示行号 7 显示上下文行 8 启用扩展正则表达式 9 将模式视为固定字符串 10 使用颜色高亮显示匹
  • Docker部署服务

    部署Nginx 寻找镜像 docker search nginx 默认最新版 官网查看不同的版本信息 下载镜像 docker pull nginx root iZwz9hv1phm24s3jicy8x1Z docker images REP
  • C语言打印输出斐波那契数前20项案例讲解

    我们先看什么是斐波那契数 斐波那契数列指的是这样一个数列 1 1 2 3 5 8 13 21 34 55 89 我们通过观察可以得出斐波那契数列的特点 1 第一项和第二项都是1 2 这个数列从第3项开始 每一项都等于前两项之和 思路分析 1
  • 2023年第二届全国大学生数据统计与分析竞赛题目B:电影评分的大数据分析第二问

    详细代码 企鹅2869955900 import pandas as pd import matplotlib pyplot as plt import numpy as np plt rcParams font sans serif Si
  • 【大数据】Hadoop 生态系统及其组件

    Hadoop 生态系统及其组件 1 Hadoop 生态系统的组成 2 Hadoop 生态系统简介 2 1 HDFS 2 2 MapReduce 2 3 YARN 2 4 Hive 2 5 Pig 2 6 HBase 2 7 HCatalog
  • python3 模块、import、from import

    模块 1 模块就是 py后缀的文件 2 py文件类似于一个类 包含以下部分 1 导入 一般的类都有导入 2 变量 对应类的属性 3 函数 对应类的方法 4 类 对应内部类 5 if name main 对应主函数 6 顶格写的代码段 对应构
  • OpenCV学习笔记(17)双目测距与三维重建的OpenCV实现问题集锦(二)双目定标与双目校正

    三 双目定标和双目校正 双目摄像头定标不仅要得出每个摄像头的内部参数 还需要通过标定来测量两个摄像头之间的相对位置 即右摄像头相对于左摄像头的三维平移 t 和旋转 R 参数 图6 要计算目标点在左右两个视图上形成的视差 首先要把该点在左右视
  • vue2+高德地图web端开发使用

    创建vue2项目 我们创建一个vue2项目 创建vue2项目就不用再多说了吧 使用 vue create 项目名 创建即可 注册高德地图 高德地图官网地址 https lbs amap com 如果是第一次使用 点击注册然后进入我们的控制台
  • idea快捷键最全最新最好

    持续更新 如果文档中没有的 麻烦在评论中添加 常用快捷键 返回最顶头 home 返回最末尾 end Alt Insert 可以新建类 文件 get或set方法 此快捷键又名创造一切 编辑区和文件区的跳转 alt 1 编辑区跳转至文件区 es
  • 272. 最长公共上升子序列(lcis,dp)

    首先是lis的状态划分图 然后是lcs 结合lis和lcs两种dp问题的分析方法 我们就可以得出lcis的状态分析图 1 首先上升子序列的分析方法 以某个数字为结尾 2 其次公共子序列的分析方法 有4种状态 00 01 10 11 双关键字
  • 128、函数接口类---Consumer

    一 概念 java util function Consumer
  • Git常用命令fetch和pull和push

    Git常用命令pull和push 1 fetch 从远程获取代码库 会将所有远程分支都拉到本地 并不会合并代码 git fetch 下载远程仓库的所有变动 git fetch remote git fetch origin 指定拉取远程re