Git 以分支的方式同时管理多个项目
你是否遇到过这样的问题:
|
![]() |
你是否有想过有其他的解决方法呢?比如在同一个Git仓库对所有项目进行统一管理呢,那么该怎么使用Git来做到统一管理而又不会影响到各项目的工作呢?












F:\Demo\D11>tree /F
文件夹 PATH 列表
卷序列号为 A627-5B49
F:.
└─master
main.txt F:\Demo\D11>git status
fatal: Not a git repository (or any of the parent directories): .git
F:\Demo\D11>git init
Initialized empty Git repository in F:/Demo/D11/.git/
F:\Demo\D11>git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
master/
nothing added to commit but untracked files present (use "git add" to track)
F:\Demo\D11>git add --all
F:\Demo\D11>git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: master/main.txt
F:\Demo\D11>git commit -a -m "master branch init"
[master (root-commit) 3ae67eb] master branch init
1 file changed, 1 insertion(+)
create mode 100644 master/main.txt F:\Demo\D11>git commit -a -m "master edit"
[master 60197ce] master edit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git checkout -b "master-dev"
Switched to a new branch 'master-dev'
F:\Demo\D11>git status
On branch master-dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: master/main.txt
no changes added to commit (use "git add" and/or "git commit -a")
F:\Demo\D11>git commit -a -m "master-dev edit"
[master-dev 67837dd] master-dev edit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git show-branch
! [master] master edit
* [master-dev] master-dev edit
--
* [master-dev] master-dev edit
+* [master] master edit
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* 67837dd (HEAD, master-dev) master-dev edit
* 60197ce (master) master edit
* 3ae67eb master branch init
F:\Demo\D11>git citool
F:\Demo\D11>git checkout --orphan pc
Switched to a new branch 'pc'
F:\Demo\D11>git status
On branch pc
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: master/main.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
pc/
F:\Demo\D11>git rm -r master/
rm 'master/main.txt'
F:\Demo\D11>RD /S master/
f:\demo\d11\master, 是否确认(Y/N)? Y
F:\Demo\D11>tree /F
文件夹 PATH 列表
卷序列号为 A627-5B49
F:.
└─pc
pc.txt
F:\Demo\D11>git add --all
F:\Demo\D11>git commit -a -m "pc/pc init"
[pc (root-commit) 3e176c6] pc/pc init
1 file changed, 1 insertion(+)
create mode 100644 pc/pc.txt
F:\Demo\D11>git show-branch
! [master] master edit
! [master-dev] master-dev edit
* [pc] pc/pc init
---
* [pc] pc/pc init
+ [master-dev] master-dev edit
++ [master] master edit
++ [master^] master branch init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* 3e176c6 (HEAD, pc) pc/pc init
* 67837dd (master-dev) master-dev edit
* 60197ce (master) master edit
* 3ae67eb master branch init
F:\Demo\D11>git status
On branch pc
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: pc/pc.txt
no changes added to commit (use "git add" and/or "git commit -a")
F:\Demo\D11>git commit -a -m "pc edit"
[pc d1f98d3] pc edit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git commit -a -m "pc reedit"
[pc 2fd85bf] pc reedit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git show-branch
! [master] master edit
! [master-dev] master-dev edit
* [pc] pc reedit
---
* [pc] pc reedit
* [pc^] pc edit
* [pc~2] pc/pc init
+ [master-dev] master-dev edit
++ [master] master edit
++ [master^] master branch init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* 2fd85bf (HEAD, pc) pc reedit
* d1f98d3 pc edit
* 3e176c6 pc/pc init
* 67837dd (master-dev) master-dev edit
* 60197ce (master) master edit
* 3ae67eb master branch init
F:\Demo\D11>git checkout "master-dev"
Switched to branch 'master-dev'
F:\Demo\D11>git diff
WARNING: terminal is not fully functional
diff --git a/master/main.txt b/master/main.txt
index 75bf703..5a345f8 100644
--- a/master/main.txt
+++ b/master/main.txt
@@ -2,4 +2,6 @@ main/main init
master edit
-master-dev edit
\ No newline at end of file
+master-dev edit
+master-dev reedit
+
F:\Demo\D11>git commit -a -m "master-dev reedit"
[master-dev 67cec74] master-dev reedit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git show-branch
! [master] master edit
* [master-dev] master-dev reedit
! [pc] pc reedit
---
* [master-dev] master-dev reedit
* [master-dev^] master-dev edit
+* [master] master edit
+* [master^] master branch init
+ [pc] pc reedit
+ [pc^] pc edit
+ [pc~2] pc/pc init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* 67cec74 (HEAD, master-dev) master-dev reedit
* 67837dd master-dev edit
* 60197ce (master) master edit
* 3ae67eb master branch init
* 2fd85bf (pc) pc reedit
* d1f98d3 pc edit
* 3e176c6 pc/pc init
F:\Demo\D11>git checkout master
Switched to branch 'master'
F:\Demo\D11>git commit -a -m "master reedit"
[master b79efa5] master reedit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git show-branch
* [master] master reedit
! [master-dev] master-dev reedit
! [pc] pc reedit
---
* [master] master reedit
+ [master-dev] master-dev reedit
+ [master-dev^] master-dev edit
*+ [master^] master edit
*+ [master~2] master branch init
+ [pc] pc reedit
+ [pc^] pc edit
+ [pc~2] pc/pc init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* b79efa5 (HEAD, master) master reedit
| * 67cec74 (master-dev) master-dev reedit
| * 67837dd master-dev edit
|/
* 60197ce master edit
* 3ae67eb master branch init
* 2fd85bf (pc) pc reedit
* d1f98d3 pc edit
* 3e176c6 pc/pc init
F:\Demo\D11>git citool
F:\Demo\D11>git checkout pc
Switched to branch 'pc'
F:\Demo\D11>git commit -a -m "pc re-reedit"
[pc 1d24c39] pc re-reedit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git show-branch
! [master] master reedit
! [master-dev] master-dev reedit
* [pc] pc re-reedit
---
* [pc] pc re-reedit
* [pc^] pc reedit
* [pc~2] pc edit
* [pc~3] pc/pc init
+ [master] master reedit
+ [master-dev] master-dev reedit
+ [master-dev^] master-dev edit
++ [master^] master edit
++ [master~2] master branch init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* 1d24c39 (HEAD, pc) pc re-reedit
* 2fd85bf pc reedit
* d1f98d3 pc edit
* 3e176c6 pc/pc init
* b79efa5 (master) master reedit
| * 67cec74 (master-dev) master-dev reedit
| * 67837dd master-dev edit
|/
* 60197ce master edit
* 3ae67eb master branch init
F:\Demo\D11>git checkout --orphan mobile
Switched to a new branch 'mobile'
F:\Demo\D11>git status
On branch mobile
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: pc/pc.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
mobile/
F:\Demo\D11>tree /F
文件夹 PATH 列表
卷序列号为 A627-5B49
F:.
├─mobile
│ mobile.txt
│
└─pc
F:\Demo\D11>RD /S f:\demo\d11\pc
f:\demo\d11\pc, 是否确认(Y/N)? Y
F:\Demo\D11>tree /F
文件夹 PATH 列表
卷序列号为 A627-5B49
F:.
└─mobile
mobile.txt
F:\Demo\D11>git status
On branch mobile
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: pc/pc.txt
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: pc/pc.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
mobile/
F:\Demo\D11>git rm -r pc/
rm 'pc/pc.txt'
F:\Demo\D11>git status
On branch mobile
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
mobile/
nothing added to commit but untracked files present (use "git add" to track)
F:\Demo\D11>git add --all
F:\Demo\D11>git commit -a -m "pc/pc master init"
[mobile (root-commit) a94d110] pc/pc master init
1 file changed, 1 insertion(+)
create mode 100644 mobile/mobile.txt
F:\Demo\D11>git show-branch
! [master] master reedit
! [master-dev] master-dev reedit
* [mobile] pc/pc master init
! [pc] pc re-reedit
----
* [mobile] pc/pc master init
+ [pc] pc re-reedit
+ [pc^] pc reedit
+ [pc~2] pc edit
+ [pc~3] pc/pc init
+ [master] master reedit
+ [master-dev] master-dev reedit
+ [master-dev^] master-dev edit
++ [master^] master edit
++ [master~2] master branch init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* a94d110 (HEAD, mobile) pc/pc master init
* 1d24c39 (pc) pc re-reedit
* 2fd85bf pc reedit
* d1f98d3 pc edit
* 3e176c6 pc/pc init
* b79efa5 (master) master reedit
| * 67cec74 (master-dev) master-dev reedit
| * 67837dd master-dev edit
|/
* 60197ce master edit
* 3ae67eb master branch init
F:\Demo\D11>git show-branch
! [master] master reedit
! [master-dev] master-dev reedit
* [mobile] pc/pc master init
! [pc] pc re-reedit
----
* [mobile] pc/pc master init
+ [pc] pc re-reedit
+ [pc^] pc reedit
+ [pc~2] pc edit
+ [pc~3] pc/pc init
+ [master] master reedit
+ [master-dev] master-dev reedit
+ [master-dev^] master-dev edit
++ [master^] master edit
++ [master~2] master branch init F:\Demo\D11>git commit -a -m "mobile edit"
[mobile de5452e] mobile edit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git commit -a -m "mobile re-edit"
[mobile 70dc006] mobile re-edit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git show-branch
! [master] master reedit
! [master-dev] master-dev reedit
* [mobile] mobile re-edit
! [pc] pc re-reedit
----
* [mobile] mobile re-edit
* [mobile^] mobile edit
* [mobile~2] pc/pc master init
+ [pc] pc re-reedit
+ [pc^] pc reedit
+ [pc~2] pc edit
+ [pc~3] pc/pc init
+ [master] master reedit
+ [master-dev] master-dev reedit
+ [master-dev^] master-dev edit
++ [master^] master edit
++ [master~2] master branch init
F:\Demo\D11>
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* 70dc006 (HEAD, mobile) mobile re-edit
* de5452e mobile edit
* a94d110 pc/pc master init
* 1d24c39 (pc) pc re-reedit
* 2fd85bf pc reedit
* d1f98d3 pc edit
* 3e176c6 pc/pc init
* b79efa5 (master) master reedit
| * 67cec74 (master-dev) master-dev reedit
| * 67837dd master-dev edit
|/
* 60197ce master edit
* 3ae67eb master branch init
F:\Demo\D11>git checkout "master-dev"
Switched to branch 'master-dev' F:\Demo\D11>git commit -a -m "master-dev re-reedit"
[master-dev 1c57e77] master-dev re-reedit
1 file changed, 2 insertions(+)
F:\Demo\D11>git show-branch
! [master] master reedit
* [master-dev] master-dev re-reedit
! [mobile] mobile re-edit
! [pc] pc re-reedit
----
* [master-dev] master-dev re-reedit
* [master-dev^] master-dev reedit
* [master-dev~2] master-dev edit
+ [mobile] mobile re-edit
+ [mobile^] mobile edit
+ [mobile~2] pc/pc master init
+ [pc] pc re-reedit
+ [pc^] pc reedit
+ [pc~2] pc edit
+ [pc~3] pc/pc init
+ [master] master reedit
+* [master-dev~3] master edit
+* [master-dev~4] master branch init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* 1c57e77 (HEAD, master-dev) master-dev re-reedit
* 67cec74 master-dev reedit
* 67837dd master-dev edit
| * 70dc006 (mobile) mobile re-edit
| * de5452e mobile edit
| * a94d110 pc/pc master init
| * 1d24c39 (pc) pc re-reedit
| * 2fd85bf pc reedit
| * d1f98d3 pc edit
| * 3e176c6 pc/pc init
| * b79efa5 (master) master reedit
|/
* 60197ce master edit
* 3ae67eb master branch init
F:\Demo\D11>git checkout master
Switched to branch 'master'
F:\Demo\D11>git commit -a -m "master re-reedit"
[master a0a0f1a] master re-reedit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git show-branch
* [master] master re-reedit
! [master-dev] master-dev re-reedit
! [mobile] mobile re-edit
! [pc] pc re-reedit
----
* [master] master re-reedit
* [master^] master reedit
+ [master-dev] master-dev re-reedit
+ [master-dev^] master-dev reedit
+ [master-dev~2] master-dev edit
*+ [master~2] master edit
*+ [master~3] master branch init
+ [mobile] mobile re-edit
+ [mobile^] mobile edit
+ [mobile~2] pc/pc master init
+ [pc] pc re-reedit
+ [pc^] pc reedit
+ [pc~2] pc edit
+ [pc~3] pc/pc init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* a0a0f1a (HEAD, master) master re-reedit
* b79efa5 master reedit
| * 1c57e77 (master-dev) master-dev re-reedit
| * 67cec74 master-dev reedit
| * 67837dd master-dev edit
|/
* 60197ce master edit
* 3ae67eb master branch init
* 70dc006 (mobile) mobile re-edit
* de5452e mobile edit
* a94d110 pc/pc master init
* 1d24c39 (pc) pc re-reedit
* 2fd85bf pc reedit
* d1f98d3 pc edit
* 3e176c6 pc/pc init
F:\Demo\D11>git checkout pc
Deletion of directory 'master' failed. Should I try again? (y/n) n
Switched to branch 'pc'
F:\Demo\D11>git status
On branch pc
nothing to commit, working directory clean F:\Demo\D11>git commit -a -m "pc re-re-reedit"
[pc 0f657c0] pc re-re-reedit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>git show-branch
! [master] master re-reedit
! [master-dev] master-dev re-reedit
! [mobile] mobile re-edit
* [pc] pc re-re-reedit
----
* [pc] pc re-re-reedit
* [pc^] pc re-reedit
* [pc~2] pc reedit
* [pc~3] pc edit
* [pc~4] pc/pc init
+ [master] master re-reedit
+ [master^] master reedit
+ [master-dev] master-dev re-reedit
+ [master-dev^] master-dev reedit
+ [master-dev~2] master-dev edit
++ [master~2] master edit
++ [master~3] master branch init
+ [mobile] mobile re-edit
+ [mobile^] mobile edit
+ [mobile~2] pc/pc master init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* 0f657c0 (HEAD, pc) pc re-re-reedit
* 1d24c39 pc re-reedit
* 2fd85bf pc reedit
* d1f98d3 pc edit
* 3e176c6 pc/pc init
* a0a0f1a (master) master re-reedit
* b79efa5 master reedit
| * 1c57e77 (master-dev) master-dev re-reedit
| * 67cec74 master-dev reedit
| * 67837dd master-dev edit
|/
* 60197ce master edit
* 3ae67eb master branch init
* 70dc006 (mobile) mobile re-edit
* de5452e mobile edit
* a94d110 pc/pc master init
F:\Demo\D11>git checkout "master-dev"
Deletion of directory 'pc' failed. Should I try again? (y/n) n
Switched to branch 'master-dev'
F:\Demo\D11>git commit -a -m "master-dev re-re-reedit"
[master-dev a6be472] master-dev re-re-reedit
1 file changed, 1 insertion(+)
F:\Demo\D11>git show-branch
! [master] master re-reedit
* [master-dev] master-dev re-re-reedit
! [mobile] mobile re-edit
! [pc] pc re-re-reedit
----
* [master-dev] master-dev re-re-reedit
* [master-dev^] master-dev re-reedit
* [master-dev~2] master-dev reedit
* [master-dev~3] master-dev edit
+ [pc] pc re-re-reedit
+ [pc^] pc re-reedit
+ [pc~2] pc reedit
+ [pc~3] pc edit
+ [pc~4] pc/pc init
+ [master] master re-reedit
+ [master^] master reedit
+* [master-dev~4] master edit
+* [master-dev~5] master branch init
+ [mobile] mobile re-edit
+ [mobile^] mobile edit
+ [mobile~2] pc/pc master init
F:\Demo\D11>git tree --all
WARNING: terminal is not fully functional
* a6be472 (HEAD, master-dev) master-dev re-re-reedit
* 1c57e77 master-dev re-reedit
* 67cec74 master-dev reedit
* 67837dd master-dev edit
| * 0f657c0 (pc) pc re-re-reedit
| * 1d24c39 pc re-reedit
| * 2fd85bf pc reedit
| * d1f98d3 pc edit
| * 3e176c6 pc/pc init
| * a0a0f1a (master) master re-reedit
| * b79efa5 master reedit
|/
* 60197ce master edit
* 3ae67eb master branch init
* 70dc006 (mobile) mobile re-edit
* de5452e mobile edit
* a94d110 pc/pc master init
F:\Demo\D11>git checkout pc
Already on 'pc'
F:\Demo\D11>git commit -a -m "pc re-re-re-reedit"
[pc f906c94] pc re-re-re-reedit
1 file changed, 3 insertions(+), 1 deletion(-)
F:\Demo\D11>
Git 以分支的方式同时管理多个项目的更多相关文章
- git 利用分支概念实现一个仓库管理两个项目
需求描述:开发了一个网站,上线之际,突然另一个客户说也想要个一样的网站,但网站的logo和内部展示图片需要替换一下,也就是说大部分的后台业务逻辑代码都是一致的,以后升级时功能也要保持一致:刚开始想反正 ...
- git branch 分支
几乎所有的版本控制系统都以某种形式支持分支. 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线. 在很多版本控制系统中,这是一个略微低效的过程——常常需要完全创建一个源代码目录的副 ...
- 第二篇:版本控制git之分支
有人把 Git 的分支模型称为它的`‘必杀技特性’',也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出. 为何 Git 的分支模型如此出众呢? Git 处理分支的方式可谓是难以置信的轻量, ...
- 使用git新建分支以及管理分支
在进行分支相关的操作前, 我们需要保持主分支干净, 所谓的干净就是没有任何改变(所有更改都已经commit 并 push),那么你可以在任何时候从你的主分支创建一个新分支. 为了方便代码管理,我们应该 ...
- Git的分支管理
0.引言 本文参考最后的几篇文章,将git的分支管理整理如下.学习git的分支管理将可以版本进行灵活有效的控制. 1.如何建立与合并分支 1.1分支的新建与合并指令 新建分支 newBranch,并进 ...
- Git Flow 分支管理简述
概述 Git 是什么 Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的 ...
- git的使用学习(五)git的分支管理
分支管理 分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平 ...
- git的介绍、git的功能特性、git工作流程、git 过滤文件、git多分支管理、远程仓库、把路飞项目传到远程仓库(非空的)、ssh链接远程仓库,协同开发
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1] 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码 ...
- git(二) 分支管理
概念 分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干扰,那对现在的你也没啥影响.不过,在某个时间点,两个平行宇 ...
随机推荐
- Mac的brew和brew cask区别以及安装brew cask
brew多用于命令行. brew cask主要用于有GUI的软件,例如VLC等等. brew cask是brew的一个子集,也就是一个扩展. 安装brew cask扩展: ruby -e " ...
- spanner-becoming-a-sql-system 2017
https://blog.acolyer.org/2017/07/03/spanner-becoming-a-sql-system/?utm_source=tuicool&utm_medium ...
- 内核调试神器SystemTap 转摘
http://blog.csdn.net/zhangskd/article/details/25708441 https://sourceware.org/systemtap/wiki/WarStor ...
- 在Windows Azure上创建ASP.NET MVC网站
本篇体验在Windows Azure上创建ASP.NET MVC网站. →登录到Windows Azure管理门户 →点击左下方的"新建" →点击"自定义创建" ...
- TStream实现多表查询
TStream实现多表查询 function TynFiredac.QuerySQLS(const ASQL, ASQL2: string; AStorageFormat: string = 'bin ...
- 成功让Eclipse更新ADT的方法
[本文转载自]http://blog.csdn.net/yihui8/article/details/8044426 原文:配置android开发环境eclipse获取ADT获取不到 https:// ...
- docker 删除无用的镜像文件的命令小计
df -h 查看当前服务器的内存情况 docker system prune 删除无用镜像文件命令 执行ok之后,再次查看内存情况.
- Svg.Js 父类的基础操作
一.SVG.Doc 创建SVG文档 var draw = SVG('drawing') <div id="svg1"></div> <script&g ...
- Java和C#差异点
语法:----------------------------------------------------------1. Java的byte为-128~127相当于c#的sbyte,c#byte ...
- [转]php rsa加密解密实例
转自:http://blog.csdn.net/clh604/article/details/20224735 php服务端与客户端交互.提供开放api时,通常需要对敏感的部分api数据传输进行数据加 ...