git github gitlab
- gitlab是公司专门搭建的用来管理代码的仓库,仅供内部访问
集中式 vs 分布式
- 集中式版本控制工具:
- CVS、SVN、VSS、…
- 分布式版本控制工具:
- Git、Mercurial、Bazaar、Darcs、…
本地库初始化
- git init
- 生成.git隐藏文件夹
配置用户信息
- 作用: 区分不同开发人员身份
- 配置方式:
- 项目级别/仓库级别
- 系统用户级别
// 项目级别
git config user.name "账号"
git config user.email "邮箱"
// 配置信息在当前项目的 .git/config 文件夹中
// 系统用户级别
git config --global user.name "账号"
git config --global user.email "邮箱"
// 配置信息存放在系统的用户目录下 C:\Users\...\gitconfig
优先级:项目级别 > 系统用户级别
git操作
- 查看状态
- git status
- 添加到暂存区
- git add .
- 提交到版本库
- git commit -m ‘version’
- 查看历史记录
-
git log (列出从当前版本为止的全部提交日志))
-
git log --pretty=oneline
-
git log --oneline
-
git log -
-
git reflog 列出最近git的所有相关操作日志,版本回退时可以参考
-
- 版本回退与前进
- 版本回退的本质:就是一个HEAD指针的操作
- 方式一: 基于commitId操作
- git reset --hard ID (git reflog显示ID)
- 方式二: 使用^符号操作
- git reset --hard HEAD^ 回退到上一个版本(一个^表示回到前一个版本)
- 方式三:使用~符号操作
- git reset --hard HEAD~数字(n) 回到上n个版本
- 总结:
- git reflog 列出所有历史记录
- git reset --hard ID 回退/前进
- 撤销修改
- 工作区的修改(还没有添加到暂存区)
- git checkout --文件名
- 暂存区的修改
-
- git reset HEAD 文件名 撤销暂存区的修改
-
- git checkout --文件名 撤销工作区的修改
-
- 工作区的修改(还没有添加到暂存区)
分支管理
- 查看分支
- 查看本地仓库的分支情况
- git branch
- 查看远程仓库的分支情况
- git branch -r
- 查看本地与远程的所有分支情况
- git branch -a
- 查看本地仓库的分支情况
- 创建分支
- 只是创建分支
- git branch 分支名
- 创建分支,并切换到新创建的这个分支上
- git checkout -b 分支名
- 只是创建分支
- 切换分支
- git checkout 分支名
注意:本地如果不存在这个分支,则会把远程的给弄下来,如果远程也没有,就报错
- 合并分支
- 先切换到被合并的分支上(主分支)
- git merge 需要合并的分支
- 合并时解决冲突
原因:两个分支在同一个代码上的某一个位置做了修改,这些 git 合并时不知道该听那个分支的
- 找到有冲突的文件
- 删除这个文件中的特殊标记
- 找到相应的开发人员去商量到底如何处理这个情况,用你的,还是用我的,或者两个都保留
- git add
- git commit
- 删除分支
- git branch -d 分支名 已经合并过的分支可以这样去删除
- git branch -D 分支名 没有合并过的分支,但是里面有代码修改,使用 -d 删除,是删除不了的。确定要删除,就是用 -D
远程库(使用代码管理平台)
-
项目管理人员
- 创建远程库
- 在gitee上创建远程库
- 关联远程项目
- git remote add <远程连接仓库的别名(gitee/github等),一般默认使用origin> 远程地址(https/ssh)
- 查看本地库与远程库的关联信息
- git remote -v
- 推送到远程仓库
- git push -u <远程仓库别名,一般是origin> 分支名 (第一次推送需要加 -u,-u是为了以后提交可以省略成 git push)
- 删除关联远程项目
- git remote remove 远程仓库别名
- 创建远程库
-
开发成员
- 克隆远程库
- git clone 远程仓库地址 (克隆后已经关联了远程仓库,不需要再git remote add)
- 新建自己的分支
- git checkout -b 分支名
- 推送push
- git push <远程仓库别名> <远程仓库分支名>
- 抓取远程分支到本地
- git fetch origin 远程分支名
- 合并分支
- git merge 分支名
- 拉取pull
- git pull = fetch + merge
- 克隆远程库
ssh关联远程仓库
使用ssh关联,可以免登录gitee账号
- 需要先查看本地电脑是否有ssh相关的东西(用户目录下是否有.ssh的文件夹,有就先删除)
- 创建ssh key
- ssh-keygen -t rsa -C “邮箱地址”
- 回车…
- 再用户目录下找到.ssh文件夹中的id_rsa.pub 这个文件
- 复制id_rsa.pub中的内容
- 去远程托管平台添加ssh
- 设置 - 安全设置 - ssh公钥
- 克隆项目时可以直接使用ssh的方式
- git remote add origin < ssh地址 > 关联远程仓库
跨团队协作开发
- 对某个开源代码感兴趣
- 将这个开源的项目fork一份到自己的远程仓库
- clone 自己fork的这个项目到本地
- 写好代码推送到自己的远程仓库
- 创建Pull Request