July's Blog

花有重开日,人无再少年

0%

Git笔记

基础命令

命令 作用
git config –global user.name 用户名 设置用户签名
git config –global user.email 邮箱 设置用户签名
git init 初始化本地库
git status 查看本地库状态
git add 文件名 添加到暂存区
git commit -m “日志信息” 文件名 提交到本地库
git reflog 查看历史记录
git reset –hard 版本号 版本穿梭
  1. 进入要管理的文件夹,初始化命令

    1
    git init
  2. 管理目录下的文件状态

    1
    2
    git status
    注:新增的文件和修改后的文件都是红色
  1. 提交到暂存区,管理指定文件(红变录)

    1
    2
    git add 文件名
    git add .
  2. 再查看状态

    1
    git status
  3. 个人信息配置:用户名、邮箱【一次即可】,
    这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系

    1
    2
    git config --global user.email "you@example.com"
    git config --global user.name "Your Name"
  4. 提交到版本库,生成版本

    1
    2
    git commit -m '日志信息' 文件名
    git commit -m "my first commit" hello.txt
  5. 查看状态(没有文件需要提交)

    1
    git status

git工作区

历史版本

基本语法

1
2
git reflog  查看版本信息
git log 查看版本详细信息

版本穿梭

1
git reset --hard 版本号

版本穿梭

分支

命令 作用
git branch 分支名称 创建分支
git branch -v 查看分支
git checkout 分支名称 切换分支
git merge 分支名称 把指定的分支合并到当前分支上
  1. 查看分支

    1
    2
    git branch
    git branch -v //查看每一个分支的最后一次提交
  2. 创建分支

    1
    git branch 分支名称
  3. 切换分支

    1
    git checkout 分支名称
  4. 合并分支(其它的合并到当前的)

    1
    2
    git merge 要合并的分支
    注意:切换到当前主分支后,再合并其它新分支。如产生冲突需手动处理
  5. 处理冲突
    冲突产生的表现:后面状态为 MERGING
    编辑有冲突的文件,删除特殊符号,决定要使用的内容。
    特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix

    1
    2
    git add hello.txt    //添加到暂存区
    git commit -m "merge hot-fix" //此时使用 git commit 命令时不能带文件名

    发现后面 MERGING 消失,变为正常

  1. 删除分支
    1
    git branch -d 分支名称

工作流

bug

远程仓库

命令 作用
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 起别名
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull 远程库地址别名 远程分支名 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并

初次连接远程仓库

  1. 查看当前所有远程地址别名

    1
    git remote -v 查看当前所有远程地址别名
  2. 连接远程仓库起别名

    1
    git remote add origin(别名) 远程仓库地址
  3. 向远程推送代码

    1
    2
    3
    git push -u origin(别名) 分支   
    //指定一个默认主机,这样后面就可以不加任何参数使用git push
    //不带任何参数的git push,默认只推送当前分支

新电脑克隆远程仓库到本地

  1. 新电脑克隆远程仓库代码
    1
    2
    git clone 远程仓库地址
    注:已实现git remote add origin(别名) 远程仓库地址

clone 会做如下操作:1、拉取代码。2、初始化本地仓库。3、创建别名

  1. 切换分支
    1
    2
    3
    4
    5
    git checkout dev   //切换
    git merge master //将master合并到dev
    git add.
    git commit -m '提交说明'
    git push origin dev

原电脑同步代码

1
2
3
4
5
6
7
8
// 切换到dev分支进行开发
git checkout dev
// 拉代码同步
git pull origin dev
// 开发完成后提交代码
git add .
git commit -m '代码说明'
git push origin dev

新电脑继续开发(同上)

1
2
3
4
5
6
7
8
// 切换到dev分支进行开发
git checkout dev
// 拉代码同步
git pull origin dev
// 开发完成后提交代码
git add .
git commit -m '代码说明'
git push origin dev

上线

1
2
3
4
5
6
7
8
9
// dev分支合并到master进行上线
git checkout master
git merge dev
git push origin master

