Git 记录

参考:

  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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 应该给乡下的外婆带什么礼物?修改这样子的,本人小硕一枚,不幸被国家奖学金砸中,于是个人资产顿时由0增长至20000...
    plantAtree_dAp阅读 2,271评论 0 0
  • 深院绿荫娇花红,夜雨未止出芙蓉,长台孤影叹良辰,低空情鸾苦寻凤。 有道是,空心无依,愁千褶。百寻,千寻,亦无他!
    古月弧阅读 1,053评论 0 1
  • (NO.050) 游戏这个词在我脑海里形成,是从小学时回家的路上某个隐蔽的小巷里摆满的游戏机里产生的。游戏机室总是...
    皇后驾到阅读 1,105评论 0 0
  • 胸怀大志,要做大事,这几乎是每个人的愿望和目标,但是最后真正做成事的却是寥寥无几,今天看了一篇文章很受启发,来一次...
    龙猫不是猫吧阅读 3,928评论 2 1
  • 早安,致自己:听说爱情有四个阶段,熬过去就会永远在一起。 有位心理学家曾写道, 一个成熟称得上真爱的恋情必须经过四...
    杜盈贤阅读 3,570评论 6 5