Git:分布式版本控制系统

Git 是一个开源的分布式版本控制系统,没有“中央服务器”,每个人的电脑上都是一个完整的版本库。

CVS及SVN:集中式的版本控制系统

Subversion(SVN) 是一个开源的集中式版本控制系統,  这些数据放置在一个中央资料档案库(repository) 中。 这个档案库很像一个普通的文件服务器, 不过它会记住每一次文件的变动。

 

Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行

 

1安装

在Windows上,从Git官网直接下载安装程序

安装后搜索Git可以看到

 

1. Git CMD  2. Git Bash   3. Git GUI

Bash是基于CMD的,Bash在CMD的基础上新增了一些命令和功能,故建议使用Bash更方便。Git GUI 是可视化界面

安装后设置用户名和邮箱

$ git config --global user.name "username"
$ git config --global user.email "email"

查看

$ git config user.name
$ git config user.email

 

2初始化仓库

点击Git Bash 右键-属性-修改起始位置

打开Git bash就从这里开始

$ mkdir gitlearn // 新建文件夹
$ cd learngit //打开文件夹
$ pwd //显示当前目录。
$ git init //初始化仓库

初始化后就是这样

如果你没有看到.git目录,那是因为这个目录默认是隐藏的,用ls -ah命令就可以看见。

 

3克隆项目

使用 git clone 拷贝一个 Git 仓库到本地,在github找个项目

$ git clone https://github.com/dabeng/OrgChart.git

 

 4 常用命令

//查看当前所有分支 *为当前分支

git branch

 

//切换并新建分支dev

git checkout -b dev


//更新分支代码并提交

git add *

git commit -m "init dev"

git push  origin dev

 

5合并develop分支到master分支

// 1打开develop分支
git checkout develop


// 2把代码拉取下来
git pull


// 3切换到主分支
git checkout master

 

// 4把分支的代码merge到主分支

git merge master

 

// 5推送到远程

git push

 

错误

1 fatal: unable to access 'https://github.com/mozilla/pdf.js.git/': OpenSSL SSL_read: Connection was reset, errno 10054

原因是:一般是服务器的SSL证书没有经过第三方机构的签署   可能是网络不稳定,连接超时导致的

解决: git config --global http.sslVerify "false"   修改设置,解除ssl验证

2 fatal: unable to access 'https://github.com/mozilla/pdf.js.git/': Could not resolve host: github.com

解决:将命令行里的http改为git重新执行。

 

 

 

Submodule

子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
通俗上的理解, 一个Git仓库下面放了多个其他的Git仓库, 其他的Git仓库就是我们父级仓库的子仓库。

开始使用子模块

要在Git中添加子模块(submodule)可以按照以下步骤进行操作:
首先确保已经初始化了主仓库。如果还没有初始化,则需要使用`git init`命令来创建一个新的空白仓库。
打开终端或者命令提示符,并导航到主仓库所在的目录。

添加子模块

git submodule add <repository_url> [<path>]
其中 <repository_url> 是指向子模块存储库的URL地址,而 [<path>] 是可选参数,表示子模块在本地文件系统上的路径。
默认情况下,子模块会被克隆到与主仓库相同的位置。
git submodule add --force --name microapps/discipline https://git.xx.xx/Apps/discipline.git apps/discipline
Git会自动拉取子模块的最新版本,并将其添加到主仓库中。
此时,主仓库会包含一个名为.gitmodules的文件,该文件记录了所有子模块的信息。

更新子模块,只需切换到子模块所在的目录,然后运行 `git pull origin master` 命令即可获得最新的修改内容。

删除子模块

1) 根据路径删除子模块的记录

git rm --cached <path/to/submodule>
这样就从主仓库中移除了对子模块的引用,但不会影响子模块本身。

2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉

清理子模块配置

3) 编辑“ .git/config”文件,将子模块的相关配置节点删除掉

清理子模块配置

4) 手动删除子模块残留的目录

清理脏文件

其他开发者获取子模块

一种方式是在克隆主项目的时候带上参数
git pull --recurse-submodules
另外一种可行的方式是,在当前主项目中执行:
git submodule init
git submodule update

修改子模块的内容

先确保子模块是develop,在初始化子模块时一般默认不属于任何分支。如果子模块不是在develop分支,在子模块中执行

 
git checkout -B develop remotes/origin/develop

先提交子模块修改到子模块的仓库
再提交主仓库修改

批量执行子仓库的命令

git submodule foreach

(1)如批量切换为develop分支

git submodule foreach git checkout -B develop remotes/origin/develop

(2)批量拉取子仓库为最新,此命令拉取到的子仓库跟主仓库关联commitid无关,拉取的时候子仓库对应分支最新的版本

git submodule foreach git pull

 

 


 

posted on 2019-06-11 18:11  哈哈哈~_~  阅读(137)  评论(0)    收藏  举报