git init
初始化一个文件夹为git仓库。
git clone 远程仓库地址
克隆一个远程仓库。
git add 文件名
提交一个文件到暂存区。
git add .
提交所有文件到暂存区。
git commit -m "提交信息"
用提交信息提交一次记录。
git commit
在git默认编辑器中编写提交信息并提交。
git commit -a
将所有跟踪过的文件提交。已跟踪的文件是指添加到暂存区并修改过的文件,新添加但并未添加到暂存区的文件不会被提交。
git commit --amend
修改上次提交,可以追加记录文件,重写提交记录等等。
git reset HEAD 文件名
从暂存区取消暂存一个文件。
git checkout -- 文件名
撤销对一个文件的修改操作,如果这个文件的修改没有保存到暂存区的话。
git rm 文件名
从git缓存区中移除并从工作目录中删除文件。如果不想删除只想从缓存区中移除的话可以添加--cached
选项。如果要删除的是一个已经在缓存区中并有修改或添加记录的话,需要使用-f
选项强制删除,这样做的目的是安全删除,因为不需要强制删除的文件都可以通过提交记录找回。
git mv 源文件名 目标文件名
移动或者重命名文件,文件必须是已经跟踪过(也就是处在暂存区)的文件。相当于以下三条命令的效果:
mv src dest
git rm src
git add dest
git remote add origin 远程仓库地址
添加一个名字为origin 的远程仓库。
git remote remove origin
删除origin远程仓库。
git remote (-v)
查看远程仓库(以及远程仓库地址)。
git push origin master
将本地master分支推送到远程origin的master分支。
git pull
从远程仓库拉取分支并尝试合并,相当于fetch和merge操作。
git fetch
仅从远程仓库拉取分支。
要忽略的文件在.gitingore
文件中定义。忽略文件的格式如下:
* 空行或者注释行(#开头的行)会被忽略。
* /
开头表示项目根目录。
* /
结尾表示一个目录。
* !
表示非。例如! *.cs
就是忽略所有的不是C#代码的文件。
* 使用glob模式定义的文件。
glob模式是指shell使用的简化版的正则表达式版本。规则如下: * *匹配0或多个字符; * [abcx]匹配括号中任意一个字符,在这里也就是a、b、c或者x。 * [0-9]表示匹配0-9的任何一个字符。 * ?只匹配一个字符。 * **两个连着的星号匹配任意目录。
git diff
查看当前文件和缓存区之间的差异。
git diff --cached
或者git diff --staged
查看已经暂存将要提交的文件更改。
git difftool --tool-help
查看可以安装使用的差异查看工具,以提供更高级的功能。
git branch 分支名
新建一个分支。
git branch (-vv)
查看所有分支(以及与远程分支的比较)。
git checkout 分支名
切换到一个已有的分支。
git checkout -b 分支名
新建并切换到一个新分支。
git branch -d 分支名
删除一个本地分支,如果该分支有未提交的内容,删除会失败,这时候需要-D
选项强制删除。
git push origin --delete 分支名
删除服务器的远程分支,一般不删除数据只删除指针直到垃圾回收。
git branch -u(--set-up-stream) 远程仓库名/远程分支名
用本地分支跟踪远程仓库上的分支,本地分支和远程分支不需要同名。
git stash
将当前的修改临时储藏起来,工作目录将变成干净的。
git stash list
显示已经储藏的所有记录。
git stash apply (储藏名字)
应用储藏,未指定则是最近的储藏。
git stach drop 储藏名字
删除某一个储藏。
git stash pop
应用一个储藏并删除它。
git stash --keep-index
储藏当前的文件,不包括已经通过git add命令暂存的文件。
git stash -u
储藏文件并包括未跟踪的文件。
git clean -f -d
确认清理工作目录中的未跟踪的文件和目录。可以将-f选项换成-n选项进行一次演习,来查看到底会删除什么文件。还可以用-x选项清理.gitignore文件中忽略的文件。
git tag
查看已有的标签。
git tag -l '匹配模式'
列出匹配的标签。
git tag -a 标签名 -m '提交信息'
增加一个附注标签。
git tag -a 标签名 提交校验值
在某次提交上打一个标签。
git tag 标签名
增加一个轻量级标签。
git push origin --tags
将所有标签推送到远程分支上。
git push origin 标签名
只推送某个标签到远程分支。
git merge 分支名
当一个分支合并到当前分支。
git merge --abort
退出合并,当合并出现冲突又无法解决时,可以使用该命令退出合并操作。
git rebase master dev
将dev分支在master上变基。使用此操作时要注意,只能对自己本地的私有分支进行变基操作,在合并到公共分支上。否则会打乱公有的提交记录,导致代码管理混乱。
git status
可以查看当前的状态。
git status -s
或者git status --short
查看当前状态的简略输出。
git配置文件有三级,第一级是系统配置,用–system标出;第二级是用户配置,用–global标出;第三级是项目配置,在当前项目文件夹中默认指定。每一级都会覆盖上一级的配置。
git config --list
列出所有属性。
git config --list --global(system)
列出全局(系统)属性。
git config --global 属性名 属性值
修改用户配置的属性值,如果不写的话就是修改当前项目的配置。
git config 属性名
查看某一项属性的值,也可以使用选项查看其他级别的配置。
git help 某个命令
`git 命令名 –help· 查看某个命令的帮助,不过是英文的。