基础命令
命令 | 作用 |
---|---|
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
git init
管理目录下的文件状态
1
2git status
注:新增的文件和修改后的文件都是红色
提交到暂存区,管理指定文件(红变录)
1
2git add 文件名
git add .再查看状态
1
git status
个人信息配置:用户名、邮箱【一次即可】,
这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系1
2git config --global user.email "you@example.com"
git config --global user.name "Your Name"提交到版本库,生成版本
1
2git commit -m '日志信息' 文件名
git commit -m "my first commit" hello.txt查看状态(没有文件需要提交)
1
git status
历史版本
基本语法
1 | git reflog 查看版本信息 |
版本穿梭
1 | git reset --hard 版本号 |
分支
命令 | 作用 |
---|---|
git branch 分支名称 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名称 | 切换分支 |
git merge 分支名称 | 把指定的分支合并到当前分支上 |
查看分支
1
2git branch
git branch -v //查看每一个分支的最后一次提交创建分支
1
git branch 分支名称
切换分支
1
git checkout 分支名称
合并分支(其它的合并到当前的)
1
2git merge 要合并的分支
注意:切换到当前主分支后,再合并其它新分支。如产生冲突需手动处理处理冲突
冲突产生的表现:后面状态为 MERGING
编辑有冲突的文件,删除特殊符号,决定要使用的内容。
特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix1
2git add hello.txt //添加到暂存区
git commit -m "merge hot-fix" //此时使用 git commit 命令时不能带文件名发现后面 MERGING 消失,变为正常
- 删除分支
1
git branch -d 分支名称
远程仓库
命令 | 作用 |
---|---|
git remote -v | 查看当前所有远程地址别名 |
git remote add 别名 远程地址 | 起别名 |
git push 别名 分支 | 推送本地分支上的内容到远程仓库 |
git clone 远程地址 | 将远程仓库的内容克隆到本地 |
git pull 远程库地址别名 远程分支名 | 将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并 |
初次连接远程仓库
查看当前所有远程地址别名
1
git remote -v 查看当前所有远程地址别名
连接远程仓库起别名
1
git remote add origin(别名) 远程仓库地址
向远程推送代码
1
2
3git push -u origin(别名) 分支
//指定一个默认主机,这样后面就可以不加任何参数使用git push
//不带任何参数的git push,默认只推送当前分支
新电脑克隆远程仓库到本地
- 新电脑克隆远程仓库代码
1
2git clone 远程仓库地址
注:已实现git remote add origin(别名) 远程仓库地址
clone 会做如下操作:1、拉取代码。2、初始化本地仓库。3、创建别名
- 切换分支
1
2
3
4
5git checkout dev //切换
git merge master //将master合并到dev
git add.
git commit -m '提交说明'
git push origin dev
原电脑同步代码
1 | // 切换到dev分支进行开发 |
新电脑继续开发(同上)
1 | // 切换到dev分支进行开发 |
上线
1 | // dev分支合并到master进行上线 |
1 | git pull origin dev |
rebase
将分支合并为一条
详细的得再查查
1 | git checkout bugFix |
快速解决冲突
安装beyond compare软件
在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使用beyond compare解决冲突
1
git mergetool
多人协同开发
github项目可以邀请成员加入设置对应权限,可以建立组织并设置成员权限
tag标签管理
1 | git tag -a v1.0 -m '版本介绍' 创建本地tag信息 |
新成员在自己电脑下载代码并开发
1 | git clone https://github.com/oldboy-org/dbhot.git |
github配置代码review后才能合并
提测上线(预发布)
- 基于dev分支创建release分支
1 | git checkout dev // 切换到dev |
测试等
合并到master
使用pull request 或 本地将release合并到master
- 在master分支打tag
1 | git tag -a v2 -m '第二版 斗地主功能' |
- 运维上线
1 | git clone -b v2 地址 |
给开源软件贡献代码
- fork源代码 将别人源代码拷贝到自己的远程仓库
- 在自己的仓库进行修改源代码
- 给原代码的作者提交修复bug的申请(pull request)
配置
- 项目配置文件:项目/.git/config
1 | git config --local user.name 'wupeiqi' |
- 全局配置文件:~/.gitconfig
1 | git config --global user.name 'wupeiq' |
- 系统配置文件:/etc/.gitconfig
1 | //需要有root权限 |
应用场景
1 | git config --local user.name 'wupeiqi' |
免密登录
- URL中体现
1 | 原来的地址:https://github.com/WuPeiqi/dbhot.git |
- SSH实现
- 生成公钥和私钥,默认放在~/.ssh目录下,id_rsa.pub公钥、id_rsa私钥。
ssh-keygen
- 拷贝公钥的内容,并设置到GitHub中
- 在git本地中配置SSH地址
git remote add origin git@github.com:WuPeiqi/dbhot.git
- 以后使用
git push origin master
- git自动管理凭证
git忽略文件
创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是 git.ignore)
1 | *.h |
github任务管理相关
- issues,文档以及任务管理
- wiki,项目文档