• 使用分支


    git branch

    分支代表了一条独立的开发流水线.新的提交被存放在当前分支的历史中,导致了项目历史被 fork 了一份。
    git branch 命令允许你创建、列出、重命名和删除分支,
    git branchgit checkoutgit merge 这两个命令通常紧密地结合在一起使用。

    用法

    #列出仓库中所有分支
    git branch
    
    #创建一个名为 <branch> 的分支。不会 自动切换到那个分支去。
    git branch <branch>
    
    #删除指定分支。这是一个安全的操作,Git 会阻止你删除包含未合并更改的分支。
    git branch -d <branch>
    
    #强制删除指定分支,即使包含未合并更改。如果你希望永远删除某条开发线的所有提交,你应该用这个命令。
    git branch -D <branch>
    
    #将当前分支命名为 <branch> 也就是将当前分支重命名。
    git branch -m <branch>
    

    讨论

    不管 bug 是大是小——你都应该新建一个分支来封装你的修改,

    例子

    创建分支

    分支只是指向提交的 指针 ,理解这一点很重要。当你创建一个分支是,Git 只需要创建一个新的指针——仓库不会受到任何影响

    删除分支

    一旦你完成了分支上的工作,准备将它并入主代码库,你可以自由地删除这个分支,而不丢失项目历史:

    git checkout

    #创建并查看 <new-branch>,-b 选项是一个方便的标记,告诉Git在运行 git checkout <new-branch> 之前运行 git branch <new-branch>。
    git checkout -b <new-branch>
    
    #将 <existing-branch> 作为新分支的基,而不是当前分支
    git checkout -b <new-branch> <existing-branch>
    

    分离的 HEAD

    HEAD 是 Git 指向当前快照的引用

    git merge

    合并是 Git 将被 fork 的历史放回到一起的方式。git merge 命令允许你将 git branch 创建的多条分支合并成一个。

    用法

    #将指定分支并入当前分支
    git merge <branch>
    

    讨论

    快速向前合并 。Git 只需要将当前分支顶端(快速向前地)移动到目标分支顶端

    如果分支已经分叉了,那么就无法进行快速向前合并。当和目标分支之间的路径不是线性之时,Git 只能执行 三路合并 。三路合并使用一个专门的提交来合并两个分支的历史.

    快速向前合并

    下面的代码创建了一个分支,在后面添加了两个提交,然后使用快速向前合并将它并入主分支

    # 开始新功能
    git checkout -b new-feature master
    
    # 编辑文件
    git add <file>
    git commit -m "开始新功能"
    
    # 编辑文件
    git add <file>
    git commit -m "完成功能"
    
    # 合并new-feature分支
    git checkout master
    git merge new-feature
    git branch -d new-feature
    

    三路合并

    需要进行三路合并,因为 master 在这个功能开发时取得了新进展。这是复杂功能和多个开发者同时工作时常见的情形

    # 开始新功能
    git checkout -b new-feature master
    
    # 编辑文件
    git add <file>
    git commit -m "开始新功能"
    
    # 编辑文件
    git add <file>
    git commit -m "完成功能"
    
    # 在master分支上开发
    git checkout master
    
    # 编辑文件
    git add <file>
    git commit -m "在master上添加了一些极其稳定的功能"
    
    # 合并new-feature分支
    git merge new-feature
    git branch -d new-feature
    
    # git远程删除分支后,本地git branch -a 依然能看到的解决办法。
    使用命令 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息   
    此时我们可以看到那些远程仓库已经不存在的分支,根据提示,使用 git remote prune origin 命令:   
    提示你可以通过git remote prune 移除这个分支。(也就是说你可以刷新本地仓库与远程仓库的保持这些改动的同步)
    这个在远程删除的分支在你本地仓库也将被删除。再通过git branch –a 来查看。  
    
    

    注意,Git 现在无法进行快速向前合并,因为无法将 master 直接移动到 new-feature。

  • 相关阅读:
    HDU 3068 Manacher
    HDU 6188最小费用流
    Codeforces Round #442 (Div. 2) Danil and a Part-time Job
    并查集
    HDU 5988最小网络流(浮点数)
    HOJ
    HOJ
    POJ
    POJ
    关于async
  • 原文地址:https://www.cnblogs.com/zhangjianbin/p/7774483.html
Copyright © 2020-2023  润新知