Git pull命令与fetch命令的区别

Git pull命令与fetch命令的区别

今天在公司碰到个问题,公司不使用master分支作为主分支,而使用release分支作为主分支,这就碰到了个问题,也就是当clone一个项目下来的时候,如果master跟release分支有冲突,就不能pull了,自己还要解决冲突。

刚下一个项目,也不懂冲突到底怎么回事,也就很难搞了。

这个时候,就不得不提Git的两个命令,git fetch和git pull

Git中从远程的分支获取最新的版本到本地有这样2个命令:

Git fetch

git fetch:相当于是从远程获取最新版本到本地,不会自动merge

git fetch origin master
git log -p master..origin/master
git merge origin/master

以上命令的含义:

首先从远程的origin的master主分支下载最新的版本到origin/master分支上

然后比较本地的master分支和origin/master分支的差别

最后进行合并

上述过程其实可以用以下更清晰的方式来进行:

# 将远程release分支拉到本地的releaselocal分支
git fetch origin releaser:releaselocal

# 切换到tmp分支
git checkout releaselocal

这样也就解决了这个问题,之后master分支删除掉,直接从releaselocal创建master分支,这样所有的分支都跟远端的release分支同步了。

Git pull

git pull:相当于是从远程获取最新版本并merge到本地

git pull origin release:release

上述命令其实相当于git fetch 和 git merge

这个命令其实不太靠谱,如果本地没有release分支的话,会自动根据当前分支branch一个release分支,然后来执行pull操作,所以不太靠谱

所以我通常的做法是保留本地的master分支不进行任何commit,然后通过master分支来进行切换,这样在master分支上是clean的,然后通过之前的命令就不产生冲突了

