如何使用Git实现切换分支开发过程解析_相关技巧

来源:脚本之家  责任编辑:小易  

几乎每一种版本控制2113系统都以某5261种形式支持分支。使用分4102支意味着你可以从1653开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的完整副本,对大型项目来说会花费很长时间。有人把 Git 的分支模型称为“必杀技特性”,而正是因为它,将 Git 从版本控制系统家族里区分出来。Git 有何特别之处呢?Git 的分支可谓是难以置信的轻量级,它的新建操作几乎可以在瞬间完成,并且在不同分支间切换起来也差不多一样快。和许多其他版本控制系统不同,Git 鼓励在工作流程中频繁使用分支与合并,哪怕一天之内进行许多次都没有关系。理解分支的概念并熟练运用后,你才会意识到为什么 Git 是一个如此强大而独特的工具,并从此真正改变你的开发方式。为了理解 Git 分支的实现方式,我们需要回顾一下 Git 是如何储存数据的。或许你还记得第一章的内容,Git 保存的不是文件差异或者变化量,而只是一系列文件快照。在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对 象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。为直观起见,我们假设在工作目录中有三个文件,准备将它们暂存后提交。暂存操作会对每一个文件计算校验和(即第一章中提到的 SHA-1 哈希字串),然后把当前版本的文件快照保存到 Git 仓库中(Git 使用 blob 类型的对象存储这些快照),并将校验和加入暂存区域:$ git add README test.rb LICENSE$ git commit -m 'initial commit of my project'当使用 git commit 新建一个提交对象前,Git 会先计算每一个子目录(本例中就是项目根目录)的校验和,然后在 Git 仓库中将这些目录保存为树(tree)对象。之后 Git 创建的提交对象,除了包含相关提交信息以外,还包含着指向这个树对象(项目根目录)的指针,如此它就可以在将来需要的时候,重现此次快照的内容了。现在,Git 仓库中有五个对象:三个表示文件快照内容的 blob 对象;一个记录着目录树内容及其中各个文件对应 blob 对象索引的 tree 对象;以及一个包含指向 tree 对象(根目录)的索引和其他提交信息元数据的 commit 对象。概念上来说,仓库中的各个对象保存的数据和相互关系看起来如图 3-1 所示:图 3-1. 单个提交对象在仓库中的数据结构作些修改后再次提交,那么这次的提交对象会包含一个指向上次提交对象的指针(译注:即下图中的 parent 对象)。两次提交后,仓库历史会变成图 3-2 的样子:图 3-2. 多个提交对象之间的链接关系现在来谈分支。Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的 master 分支,它在每次提交的时候都会自动向前移动。图 3-3. 分支其实就是从某个提交对象往回看的历史那么,Git 又是如何创建一个新的分支的呢?答案很简单,创建一个新的分支指针。比如新建一个 testing 分支,可以使用git branch 命令:$ git branch testing这会在当前 commit 对象上新建一个分支指针(见图 3-4)。图 3-4. 多个分支指向提交数据的历史那么,Git 是如何知道你当前在哪个分支上工作的呢?其实答案也很简单,它保存着一个名为 HEAD 的特别指针。请注意它和你熟知的许多其他版本控制系统(比如 Subversion 或 CVS)里的 HEAD 概念大不相同。在 Git 中,它是一个指向你正在工作中的本地分支的指针(译注:将 HEAD 想象为当前分支的别名。)。运行git branch 命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去,所以在这个例子中,我们依然还在 master 分支里工作(参考图 3-5)。图 3-5. HEAD 指向当前所在的分支要切换到其他分支,可以执行 git checkout 命令。我们现在转换到新建的 testing 分支:$ git checkout testing这样 HEAD 就指向了 testing 分支(见图3-6)。图 3-6. HEAD 在你转换分支时指向新的分支这样的实现方式会给我们带来什么好处呢?好吧,现在不妨再提交一次:$ vim test.rb$ git commit -a -m 'made a change'图 3-7 展示了提交后的结果。图 3-7. 每次提交后 HEAD 随着分支一起向前移动非常有趣,现在 testing 分支向前移动了一格,而 master 分支仍然指向原先 git checkout 时所在的 commit 对象。现在我们回到 master 分支看看:$ git checkout master图 3-8 显示了结果。图 3-8. HEAD 在一次 checkout 之后移动到了另一个分支这条命令做了两件事。它把 HEAD 指针移回到 master 分支,并把工作目录中的文件换成了 master 分支所指向的快照内容。也就是说,现在开始所做的改动,将始于本项目中一个较老的版本。它的主要作用是将 testing 分支里作出的修改暂时取消,这样你就可以向另一个方向进行开发。本回答被网友采纳www.zgxue.com防采集请勿采集本网。

