Git常用命令
本地库
初始化仓库
git init
查看工作区、暂存区状态
git status
将工作区的“新建/修改”添加到暂存区
git add [filename]
将暂存区的内容提交到本地库
git commit -m "commit message" [filename]
查看历史记录
git log
# 只显示一行信息
git log --pretty=short
git log --pretty=oneline
# 只显示指定目录、文件的日志
# 只要在 git log命令后加上目录名,便会只显示该目录下的日志。
# 如果加的是文件名,就会只显示与该文件相关的日志。
git log README.md
# 显示文件的改动
git log -p README.md
# 显示移动到当前版本需要几步
git reflog
前进后退操作
# 基于索引值操作[推荐]
git reset --hard[目标时间点的哈希值]
# 使用^符号:只能后退
# 一个^表示后退一步,n 个表示后退 n 步
git reset --hard HEAD^
# 使用~符号:只能后退
# 后退 n 步
git reset --hard HEAD~n
删除文件并找回
# 前提:删除前,文件存在时的状态提交到了本地库。
# 删除操作已经提交到本地库:指针位置指向历史记录
# 删除操作尚未提交到本地库:指针位置使用 HEAD
git reset --hard [指针位置]
查看更改前后的差别
# git diff命令可以查看工作树、暂存区、最新提交之间的差别。
git diff
# 查看工作树和最新提交的差别
git diff HEAD
# 将工作区中的文件和暂存区进行比较
git diff [文件名]
# 将工作区中的文件和本地库历史记录比较
git diff [本地库中历史版本] [文件名]
Git分支
在进行多个并行作业时,我们会用到分支。
不同分支中,可以同时进行完全不同的作业。等该分支的作业完成之后再与 master 分支合并。
分支的好处
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
创建分支
git branch [分支名]
查看分支
git branch -v
切换分支
git checkout [分支名]
合并分支
# 第一步:切换到接受修改的分支(被合并,增加新内容)上
git checkout [被合并分支名]
# 第二步:执行 merge 命令
git merge [有新内容分支名]
合并冲突的解决办法
- 编辑文件,删除特殊符号
- 把文件修改到满意的程度,保存退出
git add [文件名]
git commit -m "日志信息"
注意:此时 commit 一定不能带具体文件名
远程仓库
创建远程库地址别名
git remote add [别名] [远程地址]
# 查看当前所有远程地址别名
git remote -v
推送到远程库
git push [别名] [分支名]
克隆
# 完整的把远程库下载到本地
# 创建 origin 远程地址别名
# 初始化本地库
git origin [远程地址]
拉取
# pull=fetch+merge
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]
git pull [远程库地址别名] [远程分支名]
解决冲突
- 如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉取。
- 拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。
跨团队协作
- Fork
- 本地修改,然后推送到远程
- Pull Request
- 对话
- 审核代码
- 合并代码
- 将远程库修改拉取到本地