美文网首页
Git 记录

Git 记录

作者: zhaoyubetter | 来源:发表于2018-02-24 13:29 被阅读8次

    参考:

    1. https://www.yiibai.com/git/git_basic_concepts.html

    零零散散的一些记录,仅供参考

    1.Git 常用操作命令

    1. 创建分支:
      git checkout -b dev // 创建并切换
    2. 切换分支
      git checkout master // 切换到主分支
    3. 查看当前分支
      git branch / git branch -r 查看远程分支
      你可以通过"git remote"命令自由定义额外的“远程名称”。但“git clone”命令默认使用的是“origin”这个名称(origin 表示主机,下面fork时会有介绍 )。
    4. 合并分支
      git merge dev // 命令用于合并指定分支到当前分支
    5. 删掉指定分支
      git branch -d dev
      git push origin :dev2 // 删除远程分支 《不要用》
      git push origin dev // 提交 : 注意冒号
    6. 查看分支合并情况
      git log --graph --pretty=oneline --abbrev-commit
    7. checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
      git checkout -b dev origin/dev

    2.小工程的Git 分支管理策略

    首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
    干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
    和小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

    分支是如何存的

    • .git/refs/head/[本地分支]
    • .git/refs/remotes/[正在跟踪的分支]

    合并分支时:请注意--no-ff参数,表示禁用Fast forward,Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息)
    git merge --no-ff -m "merge with no-ff" dev 这里是双引号

    2.1 Bug分支管理流程

    1. 保存工作现场:
      git stash
    2. 确认哪个分支上有bug,如:master,马上创建临时分支:
      git checkout master // 切换到master分支
      git checkout -b issue-101 // 创建解决bug分支 issue-101
    3. 修复bug,切换到主分支,完成合并,并删除 issue-101分支
      git checkout master
      git merge --no-ff -m 'merged bug fix 101' issue-101 // 合并
      git branch -d issue-01 // 删除bug分支
      git checkout dev // 干活去
      git stash pop

    2.2 Feature 新功能分支

    类似于bugs分支管理流程

    1. 创建新的分支,并着手新功能开发
      git checkout -b feature-vulcan
      2.切换到dev,准备合并

    3. git tag 命令

    1. 打TAG:
      git tag -a 标签名称 -m "标签注释"
    2. push标签
      git push origin 标签名称

    4. git fetch 命令

    1. git fetch一般流程
      • git fetch 只会将本地库所关联的远程库的commit id更新至最新
        比如,取回origin主机的master分支。
      • git fetch origin master
        拉取远程 master 分支的更新,注意不会合并,只是更新.git/remotes/下相关的文件;
      • git fetch origin
        拉取远程 origin下的所有分支的更新,主要与上面的命令的区别fetch origin master
      • git diff master origin/master
        本地分支master和远程分支master的差异
      • .cat .git/FETCH_HEAD
        可以看到其状态,若都是 not-for-merge 则不会有接下来的 merge 动作
      • git merge origin/dev
        本地当前的分支与远程远程dev进行合并;
        完整写法:(git merge origin/dev dev) 远程分支 origin/dev merge 到本地 dev 分支;
    1. 将本地修改推送到远程分支
      • git push origin dev
        将本地的dev分支推送到origin主机的dev分支。如果dev不存在,则会被新建;

        如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支;
        git push origin :master 等同于 git push origin --delete master

      • git push origin dev:dev_by
        远程分支名称跟本地不一样的处理,dev_by 为远程分支名

    5. git fork 后的操作 (github,gitlab)

    fork 就是将别人仓库的fork到自己的仓库中,如果需要与上游仓库进行同步,则需要在本地建立2个remote:1个自己库的(origin 自己的主机),一个上游库的(upstream主机);

    一般操作流程与相关命令

    1. git remote -v
      查看关联的远程仓库;verbose
    2. git remote add upstream http://git.xxx.xxx/xxx.git
      将本地分支关联到上游远程 upstream,为别名,跟origin类似
      这样通过 git remote -v 可查看所有的远程分支
    3. git fetch upstream dev
      fetch upstream的dev分支
    4. git fetch upstream
      fetch upstream 上的所有分支
    5. git merge upstream/dev
      merge upstream/dev 到本地当前分支
      完整写法如:(git merge upstream/dev dev) // merge 到本地 dev 分支
    6. git push origin dev:dev
      将当前dev分支内容push到origin下的dev分支
    7. git remote set-url origin git@git.xxx.xx.git
      用来别名来修改对应的远程git地址
    8. 全部操作完毕后, 在网站上使用 new request merge 向上游分支发起pull request 请求;

    6.Rebase操作

    1. git pull --rebase

    注意:一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作
    https://www.git-tower.com/learn/git/ebook/cn/command-line/advanced-topics/rebase

    相关文章

      网友评论

          本文标题:Git 记录

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