我遇到的 Git 使用场景

作者: x_zhaohu | 来源:发表于2017-08-24 10:28 被阅读58次

记录下最近遇到的 Git 使用场景,欢迎补充。

事先准备

注:假设项目地址是真实的。

场景一:需要添加数据处理的 API,然后 patch 到 dev@email.com

开发过程中我们编写了 docscode files,那怎么使用 Git 呢?

git add docs
git commit -m "Add docs of data process"
git add .
git commit -m "Add codes of data process"
git  format-patch HEAD~2 --subject-prefix "demo v1" --cover-letter -o patches
git send-email patches -to dev@email.com  

如上操作就是场景一的实现,不过这里有几个细节需要注意:

  • commit description 不要超过 50 个字符,如果超过了需要一下操作
 git add docs
 git commit
 之后进入一个文本,在注释下面的第一行写标题,然后空一行,之后写详细的 commit description
  • 如上示例中,patches 是自动生成的,之后需要编辑 patches 里的第一个描述文件,需要修改主题和描述
  • patch 到指定邮箱时,最好先 patch 给自己,检查下,减少错误发生的概率

场景二:继场景一后,patch 后的代码需要修改部分 code files,然后再 patch 到 dev@email.com

修改完代码后,我们是否再重提一个新的 commit 呢?NO, 我们要把修改后的代码追加到 Add codes of data process 中就行,因为修改的是 data process,所以没必要提新的 commit。怎么使用 Git 呢?

git add .
git commit --amend
会进入commit 的描述文件,如果你想添加,在下面添加,不然就保存退出就好啦
git format-patch HEAD~1--subject-prefix "demo v2"
只是会生成一个 patch 文件,假设文件名为:demov2.patch 
git send-email demov2.patch -to dev@email.com

场景三:继场景二后,docs 需要更新,然后提 PR

这个该怎么办呢?docs commit 先于 code files commit, 不能像场景二似的那样操作。难道 reset 到最初嘛?这时 git rebase 就有用武之地啦。具体操作如下:

git rebase -i HEAD~~
之后进入一个文本文件,这时需要 `docs commit` 修改为 `edit` 即可。然后进行文档修改。
git add .
git commit --amend
git rebase --continue
然后将本地分支推送到远程仓库就 ok 啦

需要注意的是,想修改那个 commit, git rebase -i commit_id 指定 commit_id

场景四:继场景三后,code files 需要添加新功能

因为 code files 是最新的 commit 所以我们按照场景二操作就ok.

场景五:继场景四后,在 code files 提交前,被 fork 的仓库更新啦,需要保持一致,方能将提的 pr Merge.

这时,rebase 就起作用啦。具体操作如下:

git remote add upstream https://github.com/root/demo
git fetch upstream
git checkout master
git rebase upstream/master
git push origin master
之后再推送 commit 就 ok.

场景六: 继场景五后,发现项目中含义子模块没有提交到 PR

我一上来我就懵逼啦,子模块的仓库代码我更新啦,这个项目中 Update gitsubmodule 是什么意思呢?看下具体操作吧:

git submodule  // 查看子模块
git submodule init // 初始化子模块
git submodule update --remote // 获取远程最新的子模块

如上操作,将最新的 submodule 加载到本地,.gitmodules 也更新啦(其实更细了版本号),所谓的 Update gitsubmodule 就是添加 .gitmodules

Tips:保持良好的 Git 使用规范,合并多余的 committitle 要详细突出主题,不要轻易关闭 PR

以前我常用的 Git 命令列表

  • git init
  • git add .
  • git commit -m "Submit a description"
  • git push origin master

被 Git 一顿完虐后,更新如下

  • git log
  • git reflog
  • git reset --hard commit_id
  • git rebase -i commit_id
  • git rebase --continue
  • git commit --amend
  • git remote -v
  • git remote add remoteName remoteAddress
  • git format-patch HEAD~n --subject-prefix "common project name and version"
  • git send-email patch -to emailAddress
  • git format-patch HEAD~n --subject-prefix "common project name and version" --cover-letter -o patches
  • git send-email patches -to emailAddress
  • git submodule
  • git submodule init
  • git submodule update --remote

注:commit_id 指提交的版本号,remoteName自动远程地址的名称,remoteAddress远程地址,HEAD~n,如果 patch 的话,n == 2的话是patch最近两次的commit,patch生成的 patch 文件,emailAddress收件人邮箱,patches 存放着多个 patch 文件

精彩文章,持续更新,请关注微信公众号:

帅哥美女扫一扫

相关文章

  • 我遇到的 Git 使用场景

    记录下最近遇到的 Git 使用场景,欢迎补充。 事先准备 需要fork的项目地址:https://github.c...

  • git忽略特殊文件,.gitignore的使用

    背景 在使用 git 的时候,会遇到必须把某些文件放到 Git 工作目录中,但又不能提交它们的场景,比如说,保存了...

  • git使用

    本文通过以下四个部分讲解git的使用 Git配置 Git使用场景 Git分支管理方法 常用git命令 在讲解...

  • 代码部署发布时候遇到的问题

    在使用spinnaker发布代码时候,遇到的问题是这样的场景:使用git管理代码版本,每一次push之后,都会有一...

  • 6.Git 实战系列:场景:丢弃当前修改,重新检出

    场景:git checkout -f的使用场景 wangxiaodeMacBook-Pro:playgit wan...

  • IDEA使用Git协同开发

    使用场景 场景一:组长创建项目并提交到远程Git仓库 场景二:组员从远程Git仓库上获取项目源码 场景三:组长修改...

  • Git自学成才——git merge

    概念 git merge 和 git rebase 是使用率非常高的两条指令本文对git merge的日常使用场景...

  • git常见使用 场景

    给分支 标记tag git checkout branchName切换到 分支 git log查看分支 提交记录i...

  • git使用场景

    1、git 只提交部分文件 有时,在git push之后,才发现还有一些代码需要进行很小的改动,这些改动在原则上不...

  • Git的使用场景

    以此文记述工作中遇到的Git问题,及其解决方法。 恢复被同事误删的文件 场景:同事认为文件 useful.js 在...

网友评论

    本文标题:我遇到的 Git 使用场景

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