Git
作者:互联网
原理
安装配置
安装
brew install git
配置文件
~/.gitconfig
进行 git 相关的配置
[user]
email = xxx
name = xxx
ssh 配置
~/.ssh/config
Git 管理的目录结构
目录结构
.git
.gitignore
其他文件或目录
.git
用来保存分支,提交的信息,日志等
.gitignore
用来配置当前文件夹下哪些文件不需要管理的
文件状态
Untracked
Modified
Staged
committed
工作区
暂存区
git commit 将暂存区的内容提交到本地仓库
本地仓库
远程仓库
gitlab
分支
目的:
并行开发
远程分支的连线和本地分支的连线是一样的
创建分支
# 创建并切换到develop
git checkout -b develop
# 创建develop,不切换
git branchdevelop
查看分支
git branch -a
git branch -r
HEAD
游离状态的HEAD,HEAD不在某个分支,而是在某个节点,例如通过git checkout hash值
,将HEAD切换到了一个节点上。
在游离状态的HEAD上做提交很危险,可能会找不回来。可以建一个临时的分支
merge
在要作为主分支的分支上进行操作
git checkout master
# 将develop合并到master
git merge develop
merge会新增一个节点,表示merge的过程,并且这个节点会用虚线连接develop,表示包含develop上的东西
rebase
与merge相反,将当前分支的节点间移动到另一个分支的最后,然后再移动主分支,这样更加线性
git checkout develop
# 将develop的节点已经移动到了master
git rebase master
# 将master分支的指针移动到最后
git checkout master
# 因为develop就在master前,所以merge时只是移动HEAD
git merge develop
冲突
冲突如何产生
类似多线程对共享变量的操作
如何解决冲突
修改冲突代码
git add 冲突的文件
git commit
常用命令
git reset
git reset HEAD
git revert
git rm
git diff --cache
git remote -v
git commit --amend
git rebase -i
日志
git relog
Workflow
分支模型
方法 | 描述 |
---|---|
master | 最稳定的分支,只从其他分支合入,不直接做修改 |
develop | 最新的分支,开发的主干,主要用来合并其他的分支(feature,fix) |
feature/xxx | 功能分支,从develop创建,合并到develop |
release | 用来发版的分支,只允许进行一些BUG修复,新功能不要直接合入。合并到master,打上tag |
hotfix | 生产环境发生BUG紧急修复的分支,从master(tag)/release中产生,合并到master(tag)/release |
clone仓库到本地
push
push之前先git pull --rebase
更新一下本地代码,没有冲突再push
或者git fetch
,更新本地的origin/feat,然后合并到本地的feat再提交push
标签:HEAD,git,develop,merge,Git,master,分支 来源: https://www.cnblogs.com/sudopk/p/16332934.html