命令别名
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
-
- 查看草稿列表
$ 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>