Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。总结一下 Git 的工作流程和基本的操作命令。
Git 命令行基本操作
本地库初始化
1 | git init |
注意:生成的 .git 目录中存放的是本地库相关文件,不要删除。
设置签名
作用:区分不同开发人员身份。
辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。
项目(仓库)级别:仅在当前本地库有效
1
2git config user.name xxx
git config user.email xxx@xx.com信息保存位置:.git 目录下的 config 文件中
系统用户级别:在当前登录的操作系统用户有效
1
2git config --global user.name xxx
git config --global user.email xxx@xx.com信息保存位置:~/.gitconfig(根目录下的 .gitconfig 文件中)
优先级别:项目级别
> 系统级别
状态查看
查看工作区、暂存区状态:
1 | git status |
modified 为红色,说明工作区和暂存区内容不一致;modified 为绿色,说明暂存区和本地库内容不一致。
添加到暂存区和取消添加到暂存区
将工作区的新建或修改添加到暂存区:
1 | git add [file name] |
取消添加到暂存区命令:
1 | git rm --cached [file name] |
提交到本地库
将暂存区内容提交到本地库:
1 | git commit -m "commit message" [file name] |
查看历史记录
1 | git log |
说明:HEAD@{移动到当前版本需要多少步}
版本前进后退
基于索引值(推荐)
1
git reset --hard [局部索引值]
使用 ^ 符号(只能后退)
1
git reset --hard HEAD^
注意:几个 ^ 表示后退几步
使用 ~ 符号(只能后退)
1
git reset --hard HEAD~n
注意:表示后退 n 步
reset 的三个参数比较
- soft:
- 仅本地库移动 HEAD 指针
- 暂存区和工作区没有修改
- mixed:
- 在本地库移动 HEAD 指针
- 重置暂存区 ,使其与本地库一致
- hard:
- 在本地库移动 HEAD 指针
- 重置暂存区,使其与本地库一致
- 重置工作区,使其与本地库一致
文件差异比较
将工作区中的文件和暂存区进行比较:
1
git diff [文件名]
将工作区中的文件和本地库历史记录比较:
1
git diff [本地库中历史版本] [文件名]
不带文件名则比较多个文件
分支管理
分支操作
创建分支:
1
git branch 分支名
查看分支:
1
git branch -v
切换分支:
1
2git checkout 分支名
git checkout -b 分支名合并分支:
1
git merge [有新内容分支]
注意:先切换到接受修改的分支(被合并,增加新内容)上再合并。
删除分支:
1
git branch -d 分支名
解决冲突
- 编辑,删除特殊标记
<<<
===
- 修改到满意位置,保存退出
- 添加到缓存区
git add 文件名
- 提交到本地库
git commit -m '日志信息'
注意:后面一定不能带文件名
Git & GitHub
查看当前所有远程地址别名
1 | git remote -v |
创建远程库地址别名
1 | git remote add [别名] [远程地址] |
推送
1 | git push [别名] [分支名] |
克隆
1 | git clone <-b 分支名> [远程地址] <本地目录名> |
<>表示可选,默认克隆 master 分支,本地目录名称与版本库同名。
拉取
pull = fetch + merge
1 | git fetch [远程库地址别名] [远程分支名] |
解决冲突
如果不是基于远程库最新版做的修改不能推送,必须先 pull 下来按照分支冲突办法解决。
SSH 免密登录
ssh-keygen -t rsa -C [GitHub 邮箱地址]
cd .ssh
cat id_rsa.pub
- 登录 GitHub
Settings
–>SSH and GPG keys
–>New SSH Key
粘贴