Git篇章

110 阅读3分钟

git fetch 和 git pull的区别是什么?

git fetch 命令只会将数据下载到你的本地仓库--它并不会自动合并或修改你当前的工作。 当准备好时你必须手动将其合并入你的工作。 git pull 命令来自动抓取后合并该远程分支到当前分支。

git rebase 和 git merge的区别是什么?

git-scm.com/book/zh/v2/…

什么是git flow

Git 作为一个源码管理系统,不可避免涉及到多人协作。 协作必须有一个规范的工作流程,让大家有效地合作,使得项目井井有条地发展下去。"工作流程"在英语里,叫做"workflow"或者"flow",原意是水流,比喻项目像水流那样,顺畅、自然地向前流动,不会发生冲击、对撞、甚至漩涡。 它最主要的特点有两个: 首先,项目存在两个长期分支。

  • 主分支master
  • 开发分支develop

前者用于存放对外发布的版本,任何时候在这个分支拿到的,都是稳定的分布版;后者用于日常开发,存放最新的开发版。 其次,项目存在三种短期分支。

  • 功能分支(feature branch)
  • 补丁分支(hotfix branch)
  • 预发分支(release branch)

一旦完成开发,它们就会被合并进developmaster,然后被删除。 Git flow的优点是清晰可控,缺点是相对复杂,需要同时维护两个长期分支。大多数工具都将master当作默认分支,可是开发是在develop分支进行的,这导致经常要切换分支,非常烦人。

更大问题在于,这个模式是基于"版本发布"的,目标是一段时间以后产出一个新版本。但是,很多网站项目是"持续发布",代码一有变动,就部署一次。这时,master分支和develop分支的差别不大,没必要维护两个长期分支。

什么是cherry-pick

zhuanlan.zhihu.com/p/90816644

如何撤销已经提交的记录

git-scm.com/book/zh/v2/…

1.使用 git commit --amend 命令

对之前的commit 提交进行修改。事实上确实如此,不仅可以修改提交的内容,还可以修改commit 信息。
注意:这里的之前指最近的commit,而且没有push到远程。 可以使用git commit --amend -m "提交描述" 修改comment

image.png

2.撤销已经提交到本地仓库的 Commit

原文链接:www.ngui.cc/el/916297.h…

使用 git reset --<cmd-type> <commit id> 命令即可撤销已经执行的 Commit 提交记录

使用的命令及参数:

其中的 <cmd-type> 参数为你需要执行的命令,这里有三种:

  • soft:该命令会保留你已经执行的 Commit 中所做出的 Changes 并 Stage
  • mixed:该命令会保留你已经执行的 Commit 中所做出的 Changes 并 Unstage
  • hard:该命令不会保留你已经执行的 Commit 中所做出的 Changes
git reset --soft <commit id>
git reset --mixed <commit id>
git reset --hard <commit id>

其中的 <commit id> 参数为你已经执行的 Commit id,或者说你想要撤销到的某条 Commit 记录的 id:

  • 当你需要撤销的只是上一步已经执行的 Commit 时,你可以使用 HEAD~1
  • 当你需要撤销的那个 Commit 之后又有几条新的 Commit 记录,而你需要撤销到指定的某一条 Commit 提交记录,这时使用的是想要撤销到的那条 Commit 记录的 id

注:撤销提交记录不能跨分支撤销,否则会出错,执行撤销操作时需要注意你当前处于哪个分支节点 !