Git的使用
Git结构
Git代码托管中心
- github
- gitee
Git协作方式
-
团队内部协作
-
团队外部贡献
Git本地库操作
本地库初始化
-
命令:git init
-
注意:.git 目录中的文件不可修改
设置签名
- 命令
- 项目/仓库级别:仅在当前本地仓库有效
- git config user.name lmx_pro
- git config user.email lmx@163.com
- 系统用户级别:当前操作系统用户
- git config --global user.name lmx_glb
- git config --global user.email lmx@163.com
- 级别优先级:项目级别优先于系统级别
- 如果只有系统级别,则以系统为准
- 项目/仓库级别:仅在当前本地仓库有效
- 作用:区分不同开发人员
- 注意:这里和远程库的用户无关
添加提交、查看状态
- 状态
- 命令
- git status : 查看工作区,缓存区的状态
- 命令
- 添加提交
- 命令
- git add :将库中文件提交到缓存区
- git rm --cashed : 将提交到缓存区的文件撤回
- git commit -m “在这里输入提交文件的注释” : 将缓存区内容提交到本地库
- 添加文件修改后的提交
- git add
- git restore --staged : 将提交的修改文件撤回
- git commit -m “commit message”
- 命令
历史版本
- 查看命令
- git log
- git log --pretty=oneline
- git log --oneline
- git reflog : 可以查看当前版本到达各个历史版本的距离
- 回归历史版本
- git reset --hard <索引值> : 索引值是使用查看命令后显示的哈希值
- git reset --hard HEAD^^^ : 后退三步
- git reset --hard HEAD~n : 后退n步
比较修改前和修改后的文件
- 命令
- git diff HEAD : 比较所有修改过的问题
- git diff
- git diff HEAD^ : 从上一个版本的文件进行比较
Git分支
分支概述
- 分支作用
- 有利于并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,一个分支开发失败不会影响其他分支
- 分支使用场景
- 在大型项目开发时,不同的分支有利于不同模块的并行开发
分支操作
- 创建分支
- git branch [分支名]
- 查看所有分支
- git branch -v
- 切换分支
- git checkout [分支名]
- 合并分支
- 切换到j将被合并的分支上,如master
- git checkout [分支名]
- 执行merge,分支名为之前修改过的分支
- git merge [分支名]
- 解决冲突
- 产生原因:不同分支对于同一行进行了不同的修改
- 解决步骤
- 编辑文件,删除特殊符号
- 修改文件到满意
- git add
- git commit -m “commit message” : 不能带文件名
- 切换到j将被合并的分支上,如master
Github操作
push操作
- 在github上创建一个新的仓库,并复制所在链接
- 在本地给链接起一个别名
- git remote -v : 查看别名
- git remote add [别名] [链接]
- 把本地库push到github上
- git push [别名] [分支]
clone操作
- git clone [地址]
- clone作用
- 将项目下载到本地
- 自动初始化(存在.git文件)
- 存在别名[origin]
邀请其他人加入团队
pull操作
pull = fetch + merge
- fetch
- git fetch [别名] [分支]
- 把远程库文件拉取到本地,但是本地库无法获取
- git checkout [别名] / [分支] 进行下面的操作需要git checkout [分支]
- merge(原本为合并不同分支的命令)
- git merge [别名] / [分支]
- git pull [别名] [分支]
协同开发时发生冲突
- 冲突产生的原因
- 一个团队成员clone后修改成功,将其push到远程库
- 远程库所有者修改之后,不能将其push到远程库
- 需要先将远程库pull到本地库,再进行push到远程库
- 操作步骤
- 先拉取,如果有冲突,按照分支的冲突解决即可
- 拉取后如果没有冲突,拉取后可以直接push
跨团队协作
步骤
-
团队外成员在远程库进行fork,在github中直接操作,在自己的帐号中得到此仓库
-
将自己刚刚得到的仓库从自己的网址clone到本地
-
修改后commit到本地库,push到自己的仓库
-
pull request
-
-
远程库团队成员pull到本地
SSH
- 作用:不需要输入用户名以及密码
- 命令
- ssh-keygen -t rsa -C [帐号]
- 然后一直回车
- 复制 ~/.ssh/id_rsa.pub中的内容复制到网页帐号的SSH-keys
- 回到本地库创建别名roigin_ssh
- git push [ssh别名] [分支]