菜鸟教程里有 Git 教程
一、Git 工作区、暂存区和版本库
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫
stage
或index
。一般存放在.git
目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。 - 版本库:工作区有一个隐藏目录
.git
,这个不算工作区,而是 Git 的版本库。
二、Git 常用命令
查看 Git 版本号
$ git --version
创建版本库(初始化)
# 在当前指定目录下创建
$ git init
# 新建一个仓库目录
$ git init [project name]
# 克隆一个远程项目
$ git clone [url]
把文件添加到暂存区
# 添加所有文件
$ git add .
# 添加指定文件
$ git add text.html
把文件提交到仓库
# 把暂存区的所有内容提交到当前分支
$ git commit -m "msg"
# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]
# 提交工作区自上次 commit 之后的变化,直接到仓库区
$ git commit -a
# 提交时显示所有 diff 信息
$ git commit -v
远程同步
# 关联远程库
$ git remote add origin <name>
# 显示所有远程仓库
$ git remote -v
# 显示某个远程仓库信息
$ git remote show <name>
# 拉取远程分支
$ git pull origin <name>
# 把远程分支拉取到本地
$ git fetch origin <name>
# 推送分支,要指定本地分支
$ git push origin <name>
$ git push -u origin master
# 本地分支推送到远程分支
$ git push origin local-dev:dev
分支
# 查看本地分支,当前分支前面会标有一个 * 号
$ git branch
# 创建本地分支
$ git branch [branch-name]
# 切换本地分支
$ git checkout [branch-name]
# 创建并切换本地分支
$ git checkout -b [branch-name]
# 查看远程和本地所有分支
$ git branch -a
# 合并指定分支到当前分支
$ git merge [branch-name]
$ git merge origin/master 合并到远程 master 分支
# 删除本地分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin -d [branch-name]
# 将远程分支 branch 拉取到本地分支上,如果拉取不成功,执行 git fetch 获取分支差异
$ git checkout -b local-branch origin/branch
回退
# 重置暂存区的指定文件,与上一次 commit 保持一致,但工作区不变
$ git reset [file]
# 重置当前分支的指针为指定 commit,同时重置暂存区,但工作区不变
$ git reset [commit]
# 重置暂存区与工作区,与上一次 commit 保持一致
$ git reset --hard
# 重置当前分支的 HEAD 为指定 commit,同时重置暂存区和工作区,与指定 commit 一致
$ git reset --hard [commit]
# 重置当前 HEAD 为指定 commit,但保持暂存区和工作区不变
$ git reset --keep [commit]
# 回退到上一个版本
# HEAD 表示当前版本
# HEAD^ 表示上一个版本
# HEAD^^ 表示上上个版本
# HEAD~100 表示第 100 个版本
$ git reset --hard HEAD^
# 把暂存区的修改撤销掉,重新放回工作区(取消 add 的文件)
$ git reset HEAD XXX.XX
查看信息
# 掌握仓库当前状态
$ git status
# 历史纪录,显示从最近到最远的提交日志
$ git log
# 比较本地分支和远程分支的差别
$ git log -p master origin/master
暂存
# 暂存当前修改
$ git stash
# 返回到最近一次暂存修改的记录
$ git stash pop
# 返回暂存历史栈
$ git stash list
# 根据暂存历史栈的编号,返回暂存的本地修改记录
$ git stash apply stash@{1}
例子
1、回滚记录
# 查看本地 commit 的历史栈记录
$ git log
# 取消 add 的文件或文件夹
$ git reset HEAD xxx
# 回到到某个历史版本,从 git log 查提交记录编号(结合 git push -f origin master 可以回滚覆盖远程分支)
$ git reset --hard xxx
2、合并两个分支部分文件
# 显示出两个分支所有有差异的文件列表
$ git diff branch1 branch2 --stat
# 合并 branchName 分支上的 test.txt 文件到当前分支上,并追加补丁到当前分支上的 test.txt 文件。(该命令不会将合并文件的 commit 日志一并合并过来)
$ git checkout --patch branchName test.txt
3、拉取远程项目分支
$ git init
$ git remote add origin [url]
$ git fetch origin dev
$ git checkout -b dev origin/dev
$ git pull origin dev
三、在 Github 搜索开源项目
# 按照 name 搜索:搜索项目名里面包含 Vue 的项目
$ in:name Vue
# 精确到项目的 star 数大于 5000+
$ in:name Vue stars:>5000
# 按照 fork 的数量来进行搜索
$ in:name Vue stars:>5000 forks:>3000
# 按照 README 来搜索
$ in:readme Vue
# 按照 description 搜索
$ in:description 微服务
# 限制语言
$ in:description 微服务 language:java
# 找到最近更新的项目
$ in:description 微服务 pushed:>2020-02-02
四、在线查看 Github 项目代码
1、输入网址:sourcegraph.com
。
2、将 Github 项目地址拼到后面。
例如想查看https://github.com/violetks/vue-shop
这个项目,只需要访问拼接后地址:
https://sourcegraph.com/github.com/violetks/vue-shop
。可以很方便的查看代码。