之后在release分支上进行merge操作,安全很多。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • 详解git无法pull仓库refusing to merge unrelated histories

    详解git无法pull仓库refusing to merge unrelated histories 本文讲的是把Git在最新2.9.2,合并pull两个不同的项目,出现的问题如何去解决 fatal: refusing to merge unrelated histories 我在Github新建一个仓库,写了License,然后把本地一个写了很久仓库上传. 先pull,因为两个仓库不同,发现refusing to merge unrelated histories,无法pull 因为他们是两个

  • Git fetch和pull的详解及区别

    git fetch和pull的区别 Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge Git fetch origin master git log -p master..origin/master git merge origin/master 以上命令的含义: 首先从远程的origin的master主分支下载最新的版本到origin/master分支上:然后比较本地的master分支和origin/mas

  • github pull最新代码实现方法

    github现在已经经常用了,但是经常遇到下面的问题 比如:从一个项目A中fork了一个分支B,并且在分支B有了改动.过了几天后,项目A中的代码应该会有很多人提交修改了,现在想将最新的代码pull到分支B.请问如何做呢?在github界面上没有看到响应的按钮 解决步骤:   假设你fork的项目原始地址是urlRep, 你自己的是urlYou $ git remote  add upstream urlRep # 你本地的origin应该跟自己的remote,并且当前本地branch是maste

  • Git pull命令与fetch命令的区别

    Git pull命令与fetch命令的区别 今天在公司碰到个问题,公司不使用master分支作为主分支,而使用release分支作为主分支,这就碰到了个问题,也就是当clone一个项目下来的时候,如果master跟release分支有冲突,就不能pull了,自己还要解决冲突. 刚下一个项目,也不懂冲突到底怎么回事,也就很难搞了. 这个时候,就不得不提Git的两个命令,git fetch和git pull Git中从远程的分支获取最新的版本到本地有这样2个命令: Git fetch git fet

  • git fetch与git pull的区别详解

    git fetch和git pull都可以将远端仓库更新至本地那么他们之间有何区别?想要弄清楚这个问题有有几个概念不得不提. FETCH_HEAD: 是一个版本链接,记录在本地的一个文件中,指向着目前已经从远程仓库取下来的分支的末端版本. commit-id:在每次本地工作完成后,都会做一个git commit 操作来保存当前工作到本地的repo, 此时会产生一个commit-id,这是一个能唯一标识一个版本的序列号. 在使用git push后,这个序列号还会同步到远程仓库. 有了以上的概念再来

  • Git pull(拉取),push(上传)相关命令介绍

    前言:博主最近在学习git命令,因为git是一个非常好用的分布式版本管理工具,功能比svn强大,与SVN不同点是Git去中心化,每一个分支都是一个中心,并且支持本地仓库存储,像如今很多大公司都用git做版本控制.话不多说,具体命令整理如下: git拉取远程代码 git clone  https://xxx.git git拉取远程指定分支下代码(-b  分支名称) git clone -b v2.8.1 https://xxx.git 初始化一个本地仓库,在同级目录下会出现一个隐藏的.git文件

  • Git pull(拉取)及push(上传)相关命令介绍

    前言:博主最近在学习git命令,因为git是一个非常好用的分布式版本管理工具,功能比svn强大,与SVN不同点是Git去中心化,每一个分支都是一个中心,并且支持本地仓库存储,像如今很多大公司都用git做版本控制.话不多说,具体命令整理如下: git拉取远程代码 git clone https://xxx.git git拉取远程指定分支下代码(-b  分支名称) git clone -b v2.8.1 https://xxx.git 初始化一个本地仓库,在同级目录下会出现一个隐藏的.git文件 g

  • Git中需要熟记的命令小结

    提交流程相关 查看文件改动以及新增的文件 git status 添加新增文件 git add your_file_path // 添加全部文件 git add * // 添加某类型文件 git add dir/*.js 简单的提交文件 git commit -m "Commit message" 提交你所有的修改文件以及添加的文件 git commit -am 'your message' 撤销修改某个文件 git checkout -- <filename> 放弃本地所有

  • git分支(branch)操作相关命令及分支命令的使用

    分支(branch)操作相关命令 查看本地分支:$ git branch 查看远程分支:$ git branch -r 创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支 切换分支:$ git checkout [name] 创建新分支并立即切换到新分支:$ git checkout -b [name] 删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的.如果想强

  • Linux命令搜索命令whereis与which的区别

    Linux命令搜索命令whereis与which的区别 一 whereis 1.语法 whereis 命令名 搜索命令所在的路径以及帮助文档所在的位置 选项: -b:只查找可执行文件 -m:只查找帮助文件 2.实战 [root@localhost ~]# whereis ls ls:/usr/bin/ls /usr/share/man/man1/ls.1.gz/usr/share/man/man1p/ls.1p.gz [root@localhost ~]# whoami root [root@l

  • 面试必问Linux 命令su和sudo的区别解析

    目录 1. 准备工作 2. su 命令介绍及主要用法 2.1 - 参数 2.2 切换到指定用户 2.3 -c 参数 3. sudo 命令介绍及主要用法 3.1 主要用法 3.2 sudo 工作原理 3.3 思考 4. 二者的差异对比 之前一直对 su 和 sudo 这两个命令犯迷糊,最近专门搜了这方面的资料,总算是把两者的关系以及用法搞清楚了,这篇文章来系统总结一下. 1. 准备工作 因为本篇博客中涉及到用户切换,所以需要提前准备好几个测试用户,方便后续切换. Linux中新建用户的命令是 us

  • git push & git pull 推送/拉取分支的具体使用

    git push与git pull是一对推送/拉取分支的git命令. git push 使用本地的对应分支来更新对应的远程分支. $ git push <远程主机名> <本地分支名>:<远程分支名> 注意: 命令中的本地分支是指将要被推送到远端的分支,而远程分支是指推送的目标分支,即将本地分支合并到远程分支. 如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建. $ git pus

  • window设置任务计划定时执行 git 更新(git pull)并隐藏运行cmd

    windows计划任务 开始 > 管理工具 > 任务计划程序 首先创建一个bat文件.命名为:XXXX.bat, 内容如下: @echo off D: cd \share\doc git pull \share\doc:是git项目目录.创建完,手动双击执行一下该bat文件,是否正常.正常的情况是:双击就会进行更新将该bat文件放在自己相中的位置,比如D盘根目录.添加windows任务计划 schtasks /create /sc minute /mo 5 /tn "自动更新-git

随机推荐