一、初始化版本库
在当前目录初始化一个Git版本库
git init
指定一个目录并将其初始化为Git版本库
git init project-path
下载一个项目和它的整个代码历史
git clone url地址
二、添加或者删除文件
添加指定文件到暂存区
git add 文件1 文件2 ...
添加指定目录到暂存区,包括子目录
git add 目录
添加当前目录的所有文件到暂存区
git add .
添加每个变化前,都会要求确认
git add -p
删除工作区文件,并且将这次删除放入暂存区
git rm 文件1 文件2 ...
停止追踪指定文件,但该文件会保留在工作区
git rm --cached 文件
改名文件,并且将这个改名放入暂存区
git mv a.txt b.txt
三、设置忽略文件
设置每个人都想要忽略的文件
在根目录新建一个 .gitignore 文件,并将该文件提交到版本库,内容如下所示:
.idea
build
*.class
设置只有自己想要忽略的文件
修改 .git/info/exclude 文件
四、导出版本库
git archive --format=zip head > project.zip
五、代码提交
提交暂存区到仓库区
git commit -m "变更说明"
提交暂存区的指定文件到仓库区
git commit 文件1 文件2 ... -m "变更说明"
提交工作区自上次commit之后的变化,直接到仓库区
git commit -a
提交时显示所有diff信息
git commit -v
改写上一次commit的提交信息
git commit --amend -m "变更说明"
六、分支管理
列出所有本地分支
git branch
列出所有远程分支
git branch -r
列出所有本地分支和远程分支
git branch -a
新建一个分支,但依然停留在当前分支
git branch 分支名
新建一个分支,并切换到该分支
git checkout -b 分支名
新建一个分支,与指定的远程分支建立追踪关系
git branch --track 本地分支 远程分支
切换到指定分支,并更新工作区
git checkout 分支名
切换到上一个分支
git checkout -
合并指定分支到当前分支
git merge [branch]
选择一个commit,合并进当前分支
git cherry-pick 提交点ID
删除分支
git branch -d 分支名
删除远程分支
git push origin --delete 分支名
git branch -dr 分支名
七、状态和日志
显示当前分支的最近几次提交
git reflog
显示有变更的文件
git status
显示当前分支的版本历史
git log
显示指定文件相关的每一次diff
git log -p 文件名
显示commit历史
git log --stat
根据关键词搜索提交历史
git log -S "关键词"
显示过去5次提交
git log -5 --pretty --oneline
显示指定文件的提交信息
git blame 文件名
显示暂存区和工作区的差异
git diff
显示所有提交过的用户,按提交次数排序
git shortlog -sn
显示暂存区和上一个commit的差异
git diff --cached 文件名
显示工作区与当前分支最新commit之间的差异
git diff HEAD
八、远程同步
下载远程仓库的所有变动
git fetch origin
显示所有远程仓库
git remote -v
显示某个远程仓库的信息
git remote show origin
取回远程仓库的变化,并与本地分支合并
git pull origin 分支名
上传本地指定分支到远程仓库
git push origin 分支名
强行推送当前分支到远程仓库
git push origin --force
推送所有分支到远程仓库
git push origin --all
九、标签管理
列出所有tag
git tag
新建一个tag在当前commit
git tag tag名
新建一个分支,指向某个tag
git checkout -b 分支名 tag名
删除远程tag
git push origin :refs/tags/tag名
新建一个tag在指定commit
git tag tag名 提交点
删除本地tag
git tag -d tag名
提交指定tag
git push origin tag名
查看tag信息
git show tag名
提交所有tag
git push origin --tags
十、撤销修改
撤销多个文件
git checkout head 文件1 文件2
撤销所有txt文件
git checkout head *.txt
撤销所有文件
git checkout head .