[TOC]
概述
上面,我们已经把git都安装完毕了。下面们来讲解一些git的常用的命令。
先看一些git中常见的名词
master: 默认开发分支
origin: 默认远程版本库
Index / Stage:暂存区
Workspace:工作区
Repository:仓库区(或本地仓库)
Remote:远程仓库
Git常用命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
| # //在当前目录下新建一个代码库。初始化 $ git init //新建一个目录,将其初始化为一个代码库 $ git init [project name] //从远程代码库克隆代码到本地代码库 $ git clone [url]
# //查看修改状态 $ git status //添加指定目录文件到暂存区 $ git add [dir] //添加当前目录所有文件到暂存区 $ git add [file1] [file2] //添加当前目录所有文件到暂存区 $ git add . //对于同一文件的多处变化。可以实现分次提交 $ git add -p //删除工作区文件。并将删除放入暂存区 $ git rm [file1] [file2]... //停止追踪指定文件,但是该文件会保留在工作区 $ git rm --cached [file] //改名文件,并且将这个改名放入暂存区 $ git mv [file-original] [file-renamed]
# //改名文件,并且将这个改名放入暂存区 $ git commit -m [message] //提交暂存区的指定文件到仓库去 $ git commit [file1] [file2]... -m [message] //提交工作区自上次commit之后的变化,直接到仓库区 $ git commit -a //提交时显示所有diff信息 $ git commit -v //使用一次新的提交。替代上一次的提交 //如果代码没有任何新的变化。则用来改写上一次commit的提交信息 $ git commit -amend -m [message] //重做上一次的commit,并且包含指定文件的新变化 $ git commit -amend [file1] [file2]
#
//查看文件变更内容.这个是查看所有本地文件的改动 // 只改动一个文件的话,可以在命令后面加上文件名 $ git diff [file name]
# //查看远程所有分支 $ git branch -r //查看本地所有分支 $ git branch //查看本地所有分支和远程分支 $ git branch -a //3 创建本地分支.但是依然停留在当前分支 $ git branch [branch-name] // 创建本地分支.并且切换到该分支 $ git checkout -b <branch-name> //切换到指定分支,并且更新工作区 $ git checkout [branch-name] //切换到上一分支 $ git checkout - //建立追踪关系。在现有分分支和指定的远程分支之间 $ git branch --set -upstream [branch-name] [remote-branch] //3 创建一个分支。与指定的远程分支建立追踪关系 $ git branch --track [branch-name] [remote-branch] //删除分支 $ git branch -d [branch-name] //删除远程分支 $ git push origin --delete [branch-name] $ git branch --dr [remote/branch-name] //合并指定分支到当前分支 $ git merge [branch] //衍合指定分支到当前分支 $ git rebase <branch> //选择一个commit.合并进当前分支 $ git cherry-pick [commit]
# //列出所有本地标签 $ git tag //基于最新的提交创建标签 $ git tag <tagname> //删除标签 $ git tag -d <tagname> //删除远程标签 $ git push origin :refs/tags/[tagname] //删除tag信息 $ git show [tagname] //提交指定Tag $ git push [remote] [tagname] //提交所有Tag $ git push [remote] --tags //新建一个分支,指向某个tag $ git chekout -b [branch] [tag]
# //显示有变更的文件 $ git status //显示当前分支的版本历史 $ git log //显示commit历史,以及每次commit发生变更的文件 $ git log --stat //根据关键字搜索提交历史 $ git log -S [keyword] //显示当前分支的版本历史 $ git log //显示当前分支的版本历史 $ git log //显示当前分支的版本历史 $ git log
//在clone完成之后,Git 会自动为你将此远程仓库命名为origin(origin只相当于一个别名,运行git remote –v或者查看.git/config可以看到origin的含义),并下载其中所有的数据,建立一个指向它的master分支的指针,我们用(远程仓库名)/(分支名) 这样的形式表示远程分支,所以origin/master指向的是一个remote branch(从那个branch我们clone数据到本地) $ git remote -v
//一直找不到Git在mac中的安装位置,今天看到一个方法,试了下是可行的。 //在命令行中打入which git, 就会显示git的安装位置了。 which git
|
文件比对相关:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| # 显示修改和本地文件比对 git diff [file]
# 显示测试暂存区和上一个commit的差别 git diff --cached [file]
# 显示工作区与当前分支最新的commit的之间的差异 git diff HEAD
# 显示两次提交之间的差异 git diff [first_branch]...[second-branch]
#显示你今天写了多少行代码 git diff --shortstat "@{0 day ago}"
#显示某次提交的元数据和内容变化 git show [commit]
#显示某次提交发生变化的文件 git show --name-only [commit]
# 显示某次提交时候,某个文件的内容 git show [commit]:[filename]
#显示当前的分支的最近几次的提交 git reflog
|
git stash 相关的命令
我们有时会遇到这样的情况,正在dev分支开发新功能,做到一半时有人过来反馈一个bug,让马上解决,但是新功能做到了一半你又不想提交,这时就可以使用git stash命令先把当前进度保存起来,然后切换到另一个分支去修改bug,修改完提交后,再切回dev分支,使用git stash pop来恢复之前的进度继续开发新功能。下面来看一下git stash命令的常见用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| # 保存当前工作进度,会把暂存区和工作区的改动保存起来。 # 执行完这个命令后,在运行git status命令,就会发现当前是一个干净的工作区, # 没有任何改动。 git stash
# 使用git stash save 'message...'可以添加一些注释 git stash save 'message...'
# 显示保存进度的列表。也就意味着,git stash命令可以多次执行。 git stash list
#git stash pop相关 git stash pop //恢复最新的进度到工作区。 # git默认会把工作区和暂存区的改动都恢复到工作区。
# 恢复指定的进度到工作区。 git stash pop stash@{1} # stash_id是通过git stash list命令得到的 # 通过git stash pop命令恢复进度后,会删除当前进度。
# 除了不删除恢复的进度之外,其余和git stash pop 命令一样。 git stash apply [–index] [stash_id]
# 删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。 git stash drop [stash_id]
# 删除所有存储的进度。 git stash clear
|