Git
Git 介绍
免费,开源, 分布式,版本控制
分布式版本控制工具 VS 集中式版本控制工具
集中式:CVS, SVN, VSS 有一个中央服务器,修改在中央服务器中
分布式:Git 解决单点故障,版本控制在本地进行。每个客户端都保整个项目,更加安全。
Git 工作机制
工作区 -> git add -> 暂存区 -> git commit -> 本地库 (-> git push -> 远程库)
本地库上生成历史版本,无法删除历史版本
Git 和 代码托管中心
代码托管中心就是 远程库
-
局域网: GitLab
-
互联网: GitHub, Gitee
Git 常用命令
命令名称 | 作用 |
---|---|
git config –global user.name | 初始化用户签名 |
git config –global user.mail | 初始化用户签名 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add |
添加到暂存区 |
git commit -m ‘ |
提交到本地库 |
git reflog | 查看历史记录 |
git reset –hard |
版本穿梭 |
git config –global init.defaultBranch |
设置初始化仓库时,默认分支名 |
git config -branch -m |
修改分支名 |
设置用户签名
git config --global user.name <your name>
git config --global user.mail <your mail>
cat ~/.gitconfig # 查看配置文件
git config --global -l # 查看配置文件
作用是区分不同的操作者身份,Git首次安装必须设置一下用户签名,否则无法提交代码。
这里设置用户签名和将来登陆GitHub的帐号没有任何关系。
初始化本地库
git init
查看本地库状态
git status
添加暂存区
git add <your file> # . 代表所有文件
从暂存区中删除
git rm --cached <your file>
提交本地库
git commit -m 'log'
查看版本信息
git reflog # 简要信息
git log # 详细信息
版本穿梭
git reset --hard <Version number>
底层逻辑是移动指针
Git 分支
命令名称 | 作用 |
---|---|
git branch |
创建分支 |
git branch -v | 查看分支 |
git checkout |
切换分支 |
git merge |
把指定的分支合并到当前分支上 |
分支特性
- 同时推进多个任务
- 如果一个分支开发失败,不影响其他分支
查看分支
git branch -v
分支创建
git branch <branch name>
分支转换
git checkout <branch name>
分支合并
合并分支只会改变当前分支。
git merge <branch name> # 合并到当前分支上
代码合并冲突解决
冲突原因:两个分支对同一个分件同一个位置有两套不同的修改
合并过程中不能进行部分提交
Git 团队内协作机制
团队内协作
跨团队协作
GitHub
命令名称 | 作用 |
---|---|
git remote -b | 查看当前所有远程地址别名 |
git remote add <别名> <远程地址>远程地址>别名> | 创建别名 |
git push <别名> <分支>分支>别名> | 推送本地分支上的内容到远程仓库 |
git clone <远程仓库>远程仓库> | 将远程仓库中的内容克隆到本地 |
git pull <别名> <远程分支名>远程分支名>别名> | 将远程仓库对应分支最新内容拉下来后与本地分支直接合并 |
创建远程库
git remote -v # 查看所有远程地址别名
git remote add <别名> <远程地址> # 创建别名
代码推送 Push
git push <别名> <分支>
git push -u <别名> <分支> # 如此运行后,设置了默认的别名和分支
代码拉取 Pull
git pull <别名> <分支>
代码克隆 Clone
git clone <url>
- 拉取代码
- 初始化本地库
- 创建别名
SSH免密登陆
ssh-keygen -t rsa -C xvrong # 生成密钥
配置.ignore
配置全局的.ignore
在~/.gitconfig中添加如下内容
[core]
excludesfile = <.ignore address>