Git常用命令
git init
初始化项目所在目录,初始化后会在当前目录下出现一个名为 .git 的目录。
1 2 # 初始化本地仓库,在当前目录下生成 .git 文件夹 $ git init
git clone
将存储库克隆到新创建的目录中,为克隆的存储库中的每个分支创建远程跟踪分支(使用 git branch -r
可见),并从克隆检出的存储库作为当前活动分支的初始分支。
1 2 3 4 5 6 7 8 $ git clone <远程仓库的网址> # 指定本地仓库的目录 $ git clone <远程仓库的网址> <本地目录> # -b 指定要克隆的分支,默认是master 分支$ git clone <远程仓库的网址> -b <分支名称> <本地目录>
git add
把要提交的文件的信息添加到暂存区中。当使用 git commit 时,将依据暂存区中的内容来进行文件的提交。
该命令可以在提交之前多次执行。它只在运行 git add
命令时添加指定文件的内容; 如果希望随后的更改包含在下一个提交中,那么必须再次运行 git add
将新的内容添加到索引。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 把指定的文件添加到暂存区中 $ git add <文件路径> # 添加所有修改、已删除的文件到暂存区中 $ git add -u [<文件路径>] $ git add --update [<文件路径>] # 添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录 $ git add -A [<文件路径>] $ git add --all [<文件路径>] # 查看所有修改、已删除但没有提交的文件,进入一个子命令系统 $ git add -i [<文件路径>] $ git add --interactive [<文件路径>]
git commit
将索引(暂存区)的当前内容与描述更改的用户和日志消息一起存储在新的提交中。
1 2 3 4 5 6 7 8 9 10 11 12 # 把暂存区中的文件提交到本地仓库,调用文本编辑器输入该次提交的描述信息 $ git commit # 把暂存区中的文件提交到本地仓库中并添加描述信息 $ git commit -m "<提交的描述信息>" # 把所有修改、已删除的文件提交到本地仓库中 # 不包括未被版本库跟踪的文件,等同于先调用了 "git add -u" $ git commit -a -m "<提交的描述信息>" # 修改上次提交的描述信息 $ git commit --amend
git config
配置命令,主要是用来配置 Git 的相关参数。
Git共有3个配置文件:
仓库配置文件:.git/.gitconfig;
全局配置文件:~/.gitconfig;
系统配置文件:Git安装目录下的etc文件夹中gitconfig。
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 $ git config <--local | --global | --system > -l $ git config -l $ git config <--local | --global | --system > -e $ git config <--local | --global | --system > --add <name> <value> $ git config <--local | --global | --system > --get <name> $ git config <--local | --global | --system > --unset <name> $ git config --global user.name <用户名> $ git config --global user.email <邮箱地址> $ git config --global http.postBuffer <缓存大小> $ git config --global color.ui true $ git config --global credential.helper cache $ git config --global credential.helper 'cache --timeout= <缓存时间>' $ git config --global credential.helper store
git branch
操作 Git 的分支命令。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 # 列出本地的所有分支,当前所在分支以 "*" 标出 $ git branch # 列出本地的所有分支并显示最后一次提交,当前所在分支以 "*" 标出 $ git branch -v # 创建新分支,新的分支基于上一次提交建立 $ git branch <分支名> # 修改分支名称 # 如果不指定原分支名称则为当前所在分支 $ git branch -m [<原分支名称>] <新的分支名称> # 强制修改分支名称 $ git branch -M [<原分支名称>] <新的分支名称> # 删除指定的本地分支 $ git branch -d <分支名称> # 强制删除指定的本地分支 $ git branch -D <分支名称>
git checkout
切换分支。
1 2 3 4 5 6 7 8 9 10 11 12 # 切换到已存在的指定分支 $ git checkout <分支名称> # 创建并切换到指定的分支,保留所有的提交记录 # 等同于 "git branch" 和 "git checkout" 两个命令合并 $ git checkout -b <分支名称> # 创建并切换到指定的分支,删除所有的提交记录 $ git checkout --orphan <分支名称> # 替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响 $ git checkout <文件路径>
git fetch
从远程仓库获取最新的版本到本地的 tmp 分支上。
1 2 3 4 5 # 将远程仓库所有分支的最新版本全部取回到本地 $ git fetch <远程仓库的别名> # 将远程仓库指定分支的最新版本取回到本地 $ git fetch <远程主机名> <分支名>
git merge
用于将两个或两个以上的开发历史加入(合并)一起,会在合并分支处产生新的提交。
例如分支A合并到B,将A分支的最后一次提交版本合并到B并在B分支提交。
1 2 3 4 5 $ git merge <分支名称> $ git merge
git rebase
用于将两个或两个以上的开发历史加入(合并)一起,例如分支A合并到B,则在B分支提交的开头处,将A分支的最后一次提交版本合并进来。
1 2 # 把指定的分支合并到当前所在的分支下 $ git rebase <分支名称>
git pull
从远程仓库获取最新版本并合并到本地。 首先会执行 git fetch
,然后执行 git merge
,把获取的分支的 HEAD 合并到当前分支。
1 2 3 4 # 从远程仓库获取最新版本。 $ git pull <远程主机名> <远程分支名> :<本地分支名> # 拉取到当前分支可省略冒号后面内容 $ git pull <远程主机名> <远程分支名>
git push
把本地仓库的提交推送到远程仓库。
1 2 3 4 5 6 # 把本地仓库的分支推送到远程仓库的指定分支 $ git push <远程仓库的别名> <本地分支名> :<远程分支名> # 删除指定的远程仓库的分支 $ git push <远程仓库的别名> :<远程分支名> $ git push <远程仓库的别名> --delete <远程分支名>
git remote
操作远程库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $ git remote $ git remote -v $ git remote --verbose # 添加远程仓库$ git remote add <远程仓库的别名> <远程仓库的URL 地址> $ git remote rename <原远程仓库的别名> <新的别名> $ git remote remove <远程仓库的别名> $ git remote set-url <远程仓库的别名> <新的远程仓库URL 地址>
git status
用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了,哪些文件没有被 Git tracked 到。
该命令不显示已经提交到历史中的信息;
查看项目历史信息使用git log
。
git log
查看项目历史信息
1 2 3 4 5 6 7 8 # 打印所有的提交记录 $ git log # 打印从第一次提交到指定的提交的记录 $ git log <commit ID> # 打印指定数量的最新提交的记录 $ git log -<指定的数量>
git tag
操作标签。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 $ git tag $ git tag <标签名称> [<commit ID> ] $ git tag -a <标签名称> -m <标签描述信息> [<commit ID> ] $ git checkout <标签名称> $ git show <标签名称> $ git tag -d <标签名称> $ git push <远程仓库的别名> <标签名称> $ git push <远程仓库的别名> –tags
git mv
重命名文件或者文件夹。
1 2 $ git mv <源文件/文件夹> <目标文件/ 文件夹>
git rm
删除文件或者文件夹。
1 2 3 4 5 6 7 8 $ git rm <文件路径>$ git rm -r <文件夹路径>$ git rm --cached
git revert
生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。
1 2 # 生成一个新的提交来撤销某次提交 $ git revert <commit ID>
git reset
还原提交记录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # 重置暂存区,但文件不受影响 # 相当于将用 "git add" 命令更新到暂存区的内容撤出暂存区,可以指定文件 # 没有指定 commit ID 则默认为当前 HEAD $ git reset [<文件路径>] $ git reset --mixed [<文件路径>] # 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改 $ git reset <commit ID> $ git reset --mixed <commit ID> # 将 HEAD 的指向改变,撤销到指定的提交记录,文件未修改 # 相当于调用 "git reset --mixed" 命令后又做了一次 "git add" $ git reset --soft <commit ID> # 将 HEAD 的指向改变,撤销到指定的提交记录,文件也修改了 $ git reset --hard <commit ID>
git diff
用于显示提交和工作树等之间的更改。
此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $ git diff $ git diff --cached $ git diff --staged $ git diff HEAD$ git diff <commit ID>$ git diff <分支名称> <分支名称>$ git diff <分支名称>...<分支名称>
If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !