git下

-----------

1. 分支管理策略
    1)master分支
    非常稳定的,只用来发布新版本,平时不在上面干活
    2)dev分支
    不稳定的,主要在上面干活,每个人都有自己的分支,时不时的往dev分支上合并

    通常,合并分支时,如果可能,Git会用`Fast forward`模式,但这种模式下,删除分支后,会丢掉分支信息。
    如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
    > git log --graph --pretty=oneline --abbrev-commit

2. Bug分支
    你目前在dev分支上工作,工作到一半,但突然有一个紧急的bug需要修复,可以先保存你的工作现场,修复完bug后,在切回来。
    步骤:
    当前在dev分支上:
        git stash  # 把当前工作现场“储藏”起来
    切换到要修复bug的分支(假定master):
        git checkout master
        git checkout -b issue-101
        .... 修复问题
        git add filename
        git commit filename
    把修改合并到修复的分支:
        git checkout master
        git merge --no-ff -m "merge fix 101 modification" issue-101
        git branch -D issue-101
    切换回工作现场:
        git checkout dev
        git stash list  # 查看之前保存了哪些工作现场
        git stash drop
        两种恢复方式:
        1)git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除
            git stash apply stash@{0}
            git stash drop stash@{0}
        2)git stash pop,恢复的同时把stash内容也删了

3. Feature分支
    与bug分支类似
    两条命令:
    1)git branch -d dev_name  # 已经合并完的分支可以使用此命令删除
    2)git branch -d dev_name  # 强制删除分支(未合并的也可以)

4. 多人协作
    多个人在同一分支上工作,如何正确的合并文件?
    两种情况:
    **1)你和他人同时修改同一个文件,他人修改完成,提前推送到远程,如何提交你的修改**
    详细步骤:
        1)试图用git push origin <branch-name>推送自己的修改;
        2)如果推送失败,则因为远程分支比你的本地更新,需要先用git pull拉取远程最新的版本;
        3)如果合并有冲突,则解决冲突,并在本地提交;
        4)没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送
    **2)你和他人操作的不是同一个文件
    详细步骤:
        1)试图用git push origin <branch-name>推送自己的修改;
        2)如果推送失败,先用git pull拉取远程最新的版本;
        3)git add .  # 添加本地的全部修改到暂存区
        4)git commit -m "说明信息"  # 提交更改至本地
        5)git push origin <branch-name>推送本地分支至远程
    提交更改前,都要先git pull拉取远程最新版本  

    当从远程克隆时,Git自动把本地的master分支与远程的master分支对应起来,远程仓库的默认名称是origin。
    查看远程库信息:
        git remote -v
    推送分支:
        git push origin master  把本地的mater分支推送到远程对应的master分支上
        git push origin dev     把本地的dev分支推送到远程对应的dev分支(远程没有dev分支会自动创建一个dev分支)
    创建远程origin的dev分支到本地
        git checkout -b dev origin/dev
    指定本地dev分支与远程origin/dev分支的链接
        git branch --set-upstream-to origin/dev dev
        或
        git branch --track origin/dev dev

5. 标签
    tag是一个容易记住的有意义的名字,它跟某个commit绑定在一起。
    打标签:
        git tag tag_name  # 默认打在最新提交的commit上,当前HEAD的指向
        git tag  # 查看标签
        git show tag_name  # 查看标签详细信息
    在指定的commit上打标签:
        git log --pretty=oneline  # 查看commit id
        git log -a tag_name -m "explain content" commit_id
    推送标签:
        git push origin tag_name    # 推送一个指定的标签
        git push origin --tags      # 推送全部尚未推送到远程的本地标签
    删除标签:
        1) 标签尚未推送到远程
        git tag -d tag_name
        2)标签已推送到远程
        git tag -d tag_name
        git push origin :refs/tags/tag_name

6. Rebase
    解决查看log分支多,混乱的问题;遗留
    
原文地址:https://www.cnblogs.com/xiao-xue-di/p/9758313.html