安装
安装 Git
windows
:exe
全局变量添加,全局使用linux
:yum install git
;apt-get install git
;mac
:xcode
自带,如果你卸载了xcode
再使用git
会发现报错 : 提醒你安装xcode-select —install
检出仓库
1 检出方式 SSH
git clone username@host:/path/to/repository
ssh-keygen -t rsa -C "leon.si@5imakeup.com”
密钥类型:rsa
-c 邮箱
-f 指定 save file ,不输入会提示存储路径,会车默认
这时候再回车是push 的密码
id_rsa 和 id_rsa.pub
#设置到仓库 的 SSH Key
cat ~/.ssh/id_rsa.pub
Gitlab
2 检出方式 Http/Https
git clone https:/path/to/repository.git
fetch/push 需要输入账号密码,当然这种也可以设置账号密码
GayHub
$ touch ~/.git-credentials
在此文件中添加https://{username}:{password}@github.com,验证信息修改为个人账号密码,支持多行以及不同网站,如gitlab.me,git.coding.net等。再次push就不再需要手动验证了。
理解 git commit
、add
实际上,本地仓库由 git
维护的三颗树组成
- 第一个是
Working Dir
工作目录 ,放代码 ,git-config
文件 - 第二个是
Stage Index
索引/缓存区 - 第三个是
Commit History
提交区
git add
从working Dir
->Stage
缓存区 ;git commit
从Stage
提交到 -> 提交区git push
将 提交区 ->master
git chekcout
,撤销本地区 工作区的修改 ,所谓撤销就是,将未被修改的文件 覆盖,已经修改的文件,从哪儿撤销,从 缓存区 Git撤销相关
Git 规范
.gitignore 忽略
实际项目中,很多文件都是不需要版本管理的。一般来说每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。这个文件的内容是一些规则,Git会根据这些规则来判断是否将文件添加到版本控制中。常见的一些平台/语言下的 ignore
文件
***Windows ***
Desktop.ini
Thumbs.db
***Py***
*.pyc 被调用 不需要再编译 速度快
*.egg 类似于 jar 包 配合 easy_install
***Eclipse***
.classpath
.project
.settings/
***Intellij***
.idea/
*.iml
*.iws
***Mac***
.DS_Store
***Maven***
log/
target/
注意,ignore
文件是需要在 ignore
内的文件提交到远程版本库之前提交,如果已经有了,则需要删除版本库的文件类型,再提交 ignore
才会生效。
Commit 的规范
git commit -m “”
/ git commit
写文本
规范:
- Added ( 新加入的需求 )
- Fixed ( 修复 bug )
- Changed ( 完成的任务 )
- Updated ( 完成的任务,或者由于第三方模块变化而做的变化 )
- Mod ( 修改 )
https
方式 如何不在Push/Pull
时输入账号密码
1 生成ssh key
ssh-keygen -t rsa -C youremail@email.com
2 复制 cat ~/.ssh/id_rsa.pub
3 修改成 ssh 方式
ssh git@github.com:leon0204/testGit.git
分支
分支命名规范(与分支管理规范相关)
- develop/ release 发布
- feature 开发
- hotfix 修改bug
分支常用命令
1 git branch
查看分支 list
[root@VM_0_8_centos testGit]# git branch
* master
2 创建和切换
git checkout -b feature001
等同于
git branch feature001 && git checkout feature001
3 将本地分支推送到远程分支
git remote -v
git remote set-url origin git@github.com:leon0204/testGit.git
git push origin develop 将本地的 develop 分支 推送到线上分支
在另外一个工作区 git pull
,branch -a
就看到了 然后 checkout
到 develop
,然后 branch
也能看到了 。
4 【合并】无冲突
git checkout master
git merge feature/01/info_rebuild
5 【冲突解决】
branch a commit
branch b commit
git pull
vim 冲突文件 head and >>> 再次 commit push
6 【删除分支】
git push origin --delete feature001 删除远程分支
git branch -d 删除本地分支
工作流
GitFlow
分支状态: 主要分支 (单独)
1 `master` : `already-production`
2 `develop` : `newest `下次发布的开发状态
支援分支 (多个s)
- 1 特性
feature
从develop
分支 扩展出 分支 ,merge
回develop
- 2
release
修bug
的时候,在测试环境中,从develop
开一个分支出来,然后改完,merge
回master
和develop
- 3
Hotfix
立马修复上线,从maste r
分出来,merge
回去
AoneFlow
TrunkBased ~ GitFlow
主干分支、特性分支、发布分支
master feature/001 release
1 开始前,从master 创建 feature 分支 就是在 master 上面 开很多的 feature 分支 ==特性分支
2 合并 feature 分支,得到 发布 release 分支 公共分支
release/test分支对应部署测试环境,release/prod分支对应线上正式环境等等 适合美的你
3 发布到合并 发布分支 release/test|/prod 到主干 ,主干添加标签,删除该发布分支关联的特性分支(节省空间)
oldM 老的手机站 oldwww 老的网站
一些特殊情况
分支工作区未提交 不想提交 但是要新开分支
我在写一个新功能 假设我们是按照阿里的 AoneFlow
分支模式来工作的,其实不重要,那我现在在,一个特性分支上修改我的这次新功能,xxxx写了一天了,预计还要2天写完,现在我不想 commit
,但是这个时候 ,在 master
上有了一个紧急的bug
,我肯定是要切换回 master
,然后创建一个 feature
分支 ,GitFlow
(按紧急程度或者 一个 HotFix
或者一个 release
)
如果在 feature 001
上执行 checkout master
,就报错 ,提示未 commit
,我就不想 commit
,这时候可以执行 git stash
这个命令 ,相当于把 当前 Working Dir
工作目录 push
到一个 stash
中。
check 到master ,branch -b HotFix 101 ,add commit ck master ,merge hf 101
ck 到 feature001
git stash list
stash@{0}:xxx
git stash apply stash@{0}
git stash pop
讨论区

整理Git相关 ...