本文转自开源中国社区,修复了几处文字错误。文章译者:Lax,xue777hua,FGQ,showme,Tocy,lidashuang,JoeyBlue。
英文原文:A successful Git branching model

在这篇文章中,我提出一个开发模型。我已经将这个开发模型引入到我所有的项目里(无论在工作还是私人)已经一年有余,并且它被证明是非常成功的。我打算写这些已经很久了,但我一直找不到时间来做,现在终于有时间了。我不会讲任何项目的具体细节,仅是关于分支策略和释放管理相关内容。

阅读全文 »

本文翻译自git-tower.com

提交相关联的更新

一次提交,是有关联的更新的一个打包。比如,修复两个不同的bug,应该是两次提交。小型提交,使其他开发者更易理解那些更新。当出错时,也更容易回滚。
有了像暂存区域和暂存文件某部分的工具,git很容易的创建细粒度的提交。

经常性提交

经常提交能让你的提交更小,而且,再一次说,帮助你只提交有关联的更新。另外,它可以让你你更加频繁的跟其他人分享你的代码。那样,每个人更容易定期整合更新,避免合并冲突。相反,拥有少量的且巨大的更新,并且不经常分享,使得他人很难去解决冲突。

阅读全文 »

以下内容纯属个人观点,仅供参考。

  • 执行git pull [远程仓库名] [远程分支名]命令,注意与本地分支的对应。
  • 如果你是处女座,不要用git pull,而用git fetch,获取到更新后,手动进行merge。
  • origin只有在git fetch命令才会有用,其他情况,是否起名origin都无所谓,但是,别没事找事起个奇怪的名字。
  • 如无特殊情况,不建议远程分支与本地分支名字不对应,建议设置好upstream,除非远程分支与本地临时分支重名。可以用git branch -m [旧分支名] [新分支名]进行临时分支的重名。
    阅读全文 »

在执行git push时,git会给一个warning,然后推送更新,内容如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)


Counting objects: 10, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (6/6), 469 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@github0123:jeremy0123/fetch.git
c86dc9b..9d7c603 dev -> dev

阅读全文 »

这三条语句的,完整的命令为:

1
git fetch [远程仓库名] [分支01]:[分支02]

实际使用时,远程仓库名和分支名,在特定的情况下可以省略。一两句话说不清楚,采用脑图的方式展示。请一定要注意当前所在的分支是什么
如果图片显示太小,请到汪汪的网盘下载(文件夹为/Git)请直接下载,如果有XMind,请直接查看脑图源文件。

阅读全文 »

1
$ git clone git@github0123:jeremy0123/fetch.git fetch-local

执行如上git clone指令,相对于执行了如下工作。

  • 创建一个文件夹fetch-local,执行git init初始化为一个仓库,git remote add origin到远程仓库。
  • 创建远程跟踪分支remote/origin/*。
    阅读全文 »