git命令
目录
git命令大全
一、基础命令
1.1 获取Git仓库
git init
初始化仓库git clone <url>
克隆现有仓库
1.2 修改与提交
git status
检查当前文件状态git add .
跟踪所有件(添加到暂存区)git add <文件>
跟踪指定新文件(添加到暂存区)git diff
命令。查看已暂存和未暂存的修改git diff --cached
查看已暂存的将要添加到下次提交里的内容git diff dev master
比较dev
分支和master
分支差异git commit -m "这里写你要提交的信息"
提交更新,提交暂存区所有文件git commit --amend
修改最后一次提交git commit -a
跳过使用暂存区域,加上-a
选项,Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤git rm -f <文件>
移除文件,加上-f
参数表示强制删除git rm --cached <文件>
把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中。 换句话说,你想让文件保留在磁盘,但是并不想让 Git 继续跟踪。git mv >old? <new>
移动文件(文件更名)
1.3 查看提交历史
git log
查看提交历史git log -p -2
-p
一个常用的选项是 -p,用来显示每次提交的内容差异。-2
显示最近两次提交git log --stat
看到每次提交的简略的统计信息,--stat
选项在每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了git log --pretty=oneline
将每个提交放在一行显示git blame <文件>
以列表方式查看指定文件的提交历史
1.4 撤销操作
git commit --amend
有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了。 此时,可以运行带有--amend
选项的提交命令尝试重新提交git reset HEAD <文件>
取消暂存git checkout -- <文件>
撤消对文件的修改, 将它还原成上次提交时的样子(或者刚克隆完的样子,或者刚把它放入工作目录时的样子),这是个危险命令,你对那个文件做的任何修改都会消失 - 你只是拷贝了另一个文件来覆盖它。 除非你确实清楚不想要那个文件了,否则不要使用这个命令。git reset HEAD <file>
取消暂存区部分文件的更改git reset --hard <commit id>
代码回退到某个commit
记录
1.5 远程仓库操作
-
git remote -v
查看远程版本库信息,-v
,会显示需要读写远程仓库使用的 Git 保存的简写与其对应的 URL,如果拥有多个远程仓库,则会将它们全部列出 -
git remote add <自定义远程仓库别名> <url>
添加远程仓库,使用clone
命令克隆一个仓库,远程仓库默认名称为“origin”,为什么要自定义别名呢?以为当一个本地仓库要推送到多个远程仓库时,不同的名称可以区分不同的远程仓库 -
git fetch <远程仓库>
拉取远程仓库中有但本地没有的代码,该命令不会自动合并或修改你当前的工作,需手动合并 -
git push [远程仓库] [推送分支]
推送到远程仓库,如git push origin master
,推送到名为origin
仓库的master
分支上 -
git remote show [remote-name]
查看某一远程仓库的更多信息,如git remote show origin
-
git remote rename <旧名> <新名>
远程仓库的移除与重命名 -
git remote rm <远程仓库>
移除一个远程仓库 -
git remote set-url origin [url]
修改远程仓库地址
1.6 标签
git tag
列出标签git tag -a v1.0 -m '1.0版本'
创建标签,v1.0
版本号,-m
选项指定了一条将会存储在标签中的信息git show v1.0
查看v1.0
标签信息与对应的提交信息git tag -a <tagname> <logId>
后期打标签,如在v1.2
时忘记给项目打标签,可使用git tag -a v1.2 9fceb02
命令补上,9fceb02
为提交历史id
git push origin <tagname>
推送标签到远端,如git push origin v2.1
,推送v2.1
标签到origin
仓库,如果要推送多个标签,添加--tags
选项既可git tag -d <tagname>
删除本地标签
二、分支
2.1 分支的新建与合并
git checkout -b <分支名称>
新建分支,-b
选项表示新建分支并同时切换带该分支上,如创建dev
分支可使用git checkout -b dev
命令git checkout <分支名称>
切换分支,如切换到master
分支,git checkout master
git branch
列出所有分支git merge <分支>
合并分支git branch -d <分支>
删除分支git rebase <分支>
2.2 分支管理
git branch --merged
查看哪些分支已经合并到当前分支git branch --no-merged
查看所有包含未合并工作的分支
2.3 远程分支
git pull
跟踪分支,拉取远端代码覆盖本地。Git 能自动地识别去哪个服务器上抓取、合并到哪个分支git push origin --delete serverfix
删除远端分支,从服务器上删除serverfix
分支- 拉取所有远程分支
- git branch -r | grep -v '->' | while read remote; do git branch --track "\({remote#origin/}" "\)remote"; done
- git fetch --all
- git pull --all
2.4 变基
git rebase --onto master server client
取出client
分支,找出处于client
分支和server
分支的共同祖先之后的修改,然后把它们在master
分支上重放一遍git rebase [basebranch] [topicbranch]
直接将特性分支变基到目标分支上,省去要切换到某个分支上,再对其执行变基命令的多个步骤,如将server
中的修改变基到master
上git rebase master server
,注意:不要对在你的仓库外有副本的分支执行变基- 修改旧的
commit
的message
git rebase -i logid
- 在弹出的编辑页面,将要修改的错误的commit message前面的“pick”改为“reword”,然后保存
- 保存后会再弹出一个编辑页面,将里面错误的commit message改为想要的,然后保存
git push –force
三、Git工具
3.1 交互式暂存
git add -i
提供选项,选择要添加到暂存区的文件
3.2 储藏与清理
有时,当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态,而这时你想要切换到另一个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对这个问题的答案是 git stash
命令。
git stash list
查看储藏的东西git stash apply
将刚刚储藏的工作重新应用,如果想要应用其中一个更旧的储藏,可以通过名字指定它,像这样:git stash apply stash@{2}
。 如果不指定一个储藏,Git 认为指定的是最近的储藏git clean
从工作目录中移除未被追踪的文件
3.3 搜索
git grep -n
3.4 重写历史
git commit --amend
修改最后一次提交git rebase -i HEAD~3
修改多个提交信息,修改最后三次提交
3.5 高级合并
git merge --abort
中断一次合并git merge -Xignore-space-change whitespace
忽略空白git log --graph --oneline --decorate --all
检出冲突git log --oneline --left-right HEAD...MERGE_HEAD
合并日志git reset --hard HEAD~
修复引用git revert -m 1 HEAD
还原提交