- git cat-file commit HEAD : 查看HEAD对应的提交内容;
- git rev-parse HEAD : 查看HEAD对应的哈希值;
- git cat-file blob HEAD:welcome.txt : 查看版本库中welcome.txt的内容;
- 使用master代表mater分支的最新提交,也可以使用全称refs/heads/master或heads/master;
- 使用HEAD代表版本库的最近一次提交;
- 使用HEAD^代表版本库的上一次提交,即最近一次提交的父提交;
- 某一次提交所对应的文件对象 <commit>:path/to/file;
- 暂存区中的文件对象:/path/to/file;
- git log –graph –oneline 以图的方式并且简要的显示提交log;
- git reset –hard <commit> : 回退到当前分支的上一次提交;
- git reset –hard master@{2} : 重置master为两次之前的值;
- 使用git reset时如果省略<commit>则相当于使用了HEAD为提交ID;
- git reset HEAD <path> : 取消之前执行的git add <path>命令时改变的暂存区;
- git reset [--soft | --mixed | --hard] <commit>
- git reset –soft <commit> : 只改变引用的指向,不改变工作区和暂存区;
- git reset –mixed <commit> : 改变引用指向并且重置暂存区,但是不改变工作区;
- git reset –hard <commit> : 彻底回退到<commit>的提交,包括引用指向,暂存区和工作区,此时工作区的修改会全部丢失;
- git reset – filename : 将文件filename撤出暂存区,相当于git add filename的逆向操作;
- git branch –v : 显示当前所在分支,并且列出其他分支,以及各分支的最新提交;
- git branch <name> : 新建一个分支;
- git branch-d <name> : 删除一个分支;
- git checkout –b <name> : 新建一个分支并且切换到这个分支;
- git checkout <name> : 切换到某个分支;
- git checkout : 汇总显示工作区暂存区和HEAD的差异;
- git checkout -- filename : 用暂存区中的filename来覆盖工作区中的filename文件,相当于取消自上次执行git add filename以来的本地修改;
- git checkout branch – filename : 用branch所指向的提交的filename替换暂存区和工作区的相应文件,会将工作区和暂存区的文件直接覆盖;
- git checkout -- . : 取消所有本地修改(相对于暂存区);
- git stash list : 查看保存进度;
- git stash : 保存进度;
- git stash pop : 从最近保存的进度恢复;
- git status –s : 以简短的方式输出git库状态;
- git clean –nd : 测试运行看哪些文件会被删除;
- git clean –fd : 强制删除多余的目录和文件;
- git stash save “message” : 保存工作进度时使用指定说明;
- git stash –k : 保存进度后不会将暂存区重置,默认会将暂存区和工作区强行重置;
- git stash apply : 除了不从进度列表中删除外其他和git stash pop一样;
- git stash drop : 删除一个存储进度,默认从最新删除;
- git stash clear : 删除所有的存储进度;
- git stash branch <branchname> <stash> : 基于进度创建分支;
- git –exec-path : 查看git命令安装目录;
- 使用rm删除工作区的文件后如果没有提交不会对暂存区和版本库产生任何影响;
- git ls-files : 查看版本库中的文件列表;
- git add –u : 将工作区本地文件变更(修改和删除)全部记录到暂存区;
- git add –A : 将工作区所有改动及新增文件添加到暂存区,相当于对修改文件进行git add,对删除文件执行git rm,对新增文件执行git add;
- git checkout HEAD~1 – welcome.txt : 从上一次历史提交中恢复文件welcome.txt;
- git mv welcome.txt bye.txt : git改名;
- git add –i : 进入交互式添加文件进入暂存区;
- .gitignore可以放在任何目录中,其作用范围为所处目录及其子目录;
- git add –f <filename> : 当文件被加到忽略文件.gitignore之后如果需要将文件加到暂存区需要加上-f并且输入文件名字;
- 忽略文件.gitignore只对未跟踪的文件有效,对于已经加入版本库的文件无效;
- 本地独享忽略文件:在版本库.git目录下的文件.git/info/exclude中来设置忽略;
- git rev-list HEAD | wc –l : 查看提交次数;
- git rev-parse –symbolic –branches : 显示分支;
- git rev-parse –symbolic –tags : 显示里程碑;
- git rev-parse HEAD : 显示HEAD对应的SHA1哈希值;
- git log –stat : 查看修改的文件;
- git diff B A : 比较里程碑B和里程碑A;
- git diff A : 比较工作区和里程碑A;
- git diff –cached A : 比较暂存区和里程碑A;
- git diff : 比较工作区和暂存区;
- git diff –cached : 比价暂存区和HEAD;
- git diff HEAD : 比较工作区和HEAD;
- git diff <commit1> <commit2> --<paths> : 比较不同版本的差异;
- git blame <filename> : 追索文件是哪个版本引入的;
- git bisect : 二分查找;
- git commit –amend : 修改最新的提交说明;
- git rebase
- git revert
- git clone <repository> <directory> : 克隆远程仓库到本地dir目录
- git show-ref : 查看仓库包含的引用,refs/head/开头的是分支,refs/remotes/开头的远程分支在本地的映射,refs/tags/开头的是里程碑;
- git fsck : 查看版本库中的松散对象;
- git prune : 清理版本库中的松散对象;
- git gc : 对分散的.git/refs下的文件打包,打包到.git/packed-refs中,丢弃90天前的reflog,对松散对象进行打包,清除未被关联的对象;
- git rerere gc : 对合并冲突的历史记录进行过期操作;
- git init –bare /path/to/repos/shared.git : 建立一个裸的版本库;
- git clone file:///path/to/repos/shared.git project : 克隆一个共享git库到project目录;
- git push origin master : 用户将本地版本库的提交推送到上游,推送指令中的origin可以从.git/config配置文件中看到是如何实现对origin远程库注册的;
- git rev-list HEAD : 本地版本库的最新提交和历史提交;
- git ls-remote origin : 显示远程版本库的引用对应的哈希值;
- git push –f : 强制推送,可能会覆盖其他人的提交;
- git config receive.denyNonFastForwards true : 禁止非快进式推送;
- git pull操作实际上由两个步骤构成,一个是git fetch一个是git merge;
- git merge refs/remotes/origin/master : 执行合并操作;
- git如何记录合并中的冲突:使用.git目录下的MERGE_HEAD记录所合并的提交ID,MERGE_MSG记录合并失败的信息,MERGE_MODE标示合并状态;
- git reset : 将暂存区重置;
- git mergetool : 调出图形化工具解决合并冲突;
- git clone –mirror git://github.com/ossxp-com/hello-world.git : 在本地克隆一个裸版本库;
- git tag : 显示当前版本库的里程碑列表;
- git tag –n1 : 显示当前版本的里程碑列表及说明;
- git describe : 将提交显示为一个易记的名字;
- git tag <tagname> <commit> : 创建轻量级里程碑,如果没有提供提交ID,则基于头指针HEAD创建里程碑;
- git tag –a <tagname> <commit> : 创建带说明的里程碑;
- git tag –m <msg> <tagname> <commit> : 创建带说明的里程碑;
- git tag –s <tagname> <commit> : 创建带签名的里程碑;
- git tag –u <key-id> <tagname> <commit> : 创建带签名的里程碑;
- git rev-parse <tagname> : 查看里程碑指向的提交对象的SHA1哈希值;
- git tag –d <tagname> : 删除里程碑;
- git push origin <tagnem> : 将本地里程碑推送到远程;
- git push <remote_url> :<tagname> : 删除远程里程碑;
- git check-ref-format : 检查命名是否符合规范,返回0表示正确,1表示错误;
- git branch : 查看本地分支列表;
- git branch <branchname> : 基于当前头指针HEAD创建新的分支;
- git branch <branchname> <start-point> : 基于<start-point>创建新的分支;
- git branch –d <branchname> : 删除分支,删除时会检查当前删除分支是否已经合并到其他分支,如果没有则会拒绝删除;
- git branch –D <branchname> : 强制删除分支,即使此分支没有合并到其他分支;
- git branch –m <oldbranch> <newbranch> : 重命名分支,如果已经存在newbranch则会重命名失败;
- git branch –M <oldbranch> <newbranch> : 重命名分支,即使已经存在newbranch也会重新覆盖;
- git cherry : 查看本地仓库比远程仓库更新的提交;
- git checkout –b <local-branch> <origin-branch> : 显示的从远程分支创建本地分支;
- git show-ref : 查看本地的所有引用;
- git branch –r : 查看远程分支;
- git remote add new-remote : 创建新的远程版本库;
- git remote –v : 查看远程版本库;
- 更改远程版本库的地址:手工修改.git/config文件,或者使用git remote命令,git remote set-url new-remote new-url;
- git remote rename : 更改远程版本库的名称;
- git remote update : 远程版本库更新;
- git remote rm : 删除注册的远程版本库;
- git format-patch –s HEAD~3..HEAD : 将最近的三个提交转换为补丁文件;
- git svn clone –s <svn-url> : 对svn库进行clone;
- git svn dcommit : 向svn库推送git库上的提交;
- git svn fetch : 从svn版本库获取更新;
- git svn rebase : 将git中未推送的提交通过变基操作转换为svn的最新提交;
- git rebase –continue : 完成变基操作;