iOS Git分支操做

1、本地分支

  • 一、建立分支
    git branch name
eg:
$ git branch testing
复制代码
  • 二、切换分支
    git checkout name
eg:
$ git checkout testing
复制代码


  • 三、新建分支处理问题
    好比如今有一个须要处理的issue,而且命名为issue20,这个时候咱们建立一个分支而且修复他能够这样子
git checkout -b issue20
复制代码

这里咱们加上了-b这个参数,起表明的意思是:
建立一个分支,而且选择他html

$ git branch issue20
$ git checkout issue20
复制代码



假设咱们已经把issue20修复完成了,这个时候咱们要把分支修改后的内容合并到master分上面去

git

  • 四、合并分支
    • 一、回到你要合并的分支
    • 二、使用merge指令
$ git checkout '输入要回到的分支名称'
$ git merge '要合并的分支名称'

eg:
$ git checkout master
$ git merge testing
复制代码

请注意,合并时出现了“Fast forward”的提示。因为当前 master 分支所在的提交对象是要并入的 testing 分支的直接上游,Git 只需把 master 分支指针直接右移。换句话说,若是顺着一个分支走下去能够到达另外一个分支的话,那么 Git 在合并二者时,只会简单地把指针右移,由于这种单线的历史分支不存在任何须要解决的分歧,因此这种合并过程能够称为快进(Fast forward)。github



合并完成以后,对于咱们修复bug的那个分支已经不须要存在了,就能够把起删除掉vim


  • 五、删除分支
    git branch -d name
eg:
$ git branch -d testing
复制代码

可是在项目中合并可能不会那么容易,若是遇到的合并分支的冲突bash

$ git merge issue20
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
Automatic merge failed; fix conflicts and then commit the result.
复制代码



如何查看冲突文件?服务器

  • 六、查看冲突文件
$ git status
复制代码

任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,能够经过它们来手工定位并解决这些冲突。能够看到此文件包含相似下面这样的部分:工具

<<<<<<< HEAD
<div id="footer">contact : email.support@github.com</div>
=======
<div id="footer">
  please contact us at support@github.com
</div>
>>>>>>> issue20

复制代码

能够看到=======隔开的上半部分,是 HEAD(即 master 分支,在运行 merge 命令时所切换到的分支)中的内容,下半部分是在 issue20 分支中的内容。解决冲突的办法无非是两者选其一或者由你亲自整合到一块儿。好比你能够经过把这段内容替换为下面这样来解决:学习

<div id="footer">
please contact us at email.support@github.com
</div>
复制代码

这个解决方案各采纳了两个分支中的一部份内容,并且我还删除了 <<<<<<<,======= 和 >>>>>>> 这些行。在解决了全部文件里的全部冲突后,运行 git add 将把它们标记为已解决状态
(译注:实际上就是来一次快照保存到暂存区域。)。由于一旦暂存,就表示冲突已经解决。若是你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决全部冲突:测试

$ git mergetool

This message is displayed because 'merge.tool' is not configured.
See 'git mergetool --tool-help' or 'git help config' for more details.
'git mergetool' will now attempt to use one of the following tools:
opendiff kdiff3 tkdiff xxdiff meld tortoisemerge gvimdiff diffuse diffmerge ecmerge p4merge araxis bc3 codecompare vimdiff emerge
Merging:
index.html

Normal merge conflict for 'index.html':
  {local}: modified file
  {remote}: modified file
Hit return to start merge resolution tool (opendiff):
复制代码

若是不想用默认的合并工具(Git 为我默认选择了 opendiff,由于我在 Mac 上运行了该命令),你能够在上方"merge tool candidates"里找到可用的合并工具列表,输入你想用的工具名。咱们将在第七章讨论怎样改变环境中的默认值。fetch

退出合并工具之后,Git 会询问你合并是否成功。若是回答是,它会为你把相关文件暂存起来,以代表状态为已解决。

