最近一直需要使用git,但是自己老是记不住命令,索性写篇关于git的常用命令的博客,以便自己忘记命令时候查询。

git的工作流程

git_picture

大致流程:首先从(remote repository)远程仓库clone文件到本地(local repository),紧接着通过编辑器编辑本地代码(即在workspace里编辑),pull从远程仓库下拉代码(因为可能会有其他人提交代码到你的分支里,所以修改代码前需先pull),在workspace修改完代码后,通过add命令添加到暂存区(staging area)再通过commit命令提交到本地仓库,最后由本地仓库通过push命令推到远程仓库中。

1.基本命令

1
2
3
4
5
6
7
8
1.1 git init // 如果需要新建一个 git 仓库
1.2 git clone url // 克隆远端文件 url 远程仓库的地址
1.3 git checkout branchName // 切换git分支,branchName 分支名称
1.4 git pull // 假设你已经在现在的分支上修改了东西要提交,pull 拉下该分支最新的远程代码,一块提交,不然有可能会把别人已经推送到这个分支的东西搞没了(会被骂)
1.5.1 git add filePath // 单个文件添加到暂存区, filePath 单个文件路径
1.5.2 git add . // . 代表全部,全部添加到暂存区
1.6 git commit -m '描述内容' // 推送到本地仓库,并写上备注(改了啥东西)
1.7 git push origin branchName // branchName 远程分支名,推送到远程分支

2.新建、切换分区

1
2
3
4
5
2.1 git branch newBranch // 新建一个本地分支 newBranch为分支名,新分支基于当前分支创建
2.2 git push origin newBranch // 把新建的本地分支推送到远程,分支名称和新建的本地分支一致,远程就新建了一个分支
---------------------------------------------------
2.3 git checkout branchName // 切换本地分支
2.4 git fetch // 如果在远程创建了新分支,本地可以通过git fetch 来获取最新的远程分支

3.删除分支

1
2
3
3.1 git branch -D branchName // 强制删除本地指定分支
3.2 git branch -d branchName // 删除本地分支 会检查有没有和上游分支 合并
3.3 git push origin --delete branchName // 删除远程分支

4.查看分支及常用功能

1
2
3
4
5
6
7
8
9
4.1 git branch // 查看所有本地分支
4.2 git branch -r // 查看所有远程分支
4.3 git branch -a // 查看所有本地和远程分支
------------------------------------------
4.4 git status // 查看git状态,当前所在分支及该分支什么状态,待添加 or 待提交 or 待推送 or 有冲突待解决等
4.5 git diff // 查看工作区和暂存区(add)的差异
4.6 git diff filePath // 查看指定文件工作区和暂存区的差异,filePath文件路径,可以通过git status 查看
4.7 git log // 查看提交(commit)记录
4.8 git show commit-id // 查看指定提交的内容 commit-id ,每次提价生成的commit值,可以通过git log 查看

5.合并分支

1
5.1 git merge branchName // 合并本地branchName到当前分支

6.撤销 回退

1
2
3
4
5
6
7
8
9
10
11
12
13
--------撤销工作区的更改--------
6.1 git checkout -- filePath // 撤销工作区指定文件的更改,filePath,文件路径都可通过 git status查看
6.2 git checkout . // 撤销工作区所有更改
--------撤销暂存区的更改--------
6.3 git reset HEAD filePath // 撤销上次add指定的文件更改
6.4 git reset HEAD . // 撤销上次add的全部更改
--------回退本地仓库--------
6.5 git reset --hard HEAD^ // 回退到上次commit状态
6.6 git reset --hard commit-id // 回退到指定的commit,commit-id可通过git log 查看
--------完整的回退仓库操作--------
6.7 git branch newBranch // 本地创建新的分支,备份,防止回退有问题
6.8 git reset --hard commit-id // 重置到指定的commit提交,重置到改提交后,后面的提交记录会去除
6.9 git push -f origin branchName // 强制推送到远端

7.取消git跟踪

1
2
7.1 git rm --cached filePath // 取消 对file的git跟踪,filePath 文件路径, 并在.gitignore 文件中添加 不想跟踪的该文件
7.2 git rm --f filePath // 删除filePath的跟踪,并且删除本地文件。

8.新建tag(一般用tag标记已发布的版本)

1
2
3
4
8.1 git tag tagName // 创建本地最后一次提交的commit 标签,tagName 标签名,
8.2 git tag tagName commit-id // 创建指定提交的标签,tagName 标签名,commit-id 提交的commit-id,可通过git log 查看,
8.3 git tag -a tagName -m '标签备注' // 创建一个带有备注的tag标签,tagName 标签名,-m 后面跟备注信息
8.4 git push origin tagName // 推送tag到远程,tagName 远程tag名,和本地tag保持一致

9.查看tag、切换tag

1
2
3
4
9.1 git tag // 查看本地已有tag标签列表
9.2 git show tagName // 查看指定tag名的详情信息
9.3 git checkout tagName // 切换指定的tag
9.4 git checkout -b newBranch tagName // 检出指定的tag,并创建本地新的分支newBranch

10.删除tag

1
2
10.1 git tag -d tagName // 删除本地tag
10.2 git push origin :refs/tags/tagName // 删除远程tag,tagName 远程标签名

参考文章

本文采用CC-BY-SA-3.0协议,转载请注明出处
作者: Lee