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 中的修改变基到 mastergit rebase master server,注意:不要对在你的仓库外有副本的分支执行变基
  • 修改旧的commitmessage
    1. git rebase -i logid
    2. 在弹出的编辑页面,将要修改的错误的commit message前面的“pick”改为“reword”,然后保存
    3. 保存后会再弹出一个编辑页面,将里面错误的commit message改为想要的,然后保存
    4. 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 还原提交
原文地址:https://www.cnblogs.com/dobeco/p/11295187.html