美文网首页
Git操作流程:(三)分支

Git操作流程:(三)分支

作者: wsgdiv | 来源:发表于2021-02-05 22:19 被阅读0次

1、创建与合并分支

$ git checkout -b dev                             //创建分支,git checkout命令加上-b参数表示创建并切换,相当于两条命令:$ git branch dev      $ git checkout dev    Switched to branch 'dev'
Switched to a new branch 'dev'

$ git branch                //git branch命令查看当前分支
* dev
  master

$ git checkout master                                 //切换回master分支,最新版本的Git提供了新的git switch命令来切换分支
//创建并切换到新的dev分支,可以使用:$ git switch -c dev
//直接切换到已有的master分支,可以使用:$ git switch master
Switched to branch 'master'

$ git merge dev                                     //git merge命令用于合并指定分支到当前分支。把dev分支的工作成果合并到master分支上
Updating d46f35e..b17d20e
Fast-forward
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

$ git branch -d dev                               //删除dev分支
Deleted branch dev (was b17d20e).

2、冲突

$ git status                                         //git status可以告诉我们冲突的文件
On branch master
Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:   readme.txt

no changes added to commit (use "git add" and/or "git commit -a")
$ git log --graph --pretty=oneline --abbrev-commit        //git log --graph命令可以看到分支合并图。
*   cf810e4 (HEAD -> master) conflict fixed
|\  
| * 14096d0 (feature1) AND simple
* | 5dc6824 & simple
|/  
* b17d20e branch test
* d46f35e (origin/master) remove test.txt
* b84166e add test.txt
* 519219b git tracks changes
* e43a48b understand how stage works
* 1094adb append GPL
* e475afc add distributed
* eaadf4e wrote a readme file
$ git merge --no-ff -m "merge with no-ff" dev                  //准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward,本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
Merge made by the 'recursive' strategy.
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

3、bug分支

$ git stash                       stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作
Saved working directory and index state WIP on dev: f52c633 add merge

$ git checkout master                         //假定需要在master分支上修复bug
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)

$ git checkout -b issue-101
Switched to a new branch 'issue-101'

$ git add readme.txt 
$ git commit -m "fix bug 101"
[issue-101 4c805e2] fix bug 101
 1 file changed, 1 insertion(+), 1 deletion(-)

$ git switch master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)

$ git merge --no-ff -m "merged bug fix 101" issue-101
Merge made by the 'recursive' strategy.
 readme.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

$ git switch dev                        //修复bug后,返回原分支
Switched to branch 'dev'

$ git status
On branch dev
nothing to commit, working tree clean

$ git stash list
stash@{0}: WIP on dev: f52c633 add merge
$ git branch                        //如果这个bug在dev分支上也存在
* dev
  master
$ git cherry-pick 4c805e2
[master 1d4b803] fix bug 101
 1 file changed, 1 insertion(+), 1 deletion(-)

注意:Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法:
一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;
另一种方式是用git stash pop,恢复的同时把stash内容也删了
可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$ git stash apply stash@{0}

如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

查看远程库信息,使用git remote -v;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

4、Rebase

$ git rebase                        //把分叉的提交历史“整理”成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。
First, rewinding head to replay your work on top of it...
Applying: add comment
Using index info to reconstruct a base tree...
M   hello.py
Falling back to patching base and 3-way merge...
Auto-merging hello.py
Applying: add author
Using index info to reconstruct a base tree...
M   hello.py
Falling back to patching base and 3-way merge...
Auto-merging hello.py

素材来源:廖雪峰的git教程

相关文章

  • Git操作流程:(三)分支

    1、创建与合并分支 2、冲突 3、bug分支 注意:Git把stash内容存在某个地方了,但是需要恢复一下,有两个...

  • 简单介绍 git-flow 流程

    一个成功的 git 分支操作流程A successful Git branching model Git Flow...

  • Git命令清单 + 一张图掌握Git

    Git命令清单Git远程操作详解Git使用规范流程Git分支管理一张图掌握Git

  • git分支规范

    分支管理参考git-flow(git-flow介绍)的工作流程,但不使用git-flow。所有的分支的操作都需要手...

  • Git常用命令

    相关资料:廖雪峰教程链接Git远程操作详解Git查看、删除、重命名远程分支和tag 操作流程 日常使用git更新提...

  • Git学习笔记(一)

    本文主要分为以下几个方面: Git简介 Git工作流程及原理 Git基本操作 Git分支管理 Github远程仓库...

  • git flow 工作流程

    Gitflow 规范我们工作时写代码的流程,操作git的流程 几个常用的分支-master 主分支,不允许改代码...

  • git常用操作 🎀

    git常用操作 ? 基本知识 查看git信息 修改git配置 提交类操作 分支类操作 创建分支 查看分支 修改分支...

  • 本地分支默认自动关联远程分支

    场景 拉取远程分支以后首次git push后,就提示要关联远程分支,每次都是手动操作关联。 操作流程 首先获取远程...

  • Git 的使用(二)

    分支相关操作: 查看分支:git branch创建分支:git branch 切换分支:git che...

网友评论

      本文标题:Git操作流程:(三)分支

      本文链接:https://www.haomeiwen.com/subject/zlibtltx.html