HbUsageGithubBranch - 101camp/playground GitHub Wiki
<- How2jumpInDU · DebugUself/du4proto Wiki <自怼圈跳入> 中提到 开独立分支.
- 此分支非彼分支, 即不是一个项目中为了完善项目, 从而早晚要合并到主分支的其他分支. 而是永远不会合并到主项目, 仅为方便怼友互看的独立分支. 每个独立分支是一个独立的项目.
- 此分支特征
- 新建时基本空白, 不包含主分支的内容
- git 会自动把之前版本的内容复制到你的新版本, 我们要对抗之.
- 需要包含: git.ignore 和 README.md, 自己新建.
- 难以 merge 到其他分支
- git 会自动 merge 或关联到其他分支, 我们要对抗之.
- 新建时基本空白, 不包含主分支的内容
这就是自怼圈的气质设计之一:
<~ https://github.com/DebugUself/du4proto/issues/746#issuecomment-520459746
- AKA
- All Know All
- 因为 fork 后, 大家分散在各自分支中
- 但是, 几乎没有机会合并回主线
- 因为, 没有项目是必须合并回的
- 从而,所有人的努力, 很难集中体验到
- 而, 使用 orphen 分支:
- 每个人都有独立不相关的空间
- 但是, 所有人的所有行为, 都在同一仓库中
- 从而触发 github 提醒服务,将之通过 列表 广播给全体知道
- 这样就用 git 仓库自然形式, 完成:
- 独立
- 协同
- 自动提醒
- ...
- 各种依赖氛围完成融合
- 而且, 每个人涉及的 git 操作也减少到最小
- 如果都是 fork 仓库
- 那么无论同步上游变化
- 还是合并回主仓库
- 都涉及复杂的 git 操作, 以及评审工作
-
注释: 以下某些 git 命令是大妈设置的缩写命令,如未设置可用原命令取代-
git br=git branch -
git co=git checkout -
git pl=git pull
-
- 克隆 du4proto,此时只拉取 master 分支
- 本地新建孤子分支
- 将新建的分支推送至 du4proto
$ cd <file folder>
$ git clone https://github.com/DebugUself/du4proto.git
$ cd du4proto
$ git checkout --orphan orphan_name
$ git rm -rf .
$ rm '.gitignore'
$ echo "#Title of Readme" > README.md
$ git add README.md
$ git commit -a -m "Initial Commit"
$ git push --set-upstream origin orphan_name
打开insights查看network,检查新建的分支和其他分支有无关联,如果完全独立,即可确认为孤子分支。
举个例子,如下图,cc1,cc2和cc3之间存在关联,属于普通分支,cc4完全独立于其他分支,是孤子分支。
当前分支
༄ git br -a
* master
zoejane
remotes/origin/134_career
remotes/origin/134_spider
remotes/origin/DM_tools
remotes/origin/DUW
remotes/origin/DU_tools
remotes/origin/HEAD -> origin/master
remotes/origin/LearnWebScraping
remotes/origin/ZQ4mDjango
remotes/origin/ZQclj
remotes/origin/ZQgo
remotes/origin/ZQipynb
remotes/origin/ZQmma
remotes/origin/bamboo
remotes/origin/csapp
remotes/origin/deepNLP
remotes/origin/hstaoqian
remotes/origin/leiyunhe
remotes/origin/master
remotes/origin/mxclover
remotes/origin/spider
remotes/origin/tl2wc
remotes/origin/zoejane
本地复本:
༄ du -hs *
3.0M CSAPP
17M DUW
3.7M TL2wc
14M ZQ4mDjango
14M ZQclj
14M ZQgo
1.2M ZQipynb
2.0M ZQmma
14M bamboo
15M deepNLP
2.4M dm_tools
20M tools4DU
18M zoejane
真正孤儿分支复本:
༄ du -hs *
32M 2013.programming-clojure
296K DUWeekly
180K clj_ZQ
812K dj_ZQ
140K go_ZQ
424K ipynb_ZQ
148K mma_ZQ
4.0K requirements.txt
400K srv4DU.leo
776K st_heroku
740K tools4DU
- 本地新建一个文件夹
- 拉取怼圈某个孤子分支
$ cd(注意, 这很重要, 不要在du4proto 里面建这个文件夹)
$ mkdir branch_name
༄ cd branch_name
༄ git init
...
༄ git remote add -t branch_name -f origin [email protected]:DebugUself/du4proto.git
༄ git co branch_name
༄ git br -a
* branch_name
remotes/origin/branch_name
༄ git pl
Already up-to-date.
-
-t:branch to track -
-f:fetch the remote branch -
git remote add -t ZQgo -f origin [email protected]:DebugUself/du4proto.git:在添加 ZQgo 分支的同时,追踪、拉取此分支的内容,并将此分支设为 origin。完成这步后,文件夹内是没有任何文件的。 -
git co=git checkout,完成这步后才看得见文件。 -
git pl=git pull
意外将其他分支 merge 到孤子分支, 会导致远程仓库的文件过大, 浪费每位成员的网络资源, 因此要语义杜绝. 但意外发生, 解决方案如下:
- 检查本地分支的工作复本是否被污染
$ git ll
ll = log (~/.gitconfig 中定义)
命令查看仓库分支的版本变化,对比污染和孤子分支的版本历史关系图
-
如果被污染, 重新clone新复本
- 删除原来的文件夹
- 新建文件夹, 重复上面'本地如何预防孤子分支合并'中的命令
-
如果已被污染且push到远程仓库,造成远程仓库也被污染了
- 手动备份需要的文档及代码
- 然后强行回滚至未被污染的状态
- 最后正常的push
- Git - git-checkout Documentation
- Create an orphan branch in a repo.
- 如何建立一個沒有 Parent 的獨立 Git branch | ihower { blogging }
- 24h[ask]拟在本仓库中建立不相关分支,请大家看看我的操作是否正确 · Issue #87 · DebugUself/du4proto
- HbUsageGit · DebugUself/du4proto Wiki
- 24h[ASK]git 实用指北实操问题 · Issue #164 · DebugUself/du4proto
- [BC](Blood Case) 血案之宏大 merge · Issue #191 · DebugUself/du4proto
- [DUW](Blood Case) 血案重现之宏大 merge · Issue #201 · DebugUself/du4proto
- 怼周刊: 19w/20w/22w
- 迁入分支, 开始玻璃花园
- 180807 NBR-hugh add git abbreviation explain
- 17.11.16 caijun add.
- 17.9.16 lgh add.
- 17.7.14 ZQ init.