//dev分支也推送到远程
git checkout dev
git merge master
git push origin dev
1
2
3
4
git pull origin dev
等价于
git fetch origin dev
git merge origin/dev

rebase

将分支合并为一条
详细的得再查查

1
2
3
4
git checkout bugFix
git rebase master //bugFix分支头放到了master分支末尾。有冲突需解决
git checkout master //切换回master,此时head还在原末尾
git merge bugFix //合并,head指向新的末尾了

快速解决冲突

  1. 安装beyond compare软件

  2. 在git中配置

    1
    2
    3
    4
    //local为本地的工程里面添加单独的配置
    git config --local merge.tool bc3
    git config --local mergetool.path '/usr/local/bin/bcomp'
    git config --local mergetool.keepBackup false
  3. 使用beyond compare解决冲突

    1
    git mergetool

多人协同开发

github项目可以邀请成员加入设置对应权限,可以建立组织并设置成员权限

tag标签管理

1
2
3
4
5
6
7
git tag -a v1.0 -m  '版本介绍'    创建本地tag信息
git tag -d v1.0 删除tag
git push origin --tags 将本地tag信息推送到远程仓库
git pull origin --tags 更新本地tag版本信息

git checkout v.10 切换tag
git clone -b v0.1 地址 指定tag下载代码

新成员在自己电脑下载代码并开发

1
2
3
4
5
6
7
8
9
10
git clone https://github.com/oldboy-org/dbhot.git
cd dbhot
git checkout dev
git checkout -b dzz

写代码

git add .
git commit -m '开发完成'
git push origin ddz

github配置代码review后才能合并

提测上线(预发布)

  1. 基于dev分支创建release分支
1
2
git checkout dev         // 切换到dev
git checkout -b release //创建并切换到release分支
  1. 测试等

  2. 合并到master

使用pull request 或 本地将release合并到master

  1. 在master分支打tag
1
2
git tag -a v2 -m '第二版 斗地主功能'
git push origin --tags
  1. 运维上线
1
git clone -b v2 地址

给开源软件贡献代码

  1. fork源代码 将别人源代码拷贝到自己的远程仓库
  2. 在自己的仓库进行修改源代码
  3. 给原代码的作者提交修复bug的申请(pull request)

配置

  • 项目配置文件:项目/.git/config
1
2
git config --local user.name 'wupeiqi'
git config --local user.email 'wupeiqi@xx.com'
  • 全局配置文件:~/.gitconfig
1
2
git config --global user.name 'wupeiq'
git config --global user.name 'wupeiqi@xx.com'
  • 系统配置文件:/etc/.gitconfig
1
2
3
//需要有root权限
git config --system user.name 'wupeiq'
git config --system user.name 'wupeiqi@xx.com'

应用场景

1
2
3
4
5
6
7
8
9
git config --local user.name 'wupeiqi'
git config --local user.email 'wupeiqi@xx.com'

//软件解决冲突
git config --local merge.tool bc3
git config --local mergetool.path '/usr/local/bin/bcomp'
git config --local mergetool.keepBackup false

git remote add origin 地址 //默认添加在本地配置文件中(--local)

免密登录

  • URL中体现
1
2
3
4
5
原来的地址:https://github.com/WuPeiqi/dbhot.git
修改的地址:https://用户名:密码@github.com/WuPeiqi/dbhot.git

git remote add origin https://户名:密码@github.com/WuPeiqi/dbhot.git
git push origin master
  • SSH实现
  1. 生成公钥和私钥,默认放在~/.ssh目录下,id_rsa.pub公钥、id_rsa私钥。
    ssh-keygen
  2. 拷贝公钥的内容,并设置到GitHub中
  3. 在git本地中配置SSH地址
    git remote add origin git@github.com:WuPeiqi/dbhot.git
  4. 以后使用
    git push origin master
  • git自动管理凭证

git忽略文件

创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是 git.ignore)

1
2
3
4
*.h
!a.h
files/
*.py[c|a|d]

github任务管理相关

  • issues,文档以及任务管理
  • wiki,项目文档
请作者喝冰阔落