Git

Git 常用指令

整理的一些个人常用的 Git 指令

Posted by violetks on November 4, 2019

菜鸟教程里有 Git 教程

一、Git 工作区、暂存区和版本库

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stageindex。一般存放在.git目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是 Git 的版本库。

wakwKe.png

二、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。可以很方便的查看代码。