整理了一些常用的git命令
创建版本库: | |
#克隆远程版本库(不指定分支,默认下载master代码) | |
$ git clone <url> | |
#克隆远程版本库到指定目录 | |
$ git clone <url> [dir] | |
##克隆指定远程分支的版本库 | |
$ git clone -b [branch-name] <url> | |
#在当前目录新建一个git代码库 | |
$ git init | |
#新建一个目录,将其初始化为git代码库 | |
$ git init [project-name] | |
增加/删除文件: | |
#添加指定文件到暂存区 | |
$ git add [file1] [file2] ... | |
##添加指定目录到暂存区,包括子目录 | |
$ git add [dir] | |
#添加当前目录得所有文件到暂存区 | |
$ git add . | |
#添加每个变化前都会要求确认,对于同一文件的多处变化可以实现分次提交 | |
$ git add -p | |
#删除工作区文件,并且将这次删除放入暂存区 | |
$ git rm [file1] [file2] | |
代码提交: | |
#提交暂存区到仓库区 | |
$ git commit -m [message] | |
#提交暂存区的指定文件到仓库区 | |
git commit [file1] [file2] ... -m [message] | |
#使用一次新的commit,替代上一次提交,如果代码没有任何新的变化,则来改写上次commit的提交信息 | |
$ git commit --amend -m [message] | |
#重做上一次commit,并包括指定文件的新变化 | |
$ git commit --amend [file1] [file2] ... | |
储藏: | |
#储藏变更 | |
$ git stash | |
#查看现有的储藏 | |
$ git stash list | |
#使用最近的储藏 | |
$ git stash apply | |
#使用某次的储藏 | |
$ git stash apply [stashName] | |
#重新应用被暂存的变更 | |
$ git stash apply --index | |
#从栈中移除某个储藏 | |
$ git stash drop [stashName] | |
#重新应用储藏,同事立刻将其从堆栈中移走 | |
$ git stash pop | |
分支: | |
#列出所有本地分支 | |
$ git branch | |
#列出所有远程分支 | |
$ git branch -r | |
#列出所有本地分支和远程分支 | |
$ git branch -a | |
#新建一个分支,但依然提留在当前分支 | |
$ git branch [branch-name] | |
#新建一个分支,并切换到该分支 | |
$ git checkout -b [branch-name] | |
#新建一个分支,指向指定commit | |
$ git branch [branch] [commit] | |
#新建一个分支,与指定的远程分支建立追踪关系 | |
git branch --trach [branch] [remote-branch] | |
#切换到指定分支,并更新工作区 | |
$ git chenckout [branch-name] | |
#切换到上一个分支 | |
$ git checkout - | |
#建立追踪关系,在现有分支与指定的远程分支之间 | |
$ git branch --set-upstream [branch] [remote-branch] | |
#合并指定分支到当前分支 | |
$ git merge [branch] | |
#选择一个commit,合并进当前分支 | |
$ git cherry-pick [commit] | |
#删除分支 | |
$ git branch -d [branch-name] | |
#删除远程分支 | |
$ git push origin --delete [branch-name] | |
$ git branch -dr [remote/branch] | |
查看信息: | |
#显示所有变更的文件 | |
$ git status | |
#显示当前分支的版本历史 | |
$ git log | |
#显示commit历史,以及每次commit发生变更的文件 | |
$ git log --stat | |
#搜索提交历史,根据关键词 | |
$ git log -S [keyword] | |
#显示暂存区和工作区的差异 | |
$ git diff | |
#显示当前分支的最近几次提交 | |
$ git reflog | |
远程同步: | |
#下载远程仓库的所有变动 | |
$ git fetch [remote] | |
#显示所有远程仓库 | |
$ git remote -v | |
#显示某个远程仓库的信息 | |
$ git remote show [remote] | |
#增加一个新的远程仓库,并命名 | |
$ git remote add [shortname] [url] | |
#取回远程仓库的变化,并与本地分支合并 | |
$ git pull [remote] [branch] | |
#强行推送当前分支到远程仓库,即使有冲突 | |
$ git push [remote] --force | |
#推送所有分支到远程仓库 | |
$git push [remote] --all | |
撤销: | |
#恢复暂存区的指定文件到工作区 | |
$ git checkout [file] | |
#恢复某个commit的指定文件到暂存区和工作区 | |
$ git checkout [commit] [file] | |
#恢复暂存区的所有文件到工作区 | |
$ git checkout . | |
#重置暂存区的指定文件,与上一次commit保持一致,但工作区不变 | |
$ git reset [file] | |
#重置暂存区与工作区,与上一次commit保持一次 | |
$ gitreset --hard | |
#新建一个commit,用来撤销指定commit,后者的所有变化都将被前者抵消,并且应用到当前分支 | |
$ git revert [commit] | |
其他: | |
#生成一个可供发布的压缩包 | |
$ git archive |