入职第一家公司做开发的时候使用的项目版本管理工具是svn,公司内部搭建的服务器;在第二、第三家公司做开发的时候,使用的项目版本管理工具是Git,现在大多数公司使用的也是Git。刚进入公司的时候首先做的都是拉取项目代码,并且一般都需要切换到分支进行开发,对于不少新人或者是没有使用过Git的人来说,可能会不知道如何切换Git分支,因此写这篇博文来记录如何进行切换分支进行开发。

打开版本控制进行对git的设置。 1.打开你的版本控制软件,受控制的程序都会有个标示,如下图所示 2.邮件会发现,提交的分支名称,可能它不是你想要的名称。 3.接着有右键选择tortoisegit,展示开会发现有个切换、检出标签。 4.选择切换检出,会

一、打开 Git命令行 操作界面

gitconfig-globaluser.name"Yourname"gitconfig-globaluser.email"you@example.com"建立一个存放工程的文件夹gitinit命令用于初始化当前所在目录的这个项目会创建一个隐藏文件.git创建main.c文件创建.gitignore文件,忽略该文件里面有的项目文件

这个根据个人安装的Git的方式来确定,有的人安装的是直接使用命令行的方式来拉代码、提交代码;我安装的是有界面的操作

git status 看一下有没有红色的文件 如果master分支上的修改不会覆盖你develop的修改,是允许切换的,这时候修改不会丢,反之不能切换。既然切换成功了,你要么是: 你用命令强制切换,修改玩完,节哀吧。如果是eclipse开发的

方式,有不清楚的可以去百度搜索一下,按照相关教程安装即可。我的Git安装方式,在进行切换分支操作时,需要多做一步在

点击Git Flow 创建分支: 1. develop : 创建一个develop分支,在develop分支上进行开发 2. feature : 然后在develop上附属创建一些特性分支,比比如我们可 以为登陆功能创建一个login分支,为注册功能创建一个register分支, 为用户管 理创建一个use

拉取项目的文件夹下面点击鼠标右键,选择Git Bash Here选项,如下图所示:

1.git checkout xxx(切换到你要将其他分支合并到的主分支上,xxx是分支名) 2.git merge xxx (合并操作) 3.git branch -d xxx(删除已经合并的分支,可选择不删除) git clone url #克隆新的版本库 02 git init 03 git pull repo_name #有关联的

选择后的界面。

二、执行 git branch --remote 命令,查看当前项目所有的分支信息

如下图所示:找到当前正在开发的分支名称,不知道的可以问老同事;

三、执行切换分支的命令 git checkout -b release-v4 origin/release-v4

我们当前使用的分支是release-v4这个分支。把上面指令中的版本切换成自己的版本即可。

四、验证是否切换成功,执行命令git branch

执行命令后的结果如下,分支已经切换成功,在命令行窗口中当前的分支会显示为绿色,并且前面有一个*号加以标识。

处理的方法和2113操作步骤如下:52611、首先,在git远程仓库中创4102建一个远程存储库。可以通过git命令将git clone到本地,1653在远程仓库中创建一个仓库,如下图所示。2、其次,在创建远程仓库并在本地克隆之后,远程仓库将找到远程仓库的地址(git clone <远程仓库地址>),如下图所示。3、接着,克隆后,检查所有分支(git branch -a),或者可以单独查看远程分支,如下图所示。4、然后,完成上述步骤后,创建一个本地分支,更新到一个远程分支(git branch ceshi)。 下面标记的点是本地新创建的分支,如下图所示。5、随后,完成上述步骤后,git切换分支(git checkout <分支名称>),在新创建的分支中创建一个新文件,如下图所示。6、最后,完成上述步骤后,将分支更新到远程仓库,先提交新创建或修改的文件,如下图所示,1、首先在git远程仓2113库创建一个远程仓库,在通过5261git命令去克隆(git clone)到4102我本地,在远程仓库创建一1653个仓库。2、创建完成远程仓库,在本地克隆到本地,远程仓库会找到远程仓库的地址(git clone <远程仓库地址>)。3、克隆下来以后,查看一下所有的分支(git branch -a ),也可以单独查看远程分支。4、创建一个本地分支然后在更新到远程分支(git branch ceshi),下图标记点是本地新创建的分支。5、git切换分支(git checkout  <分支名称>),在新建的分支中新建一个文件。6、最后把分支更新到远程仓库,先提交新建的文件或者是修改的文件。注意事项:与常用的版本控制工具 CVS, Subversion 等不同,git采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。本回答被网友采纳,我的是最新版,是有楼主2113说的这种情5261况:两个分支里修改4102的是同一个文件的话,切换分支,会发生1653想对应的改变,但是要是在一个分支里新建立一个文件,切换到另一个分支还在。这是由于新建的文件没有纳入版本管理,git切换分支等操作都不会去动这些untracked文件。一个较好的办法是 git add <新增文件>后再git stash,切换分支之前,确保当前分支没有未提交的修改,切换回predev,然后2113对所有的修改进行提5261交git add .git commit这样就可以了,但是在切换回develop分支时又遇4102到了.idea/workspace.xml的问题在.gitignore 文件1653里面加入 .idea/ workspace.xml 即可但是如果你这样做之前已经将此文件提交到了git远程仓库,那就需要执行以下命令了:git rm -r --cached .idea/workspace.xmlgit add .git commit内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 关于页面刷新,事件重复提交的方法分享
  • fiddler使用方法之fiddler显示ip,fiddler中文乱码解决方法以及fi
  • vscode中ctrl+s后会在当前目录下自动生成dist目录的方法
  • git如何撤销commit的方法(未push)
  • 分享10个程序员常用的的代码文本编辑器
  • 如何使用git优雅的回滚实现
  • clion中编译ros工程的配置详细教程
  • 在vscode中如何配置python开发环境
  • 详解cron表达式
  • git标签管理
  • git切换分支,之前的修改被带到另一个分支,怎么处理
  • Git分支,为何以及如何使用分支
  • Git分支怎么切换到远端分支
  • git 怎么切换分支
  • git怎么切换分支?
  • git切换分支会覆盖原来的分支吗
  • Git 多人开发,合并分支如何避免来回切换
  • 如何对 GIT 分支进行规划
  • git 主干分支代码能merge到开发分支代码
  • git怎么使用subtree命令切换引用项目的分支
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全javascriptasp.netphp编程ajax相关正则表达式asp编程jsp编程编程10000问css/htmlflex脚本加解密web2.0xml/rss网页编辑器相关技巧安全相关网页播放器其它综合dart首页解决idea git切换多个分支后maven不生效的问题git push 本地项目推送到远程分支的方法(git命令版)git 将本地文件(夹)上传到gitee指定分支的处理方法详解git使用小结(本地分支与远程分支、git命令)idea手动刷新git分支的详细教程idea怎么切换git分支的实现方法浅析git 分支的新建与合并idea+git合并分支解决冲突及详解步骤关于页面刷新,事件重复提交的方法分享fiddler使用方法之fiddler显示ip,fiddler中文乱码解决方法以及fivscode中ctrl+s后会在当前目录下自动生成dist目录的方法git如何撤销commit的方法(未push)分享10个程序员常用的的代码文本编辑器如何使用git优雅的回滚实现clion中编译ros工程的配置详细教程在vscode中如何配置python开发环境详解cron表达式git标签管理2019最新的pycharm激活码(推荐)进制转换算法原理(二进制 八进制eclipse 格式化代码时不换行与自微信小程序设置http请求的步骤详从console.log说起(console.log详几款开源的中文分词系统十进制负数转换为二进制、八进制url 长度有限制吗?抓包工具fiddler的使用方法详解(301重定向代码合集(iis,asp,php,asp.net,git的使用规范流程总结visual studio和visual studio code之间有vscode 使用settings sync同步配置(最新版图片的色彩空间问题intellij idea2020新增禅模式和lightedit如何使用git优雅的回滚实现深入理解浏览器的各种刷新规则vscode 云同步扩展设置settings sync插件
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved