Git
Git配置
git config -l :Git的配置清单
git config --system --list :Git的系统配置清单
git config --global --list :Git的用户配置清单
你安装Git后首先要做的事情就是设置你的用户名称和e-mail地址。这是很重要的,因为每次Git提交都 会使用该信息。账号信息会嵌入到你的提交中:
git config --global user.name "jasmin" #名称
git config --global user.email 850489301@qq.com #邮箱
git的基本理论
四个工作区域
- 工作目录
- 暂存区
- 本地仓库
- 远程仓库
四个区域的转换关系
git的一般工作流程
-
在工作目录添加、修改文件;
-
将需要进行版本管理的文件放入暂存区域;
-
将暂存区域的文件提交到本地仓库。
因此,git管理的文件有三种状态:已修改(modified)、已暂存(staged)、已提交(committed)。
创建Git项目
- git clone 远程仓库url [-b 提交哈希值或者标签值]
- 在本地创建一个工程目录,在这个工程目录下git init
基本操作
#查看所有文件状态
git status
#添加所有的文件到暂存区。
git add .
#提交暂存区中的内容到本地仓库。 -m代表提交信息
git commit -m "newMessage"
origin/master
origin 是 Git 中默认的远程仓库名称。当你克隆一个远程仓库时,Git 会自动将远程仓库命名为
origin。
master 是 Git 中默认的主分支名称。当你创建一个新的 Git 仓库时,Git 会自动创建一个名为
master 的分支。
当你在本地仓库中执行 git pull 或 git push 命令时,Git 会自动将本地的 master 分支与远程
的 origin/master 分支进行同步。
如果是在本地创建的git项目,那么此时需要为该项目添加远程仓库:
git remote add origin 远程仓库url
可以通过git remote -v查看已添加的远程仓库。
如果是第一次推送本地仓库的提交到远程仓库,需要指定推送到哪个仓库的哪个分支
git push -u origin master,将代码推送到远程仓库的master分支。
-u:upstream,建立当前分支和远程分支的关联关系,在后续的git push或git pull操作中,可以不需要指定远程分支的名称,Git会自动推送或拉取与当前分支关联的远程分支。
分支
- 列出所有本地分支
git branch
- 列出所有远程分支
git branch -r
- 新建一个分支,但不切换到新分支。
git branch [branch-name]
- 切换到某个分支
git checkout [branch]
- 新建一个分支,并切换到该分支
git checkout -b [branch]
- 将指定的分支合并到当前所在的分支上。
$ git merge [branch]
- 删除分支
$ git branch -d [branch-name]
- 删除远程分支
$ git push origin --delete [branch-name]
具体来讲:
合并分支
当你在某个分支(比如 master 分支)上执行 git merge [branch] 命令时,Git 会将 [branch]分支的提交历史合并到当前所在的 master 分支上。这样可以将 [branch] 分支上的代码变更合并到 master 分支,实现分支间的代码合并。
解决冲突
如果 [branch] 分支上的修改与当前分支上的修改有冲突,Git 会提示你手动解决这些冲突。你需要编辑有冲突的文件,选择保留哪些变更,然后重新提交合并后的代码。
push时冲突的解决
如果你在push时报了冲突,就说明在你上次拉取远程代码之后,其他人推送了新的提交到远程仓库,远程仓库包含了你没有的提交。这种情况下,Git没有办法确定采取哪些变更,在甲的已提交修改了a文件,在你的提交中也修改了a文件,那究竟要采用谁的呢?
解决步骤如下:
1. git pull :拉取远程仓库的最新变更,并与你本地的代码合并。
2. 解决合并过程中出现的任何冲突。
(master|MERGING)的意思:使用 git merge 命令,但是在合并过程中出现了冲突,需要你手动解决这些冲突。
当 Git 仓库处于 MERGING 状态时,你需要编辑有冲突的文件,选择保留哪些变更,然后重新提交合并后的代码。
只有在解决完所有冲突并提交合并结果后,Git 仓库才会退出 MERGING 状态,回到正常的分支状态。
3. git add . :添加解决冲突后的文件。
4. git commit -m "Merge remote changes" :提交合并后的代码。
5. git push :现在可以安全地将你的本地变更推送到远程仓库了。
Tag
git tag -a "标签名" -m "标签注释":把当前的分支打一个tag
git tag:查看是否打了Tag
tag其实就是一个特殊的分支,是可以通过push推送到远端的。
git push origin 标签名:把指定tag推到远程仓库去。
git的使用思路
master:保留较新的、最稳定的版本
|| 开dev做开发,功能开发稳定后,推到master上去
dev:做一个版本的完整功能的开发,分支命名为dev/v1.0.x --》 1.0.0-SNAPSHOT(开发版)
|| 开release,修改配置后发布Tag,将Tag推到远程仓库后,删除本地的release分支。
release: 做tag的发行,分支命名为release/v1.0.0 --》1.0.0(正式版)