安装 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

cat ~/.ssh/id_rsa.pub
设置到仓库 的 SSH Key

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 维护的三颗树组成 ,
第一个是 Working Dir 工作目录 ,放代码 ,git-config文件
第二个是 Stage Index 索引/缓存区
第三个是 Commit History 提交区

理解 git commitadd
  • git addworking Dir -> Stage 缓存区 ;
  • git commitStage 提交到 -> 提交区
  • git push 将 提交区 -> master

git chekcout ,撤销本地区 工作区的修改 ,所谓撤销就是,将未被修改的文件 覆盖,已经修改的文件,从哪儿撤销,从 缓存区 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 pullbranch -a 就看到了 然后 checkoutdevelop ,然后 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 

.gitignore 忽略

常见的一些平台/语言下的 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 

GitFlow

分支状态:
主要分支 (单独)
1 masteralready-production
2 developnewest下次发布的开发状态

支援分支 (多个s)
- 1 特性 featuredevelop 分支 扩展出 分支 ,mergedevelop
- 2 releasebug 的时候,在测试环境中,从 develop 开一个分支出来,然后改完,mergemasterdevelop
- 3 Hotfix 立马修复上线,从 maste r 分出来, merge 回去

AoneFlow

主干分支、特性分支、发布分支
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 Working Dir 工作目录 push 到一个 satsh 中

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 
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