再运行一次 git status 来确认全部冲突都已解决:

$ git status
On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

        modified:   index.html
复制代码

若是以为满意了,而且确认全部冲突都已解决,也就是进入了暂存区,就能够用git commit来完成此次合并提交。提交的记录差很少是这样:

Merge branch 'issue20'

Conflicts:
  index.html
#
# It looks like you may be committing a merge.
# If this is not correct, please remove the file
# .git/MERGE_HEAD
# and try again.
#
复制代码

若是想给未来看此次合并的人一些方便,能够修改该信息,提供更多合并细节。
好比你都做了哪些改动,以及这么作的缘由。有时候裁决冲突的理由并不直接或明显,有必要略加注解。


  • 七、查看分支列表
$ git branch
复制代码

branch

其中绿色前面带 *号的表示当前选中的分支


  • 八、查看分支列表以及分支信息
$ git branch -v
复制代码
branch info


  • 九、查看那些分支还未/已合并

已合并,一般咱们为了处理某个问题而开的分支,在合并以后就能够删除了

eg:
$ git branch --merged
复制代码

未合并,若是删除未合并的分支会报错,由于那样子会数据丢失,可是若是你执意删除可使用-D来进行删除

eg:
$ git branch --no-merged
复制代码


2、远程分支

当咱们须要协同开发的时候,咱们一般会一个发布通道,一个测试通道以及一个正在开发的通道。

发布通道中咱们会把测试ok的代码合并到里面去,而后咱们新编写的功能开发完成就会加入测试分支。

相似于下面这样子,做者本身画的,有点丑……见谅

Git分支管理.png


  • 一、新建远程分支
    能够分为两步,第一步新建立本地分支,第二步把本地分支push到服务器上去
eg:
$ git branch haha

eg:
$ git push origin haha
复制代码


  • 二、下拉指定分支
git checkout --track origin/testbranch
复制代码

若是你从服务器上面下拉分支的时候出现了
fatal: 'origin/testbranch' is not a commit and a branch 'testbranch' cannot be created from it
这种错误,那么就可使用

重点:

git fetch origin 来同步远程服务器上的数据到本地

而后在下拉一次

$ git checkout --track origin/testbranch

Branch testbranch set up to track remote branch testbranch from origin.
Switched to a new branch 'testbranch'
复制代码

看到Switched to a new branch 'xxx'这样子的字样就说明成功了


  • 三、提交数据到指定分支
    git push origin 分支名称
git push origin haha
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 260 bytes | 260.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
...
复制代码


  • 四、删除指定分支
    git push origin :分支名称
git push origin :haha
remote: Powered by Gitee.com
To gitee.com:codepgq/EIQ-Smart.git
 - [deleted]         haha
复制代码




3、合并分支的指定文件

假设如今有两个分支:jack、smith,
而后在jack中新建了两个文件(a.c 和 b.c)
这个时候想把b.c合并到smith中

  • 首先在jack 这里若是你没提交有可能会丢失数据
git add . 
git commit -m "xxxxx"
复制代码
  • 而后就要切换分支
git checkout simith
复制代码
  • 再把要合并的文件,导入到当前的分支中
    git checkout 分支名 文件路径
git checkout jack b.c
这里须要注意,由于b.c就在根文件,因此不须要路径只须要文件名,
可是若是你的文件在子文件夹内,就须要把文件路径也导入进来
复制代码


更新:2018年11月06日

如何切换Git的源(当我的项目转移到公司帐号下或者修改了项目名称)

码云
git remote set-url origin [git@gitee.com](mailto:git@gitee.com):地址.git


github
git remote set-url origin [git@github.com](mailto:git@github.com):地址.git复制代码

做为一个开发者,有一个学习的氛围和一个交流圈子特别重要,这是个人交流群761407670(111),你们有兴趣能够进群里一块儿交流学习

相关文章
相关标签/搜索