注意:
暂存区叫stage或index,命令中使用--cached和--staged是等同的。
git区分大小写,-a和-A是不同的。
git --version:查看git版本
git help [command]:查看命令帮助
git config:配置git版本库
git config --list:显示配置列表
git config --global:全局配置
git config --global user.name xxx:配置用户名
git config --global user.email xxx:配置邮箱
git config --global http.proxy http://127.0.0.1:1080:配置http代理
git config --global https.proxy https://127.0.0.1:1080:配置https代理
git config --global http.sslVerify false:配置http的ssl验证为false
git config --global alias.co checkout:配置别名
git config --global --unset xxx:取消配置xxx
git init:将当前目录初始化为Git存储库(创建隐藏的.git文件夹及其内容)。
git clone:在指定的URL下载Git存储库的副本。
git add:将文件添加到暂存区。发生冲突并修改完冲突后,使用git add标记已解决冲突。
git add .:将工作空间下所有文件添加到暂存区(new,modifyed)
git add -A:将工作空间下所有文件添加到暂存区(new,modifyed,delete)
git add -u:将工作空间下所有文件添加到暂存区(modifyed,delete)
git ls-files:查看暂存区的文件
git ls-files -m:查看和暂存区相比,本地修改的文件
git ls-files -d:查看和暂存区相比,本地删除的文件
git rm:从工作区和暂存区删除文件,相当于删除本地文件,再将修改添加到暂存区
git rm -cached:仅从暂存区中移除文件
git mv name1 name2:重命名文件,并将修改添加到暂存区。相当于执行了mv name1 name2,git rm name1,git add name2三条命令。
git restore <file>:恢复工作区文件,从暂存区恢复。等价于git checkout file。
git restore --staged <file>:移除暂存区中所有对文件修改的暂存,相当于git reset HEAD filename。如果使用git rm -cached从缓存中删除了文件,也可以使用该命令恢复
git commit -m 'message':将暂存区的文件提交到版本库
git commit -a -m "message":可简写为 -am,跳过git add 命令,直接将工作区所有已跟踪的文件提交到版本库,未跟踪的(untracked)文件不能使用该命令
git commit --amend:撤销上一次提交将暂存区的文件重新提交(改写提交)
git status:显示与工作目录,当前分支,未跟踪的文件,已修改的文件等状态有关的信息。
git status -s:以简洁格式输出
git diff:查看暂存区和工作目录的差异
git diff --cached:查看暂存区和本地库的差异
git diff HEAD:查看本地工作区和本地库中的差异
git diff HEAD^:查看本地工作区和本地库上个版本的差异
git fetch:获取当前分支追踪的的远程分支。git fetch只会获取远程分支内容,不会合并,本地内容不会改变。可以使用git checkout origin/master切换分支来查看获取到的远程库的内容。可通过git merge origin/master来合并获取到的内容。
git fetch <remote> <branch>:获取某个远程库的某个分支
git pull:拉取当前分支追踪的远程分支,并合并到当前分支,相当于先git fetch再git merge
git pull <remote> <branch>:拉取某个远程库的某个分支
git pull origin dev:master:拉取origin远程仓库的dev分支,并合并到本地的master分支
git push:推送当前分支到追踪的远程分支
git push origin <branch>:推送当前分支到某个远程库的某个分支,但不建立追踪
git push -u origin <branch>:推送当前分支,同时建立追踪
git push origin --delete <branch>:删除远程分支
git push origin local_branch:remote_branch:将本地的local_branch分支推动到远程的remote_branch分支上
git log:显示活动分支的提交历史记录和相关的描述性消息。
git log --pretty=oneline:单行显示
git log --oneline:单行显示
git log --graph:以图来显示
git log --graph --online:以图来显示,且每个提交显示为单行
git reflog:显示所有Reference log,会显示HEAD的变化。其中HEAD@{数字},数字表示移动到当前版本需要多少步.
git reflog --date=local | grep <branchname>:查看分支来自哪一个分支
git reset:前进后退
git reset --hard [版本号]:回到制定版本,可前进后退
git reset --hard HEAD^ :有几个^回退几个版本,只能后退,^为0个时,指恢复到修改前的版本
git reset --hard HEAD~n:回退n步,只能后退
git reset --soft xxx:只倒退本地库,工作区和暂存区不后退
git reset --mixed xxx:后退本地库和暂存区,工作区不后退。不加参数时的默认选项。
git reset --hard xxx:后退本地库,暂存区和工作区,如果工作区存在未提交的内容,将会丢失该内容
git branch:查看分支
git branch -a:查看所有分支,包括本地和远程分支
git branch -v:查看分支,并且显示hash和提交信息
git branch -vv:查看分支,并且显示hash和提交信息,以及跟踪的远程分支
git branch <name>:基于分支创建新分支,name为新分支名。。
git branch <name> <hash>:根据指定提交创建分支
git branch --set-upstream-to=<remote>/<branch> branch:将本地的分支追踪到远程库的分支
git branch -u <remote>/<branch>:上面的命令--set-upstream-to的简写
git branch -m:修改分支名称
git branch -d/-D:删除/强制删除分支
git branch -merged:查看哪些分支已经合并到当前分支。在这个列表中分支名字前没有*号的分支通常可以用git branch -d删除掉。
git branch --no-merged:查看未合并工作的分支。尝试使用git branch -d删除这个列表中的分支时会失败。如果真的想删除分支并丢掉那些工作,使用-D选项强制删除。
git checkout <name>:检出分支
git checkout -b <name>:创建并切换分支
git checkout -b <name> <origin>/<master>:根据远程分支创建并检出新分支
git checkout <file>:检出暂存区的文件替换工作区的文件,注意是检出暂存区,如果修改文件并添加到暂存区,然后再次修改文件,之后执行该命令,那么只会丢失第二次修改,因为暂存区里包含第一次修改。另外,如果是拉取版本库来替换工作区,使用git reset --hard HEAD <filename>.
git merge:将指定的分支合并到当前分支(Fast forward)
git merge -no-ff -m <commit message>:合并指定分支到当前分支(-no-ff 参数表示禁用Fast forward)
git stash:暂时贮存修改内容,注意和暂存区进行区分。当你还不想提交,但需要切换分支工作时可以使用该命令暂时将修改贮存起来。
git stash list:查看所有贮藏的工作
git stash apply <stash@{2}>:应用贮藏,无参数则默认是最近的贮藏
git stash drop <贮存名>:删除贮藏
git stash pop:应用最近的贮存,并删除它
git remote:列出远程仓库
git remote -v:查看远程仓库信息,包括仓库的url
git remote show origin:显示更多远程库的信息,包括url,所有跟踪的分支,fetch或pull时本地和远程分支的关系。
git remote rename <name1> <name2>:重命名远程仓库
git remote add orgin url:添加远程库origin,关联远程仓库
git remote set-url origin url:重新设置远程库origin的url
git remote rm origin:删除远程库origin
git remote prune origin --dry-run:列出仍在远程跟踪但是远程已被删除的无用分支
git remote prune origin:清除上面命令列出来的远程跟踪
git tag:查看所有tag
git tag <name>:创建tag
git tag 版本id <name>:创建一个指向某次提交的tag
git tag -a -m <message>:创建一个未签名,带注释的tag
git show <tag name>:查看tag
git hash-object <file / stdin>:返回sha-1算法的hash值
git hash-object -w :返回hash值,同时将对象写入数据库
git cat-file:查看快照的目录列表
git cat-file -p HEAD/hash值:查看HEAD或某个sha1值对应的内部存储的对象的内容
git cat-file -t HEAD/hash值:查看HEAD或某个sha1值对应的内部存储的对象的类型
git update-index:为文件创建暂存区
git update-index --add:为新文件创建暂存区
git write-tree:将当前暂存区的状态记录为一个树对象
git read-tree <hash>:将树对象读入暂存区
git commit-tree <hash>:创建提交对象