一 基础命令
- 个人信息配置:用户名,邮箱 (最开始执行一次即可)
git config --global user.email 'xxxxx.com'
git config --global user.name 'xxx'
- 初始化 即:让git帮助我们管理当前文件夹
git init
- 检测当前目录下文件的状态
git status
- 添加未管理的文件 git add 文件名 管理指定文件
git add .
- 生成版本
git commit -m 'v1'
- 查看版本记录
git log
git reflog
- 创建目录
mkdir "文件夹名"
- 查看文件
cat "文件名"
- 流线
git log --graph
git log --graph --pretty=format:"%h %s" (简洁流线)
二 回滚
- 回滚之前版本:
git log
git reset --hard "版本号"
- 回滚之后的版本
git reflog
git reset --hard "版本号"
- 工作区回到原始
git checkout -- "文件名"
- 暂存区回到工作区
git reset HEAD “文件名”
三 分支
- 查看分支
git branch
- 创建分支
git branch ’dev‘
- 切换分支
git checkout ’dev'
- 创建分支并切换
git checkout -b 'dev'
- 合并分支
git checkout master
git merge ’bug‘
注意:切换分支,谁合并谁 如:当前master分支 就是把bug分支切换到master上
- 删除本地分支
git branch -d ‘bug’
- 删除远程分支
git push origin --delete 'dev'
四 远程仓库
- 注册账号
- 创建仓库
- 本地代码推送到远程仓库
- 克隆远程仓库代码(第一次拉取代码)
git clone '仓库地址'
- 给远程仓库起别名(origin可随意)
git remote add origin '仓库地址'
- 拉取仓库代码
git pull origin 'dev'
- 推送远程分支
git push origin '分支名字'
注意:push会提示账号密码:
五 变基
- 合并从当前开始3个记录
git rebase -i HEAD~'3'
git rebase -i 'commit号'
- git merge 和 git rebase区别:
1. git merge
git checkout master
git merge 'dev'
git log --graph --pretty=format:"%h %s"
2. git rebase
git checkout 'dev'
git rebase master
git checkout master
git merge 'dev'
git log --graph --pretty=format:"%h %s"
- 本地暂存区有代码 拉取远程代码,如下操作不会有分叉
git pull origin 'dev' =>
git fetch origin 'dev' + git rebase origin/'dev'
六 标签
- 打标签
git tag -a v1 -m "xxxx"
- 推送标签到远程仓库
git push origin --tags
七 review
- 成员通过 pull request 申请review
- 管理员 review通过 ->代码合并 ->删除分支
八 开发流程
1. 上线版本release 流程
git checkout dev
git branch release
fix bugs => pull request => review=> release合并master
git checkout dev
git merge release 把release合并到dev上 合并完成可以直接把release分支删除
git checkout master
git pull origin master
git tag -a v2 -m "第二版功能"
git push origin --tags
2. 开发主要流程
git checkout dev (切换到dev分支)
git merge master (把master分支合并到dev)
fix code.....
git add .
git commit -m "xx"
git push origin dev
git pull origin dev == git fetch origin dev + git merge origin/dev
3. 快速解决冲突
- 安装beyond compare
- 在git中配置
git config --local merge.tool bc3
git config --local mergetool.path 'usr/local/bin/bcomp'
git config --local mergetool.keppBackup false
注:local 只对当前项目生效
- 应用beyond compare解决冲突
git mergetool
九 免密登录
- URL中体现
原来地址:https://xxxx.git =>
修改地址:https://用户名:密码@xxxx.git
git remote add origin https://用户名:密码@xxxx.git
- 通过ssh实现
- 生产公钥和私钥 (默认放在 ~/.ssh目录下,id_rsa.pub公钥)
ssh-keygen
- 拷贝公钥内容:设置到远程仓库
cat ~/.ssh/id_rsa.pub
- 在git中本地中配置ssh地址
git remote add origin git@xxxx.git
- git自动管理凭证 钥匙串
补充
1. 三种文件状态的变化
- 红色 :新增的文件/修改了原来文件 => git add 文件名 / git add .
- 绿色 :git 已经管理起来 -> git commit -m '描述信息'
- 生成版本
2. 配置
- 项目配置文件: .git/config
git config --local user.email 'xxxxx.com'
git config --local user.name 'xxx'
- 全局配置文件: ~/.gitconfig
git config --global user.email 'xxxxx.com'
git config --global user.name 'xxx'
- 系统配置文件: /etc/.gitconfig (需要有root权限)
git config --system user.email 'xxxxx.com'
git config --system user.name 'xxx'
3. git忽略文件
让git文件不再管理当前目录下的某些文件,更多参考github
*.h 以.h结尾的
!a.h 除了a.h文件
files/ 文件夹所有的文件
*.py[c|a|d] 以.pyc .pya .pyd 后缀的
4. 给开源框架 贡献代码
- fork源代码,将被人的源代码拷贝到自己的远程仓库
- 在自己仓库进行修改代码
- 给源代码的作者提交bug的申请(pull request)
5. 任务管理
- issuse 文档以及任务管理
- wiki 项目文档