1. 安装与配置
Linux系统
$ sudo apt-get install git
Windows系统
从官网下载[https://git-for-windows.github.io/][1], 用Git bash操作。
配置提交时相关联的用户名和邮箱
$ git config --global user.name [name]
$ git config --global user.email [email@example.com]
2. 创建版本库
创建一个路径,然后初始化。
$ git init [project-name]
或者下载一个工程版本库的整个历史。
$ git clone [url]
3. 配置远程仓库
在本机第一次使用git时需要创建SSH Key,之后不用重复创建
$ ssh-keygen -t rsa -C "[youremail@example.com]"
找到.ssh目录,里面id_rsa和id_rsa.pub两个文件,分别是私钥和公钥,在github网站上将公钥的内容添加到账户里。在github网站中创建新仓库,并在本地的仓库中添加此远程仓库
$ git remote add origin git@github.com:[name]/[repo-name].git
第一次推送master分支的所有内容,以后推送时就可以不用 -u
$ git push -u origin master
4. 改变状态
- 添加文件到暂存区(Stage)
$ git add [file]
- 记录一个永久的快照到版本历史
$ git commit -m "[descriptive message]"
5. 显示信息
- 显示版本库当前状态,即文件新建或者修改情况
$ git status
- 显示工作区(Working Directory)文件修改的内容
$ git diff
$ git diff [file]
- 显示暂存区(Stage)文件修改的内容
$ git diff --staged
- 显示两个分支(Branch)不同的内容
$ git diff [first-branch]...[second-branch]
- 显示当前分支的版本改变历史
$ git log
$ git log --graph
$ git log --pretty=oneline
$ git log --abbrev-commit
- 显示一个文件的版本历史包括重命名
$ git log --follow [file]
- 显示历史命令
$ git reflog
- 显示某次提交或标签的信息
$ git show [commit/tag]
6. 版本回退
- 撤销修改文件,恢复到最近一次暂存区的状态(git commit命令之前)或工作区的状态(git add命令之前),即不保留文件改变的内容。如果文件被删除,则可以从版本库中恢复最近一次提交的文件
$ git checkout -- [file]
- 撤销添加文件,将刚刚添加进暂存区(Stage)的文件移到工作区(Working Directory),但是保留文件改变的内容
$ git reset [file]
$ git reset HEAD [file]
- 将当前版本回退到某个历史版本,但是保留本地的改变
$ git reset [commit]
$ git reset HEAD^
$ git reset HEAD^^
$ git reset HEAD~100
- 丢弃所有的修改及其历史,回到某次特定的提交
$ git reset --hard [commit]
$ git reset --hard HEAD^
$ git reset --hard HEAD^^
$ git reset --hard HEAD~100
7. 删除与重命名
- 删除工作区中的文件并将本次操作添加到暂存区(Stage),下一次可以直接提交
$ git rm [file]
- 删除版本库中的文件但是保留工作区中的文件
$ git rm --cached [file]
- 重命名文件,下一次可以直接提交
$ git mv [file-original] [file-renamed]
8. 临时保存
- 临时保存工作现场(所有修改的文件)
$ git stash
- 恢复最近一次保存的工作现场,并删除临时保存中的记录
$ git stash pop
- 恢复最近一次保存的工作现场,但不删除临时保存中的记录,还可以恢复指定的临时保存
$ git stash apply
$ git stash apply stash@{0}
- 列出所有临时保存的工作现场
$ git stash list
- 丢弃最近一次保存的临时现场
$ git stash drop
9. 分支管理
- 列出当前版本库的所有本地分支
$ git branch
- 创建新的分支
$ git branch [branch-name]
- 切换分支并更新工作区
$ git checkout [branch-name]
- 创建并切换分支
$ git checkout -b [branch-name]
- 合并分支及其历史到当前分支,会使用Fast forward模式,即在删除分支后会看不出历史分支的信息。
$ git merge [branch]
- 合并分支到当前分支,强制禁用Fast forward快速合并模式,即合并分支时会生成一个新的提交,从而在分支历史上就可以看出历史分支的信息。
$ git merge --no-ff -m "[descriptive message]" [branch]
- 删除分支 -d,若还未合并则会删除失败,此时可以强制删除分支 -D
$ git branch -d [branch-name]
$ git branch -D [branch-name]
10. 远程同步
- 查看远程库的信息
$ git remote
$ git remote -v
- 推送本地分支到远程
$ git push [remote] [local branch]
- 拉取远程分支并与本地当前分支合并
$ git pull
- 拉取远程分支并与本地指定分支合并
$ git pull [remote] [local branch]
- 获取远程所有分支和历史
$ git fetch [remote]
- 合并远程的某个分支到当前本地分支
$ git merge [remote]/[branch]
11. 标签
- 查看与创建标签,默认打在最新提交上
$ git tag
$ git tag [tag name]
$ git tag [tag name] [commit id]
$ git tag -a [tag name] -m "[descriptive message]" [commit id]
- 查看标签信息
$ git show [tag name]
- 推送某个标签或者所有标签到远程
$ git push [remote] [tag name]
$ git push [remote] --tags
- 删除本地标签和远程标签
$ git tag -d [tag name]
$ git push [remote] :refs/tags/[tag name]