命令别名

cd ~/
vi .bashrc

添加以下内容

# 友好的日志显示
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
# 友好的文件列表显示
alias ll='ls -al'

创建仓库

克隆一个已创建的仓库
  • 通过 SSH

    $ git clone ssh://user@domain.com/repo.git
  • 通过 HTTP

    $ git clone http://domain.com/user/repo.git
  • 创建一个新的本地仓库

     $ git init

添加修改

添加修改到暂存区
  • 把指定文件添加到暂存区

    $ git add xxx
  • 把当前所有修改添加到暂存区

    $ git add .
  • 把所有修改添加到暂存区

    $ git add -A
提交修改到本地仓库
  • 提交本地的所有修改

    $ git commit -a
  • 提交之前已标记的变化

    $ git commit
  • 附加消息提交

    $ git commit -m 'commit message'

储藏

有时,我们需要在同一个项目的不同分支上工作。当需要切换分支时,偏偏本地的工作还没有完成,此时,提交修改显得不严谨,但是不提交代码又无法切换分支。这时,你可以使用 git stash 将本地的修改内容作为草稿储藏起来。

官方称之为储藏,但我个人更喜欢称之为存草稿。
  • 1.将修改作为当前分支的草稿保存

    $ git stash
    1. 查看草稿列表

      $ git stash list
      stash@{0}: WIP on master: 6fae349 :memo: Writing docs.
  • 3.1 删除草稿

    $ git stash drop stash@{0}
  • 3.2 读取草稿

    $ git stash apply stash@{0}

撤销修改

  • 移除缓存区的所有文件(i.e. 撤销上次git add)

    $ git reset HEAD
  • 将HEAD重置到上一次提交的版本,并将之后的修改标记为未添加到缓存区的修改

    $ git reset <commit>
  • 将HEAD重置到上一次提交的版本,并保留未提交的本地修改

    $ git reset --keep <commit>
  • 放弃工作目录下的所有修改

    $ git reset --hard HEAD
  • 将HEAD重置到指定的版本,并抛弃该版本之后的所有修改

    $ git reset --hard <commit-hash>
  • 用远端分支强制覆盖本地分支

    $ git reset --hard <remote/branch> e.g., upstream/master, origin/my-feature
  • 放弃某个文件的所有本地修改

    $ git checkout HEAD <file>
  • 删除添加.gitignore文件前错误提交的文件:

    $ git rm -r --cached .
    $ git add .
    $ git commit -m "remove xyz file"
  • 撤销远程修改(创建一个新的提交,并回滚到指定版本):

    $ git revert <commit-hash>

彻底删除指定版本

  • 执行下面命令后,commit-hash 提交后的记录都会被彻底删除,使用需谨慎

    $ git reset --hard <commit-hash>
    $ git push -f

更新与推送

更新
  • 下载远程端版本,但不合并到HEAD中

    $ git fetch <remote>
  • 将远程端版本合并到本地版本中

    $ git pull origin master
  • 以rebase方式将远端分支与本地合并

    $ git pull --rebase <remote> <branch>
推送
  • 将本地版本推送到远程端

    $ git push remote <remote> <branch>
  • 删除远程端分支

    $ git push <remote> :<branch> (since Git v1.5.0)
    $ git push <remote> --delete <branch> (since Git v1.7.0)
  • 发布标签

    $ git push --tags
查看信息
  • 显示工作路径下已修改的文件:

    $ git status
  • 显示与上次提交版本文件的不同:

    $ git diff
显示提交历史:
  • 从最新提交开始,显示所有的提交记录(显示hash, 作者信息,提交的标题和时间)

    $ git log
  • 显示某个用户的所有提交

    $ git log --author="username"
  • 显示某个文件的所有修改

    $ git log -p <file>
显示搜索内容:
  • 从当前目录的所有文件中查找文本内容

    $ git grep "Hello"
  • 在某一版本中搜索文本

    $ git grep "Hello" v2.5

分支

增删查分支
  • 列出所有的分支

    $ git branch
  • 列出所有的远端分支

    $ git branch -r
  • 基于当前分支创建新分支

    $ git branch <new-branch>
  • 基于远程分支创建新的可追溯的分支

    $ git branch --track <new-branch> <remote-branch>
  • 删除本地分支

    $ git branch -d <branch>
  • 强制删除本地分支,将会丢失未合并的修改

    $ git branch -D <branch>
切换分支:
  • 切换分支

    $ git checkout <branch>
  • 创建并切换到新分支

    $ git checkout -b <branch>
标签
  • 将分支合并到当前HEAD中

    $ git merge <branch>