Git 常用命令

Git

用过且常用到的 git 命令,记录下来。方便查询

修改提交记录

1
2
3
4
5
# 重写最后一次提交,不编辑描述信息
git commit --amend --no-edit

# 将新的修改 应用到最后一次的提交内容里面,编辑最后一次的提交描述为 “fix a bug.”
git commit --amend -m "fix a bug."

查看提交历史

1
2
3
4
5
6
7
8
9
10
11
12
# 一行显示
git log --oneline
# 查看最近 2 次的提交日志
git log -2
# 查看历史纪录以来哪几行被修改
git log -p

# git reflog 是用来恢复本地错误操作很重要的一个命令 (比如往前回滚了两个提交,现在想回到回滚前的节点。这时候 git log ,已经不能看到那个 hash 值了,此时用 git reflog)
git reflog

# 设置一个 git lg 的别名更方便地查看历史(设置方法在下面)
git lg

设置一个 lg 别名,高效查看提交历史

1
2
# 设置一个 lg 的别名
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

pull

git pull 其实是执行了两个操作:git fetchgit merge
git pull 是获取远程仓库的新内容,并合并到本地(如果远程与本地都修改了同一行,需要处理冲突)。

git pull 用法:

1
git pull <remote> <remoteBranch>:<localBranch>

其实在平时使用时关联了远程仓库,直接执行 git pull 即可。

移除暂存区对文件的跟踪

1
git rm --cached (-r 文件夹) files-path

撤销工作区文件的更改

1
git checkout -- fileName

OR 撤销工作区的所有更改

1
git checkout .

撤销暂存区文件的修改

1
git reset HEAD file

OR 撤销暂存区的所有更改

1
git reset .

仓库操作

  • 查看当前远程仓库

    1
    git remote -v
  • 查看远程仓库详细信息

    1
    git remote show [remote-name]
  • 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,运行

    1
    git remote add [shortname] [url]
  • 移除远程仓库

    1
    git remote rm origin
  • 从远程仓库抓取数据

    1
    git fetch [remote-name]
  • 推送数据到远程仓库

    1
    git push origin master
  • 远程仓库的删除和重命名

    1
    2
    git remote rename <oldName> <newName>
    git remote rm

分支操作

功能分支的名字,可以采用 feature- 的形式命名。

Git 鼓励大量使用分支:

  • 查看分支:git branch

  • 创建分支:git branch <name>

  • 切换分支:git checkout <name>

  • 创建+切换分支:git checkout -b <name>

  • 重命名分支: git branch -m oldName newName

  • 合并某分支到当前分支:git merge <name>

  • 合并当前分支到某分支:git rebase <name>

  • 删除分支:git branch -d <name>

  • 删除远程分支( v1.7.0 之后):$ git push origin --delete <branchName>

  • 服务器上获取最新的版本并将你本地主分支指向到它:

    1
    2
    git fetch origin  
    git reset --hard origin/master

重写历史提交记录

  • 显示 HEAD 更改时间的列表 git reflog

    git reflog 可以查看所有分支的所有操作记录(包括(包括 commit 和 reset 的操作),包括已经被删除的 commit 记录,git log 则不能查看已经删除了的 commit 记录,而且跟进结果可以回退到某一个修改, 红色加粗的即是被删除了的

  • 改变最后的提交 git commit --amendgit commit --amend -m "fix bug #42"

  • 清除历史提交记录中的敏感信息 git filter-branch

  • 更改旧的或多个提交 git rebase

Stash

  • git stash
  • git stash pop
  • git stash list

git tag

含附注的标签:

创建一个含附注类型的标签非常简单,用 -a (译注:取 annotated 的首字母)指定标签名字即可:

1
2
3
4
5
$ git tag -a v1.4 -m 'my version 1.4'  
$ git tag
v0.1
v1.3
v1.4

其他

  • 内建的图形化 git:

    1
    gitk
  • 彩色的 git 输出:

    1
    git config color.ui true
  • 显示历史记录时,只显示一行注释信息:

    1
    git config format.pretty oneline
  • 交互地添加文件至缓存区:

    1
    git add -i
  • 单个文件到指定版本

    1
    git checkout <HEAD> <file>

常用命令

  • git clone https://github.com/ // 将远程库下载到本地

  • git init // 初始化一个 Git 仓库

  • git add . // 将工作区内容添加到暂存区(使用 -A 也可以)

  • git status // 查看状态

  • git commit -m ‘comment’ // 将暂存区的内容提交到版本库

  • git remote add origin https://github.com/ // 与远程库建立关联

  • git push origin branchName // 将本地版本库内容提交到远程分支,第一次需要加 -u

  • git pull origin branchName // 将远程分支拉到本地后通过git merge合并

  • git pull –rebase branchName // 将远程分支拉到本地后通过git rebase合并

  • git log –pretty=oneline –pragh // 查看日志

  • git checkout -b branchName // 从当前版本库创建一个分支,并切换到该分支

  • git branch // 查看所有分支

  • git branch -D branchName // 删除分支

  • git reset –hard HEAD // 丢弃工作区和暂存区的所有更改

  • git checkout – fileName // 丢弃工作区的文件更改

  • git checkout <HEAD> <file> 单个文件到指定版本

  • git stash // 将当前分支的内容暂存起来,等价 git stash push

  • git stash list // 列出当前分支缓存的内容

  • git stash pop // 拿出当前分支缓存的内容

  • git fectch origin branchName // 将远程分支拉到本地

  • git merger branchName // 将分支合并到本地

  • git rebase branchName // 合并分支到本地

  • git diff HEAD // 将工作区与当前版本库对比

不常用命令

  • `git tag ‘v1.0’ // 打标签
  • git tag -d ‘v1.0’ // 删除标签
  • git branch -a // 查看所有分支(包括远程分支)
  • git branch -r // 只查看远程分支
  • git rm fileName // 从 Git 中删除文件
  • git mv oldName newName // 文件改名
  • git commit -am “init” 提交并且加注释
  • git config –list // 查看用户信息
  • git grep ‘something’ // 文件内容搜索
  • git reflog // 分支等引用变更记录管理
  • git show-branch // 显示分支列表及拓扑关系
  • git count-objects // 显示松散对象的数量和磁盘占用
  • git filter-branch // 版本库重构
  • git fsck // 对象库完整性检查
  • git blame fileName // 列出文件内容,左侧是对应每行的提交纪录
  • git gc // 对仓库进行重新打包以节省空间(会定时运行)
  • git revert // 还原一个版本的修改

注意

  • git pull 相当于:git fetch + git merge
  • git mv 相当于:mv /git rm / git add

-------------------本文结束 感谢您的阅读-------------------