分布式版本控制
为什么要版本控制
保留之前所有的版本,以便回滚和修改
简单使用
1、进入项目文件
2、初始化 git init
3、git status 查看文件状态
4、git add . 提交到暂存区
————————
第一次使用,需要配置信息
git config global user.email "邮箱"
git config global user.name "名字"
————————
5、git commit -m "v1.0" 提交到版本库
6、git log 查看提交记录
三大区域
工作区-》暂存区-》版本库
工作区包括 已控制文件(绿色)和新文件或者有修改的文件(红色)组成
git checkout -- 文件名 红色-》绿色 回到改动之前
git reset HEAD 文件名 暂存区-》工作区
回滚
git reset --hard 版本号 //版本号,可通过git log 查看
git reset --soft 版本号 保留更改到
git push origin 分支名 --force
git reflog 可查看回滚前的提交记录
分支
git branch 查看所处分支和所有分支
git branch 分支名 创建指定分支
git checkout 分支名 在现所在分支创建或切换到指定分支
git merge 分支名 合并指定分支到现在所处分支
git merge --abort add之前 取消合并
add之后 git reflog 再git reset--hard commit id
git branch -d 分支名 删除指定分支
推送和拉取
git remote add origin 远程地址 设置远程仓库
git push -u origin 分支名 推送到远端的指定分支(-u 设置默认的分支)
git clone 远程仓库地址 克隆远程代码到本地
git pull origin 分支名称 更新代码到本地
相当于两句命令
git fetch origin 分支名称 远程仓库-》版本库
git merge origin/分支名称 版本库-》工作区
仓库
查看远程仓库 git remote -v
修改远程仓库地址
变基rebase 使git记录简洁
-
应用场景一:整合当前分支的记录
git rebase -i 版本号 合并指定版本到当前版本的记录
git rebase -i HEAD~3 合并到当前版本的最近的3条记录
- 把第一行下边的pick -> s 表示当前版本合并到上一个版本
- 再写一个信息
-
应用场景二:整合不同分支的记录
git log --graph --pretty-format:"%h %s" 显示图形记录
git rebase master 把当前分支记录合并到master分支记录
-
应用场景三:代替pull,整合代码合并使产生的分叉
- git fetch origin 分支名称
- git rebase origin/分支名称
-
注:若产生冲突
- 先解决冲突
- 再 git rebase --continue
快速解决冲突 软件 beyond compare
-
配置
git config --local merge.tool bc3
git config --local mergetool.path '/usr/local/bin/bcomp'
git config --local mergetool.keepBackup false
-
应用
git mergetool
多人开发
- 1、创建初始项目和版本
- 创建组织,再创建项目
- 版本标记
- git tag -a v1 -m "第一版"
- git push origin --tags
- 2、邀请成员
- 在github 操作 invite someone 邀请进入组织
- 再在项目里 邀请成员进入项目
- 3、review
- settings branches 设置分支rule 添加review
- 成员pull request
- 组长 add your review
开源项目贡献代码
- Fork 代码
- 正常开发
- 提交
免密登录
-
URL实现
- 原来地址:github.com/·······
- 修改后:https:用户名:密码@github.com/·······
-
ssh实现(企业常用)
-
公钥和私钥(默认存在 ~/.ssh目录下 id_rsa.pub公钥、id_rsa私钥)
ssh-keygen -r rsa
-
拷贝公钥内容 cat ~/.ssh/id_rsa.pub,设置到github中
-
在个人settings的SSH中添加
-
在git本地配置ssh地址
git remote add origin ssh地址
-
-
git自动管理凭证
- 存在了电脑里,钥匙串
git忽略文件
.gitignore
任务管理
- issues 文档及任务管理
- wiki 项目文档