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为提交历史idgit 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 mastergit 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的messagegit 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还原提交

浙公网安备 33010602011771号