基础配置
设置(修改)用户名
git config --global user.name ["usrename"]
更改 .gitconfig 文件
cd ~
vim .gitconfig
查看用户名
git config user.name
设置(修改)邮箱
git config --global user.email ["email"]
查看邮箱
git config user.email
生成 ssh key
ssh-keygen -t rsa -C ["email"]
// -t 选项指定。如果没有指定则默认生成用于SSH-2的RSA密钥。这里使用的是rsa
// 密钥中有一个注释字段,用-C来指定所指定的注释,可以方便用户标识这个密钥
在正常 add 时弹出警告,把这个经过取消
git config --global core.safecrlf false
本地初始化一个仓库
git init
本地仓库与远程仓库进行连接
$ git remote add origin [email protected]:victorxlj/repo // victorxlj 是你的github账户名 repo是你要关联的仓库名
git remote // 查看关联的远程仓库的名称
git remote -v // 查看关联的远程仓库的详细信息
显示工作目录和暂存区的状态
git status
将文件添加到暂存区
git add 123.txt // 添加某个具体的文件到暂存区,比如123.txt文件
git add . // 将所有的变更到暂存区
将暂存区里的改动给提交到本地的版本库
git commit -m "我们进行了一次提交" // -m后面添加一句描述文字
git commit -a -m "我们进行了一次提交" // 直接从工作区提交到仓库,前提该文件已经有仓库中的历史版
git commit -am "我们进行了一次提交" // 直接从工作区提交到仓库,前提该文件已经有仓库中的历史版
查看历史提交信息的完整信息
git show [commit_id] // 查看某一次的,commit_id 提交id值
git show HEAD // 查看上一次
git show HEAD^ // 查看上上一次的,多一个“^”就多往上走一次
git show HEAD~2 // 查看最近第3(2+1)条提交信息
显示提交过的版本信息
git log // 显示所有提交过的版本信息
git log -2 // 显示2条提交过的版本信息
// 显示所有提交过的版本信息,简化显示,方便查看
git reflog
git log --oneline
git log --pretty=oneline
git log --pretty=format:'%h %ad | %s%d [%an]' --graph --date=short
// 查看某个文件的提交历史
git log 123.txt
git log --grep add // 查看与文本 add 有关的提交信息
回退版本
// 回退到上一个版本,最后加一个 "^" 就是回退到上一个版本,俩个"^"就是上上一个版本
git reset --hard HEAD^
// 回退到某个版本,最后一个是commit id
git reset --hard 1898c2f562bb0f19b85cb85e2ba2cdf00a437c5e // 最后一个是commit id
如果在回退以后又想再次回到之前的版本,git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作)
git reflog // 可以查看已经被删除的commit记录,git log 则不能察看已经删除了的commit记录
在工作区的修改全部撤销
git checkout -- abc.txt
把暂存区的修改回退到工作区
// 保留当前工作区的内容,进行合并
git reset HEAD // 撤回暂存区的内容
git reset HEAD hello.txt // 撤回暂存区的某个内容
git reset HEAD^ --soft // 撤回版本库中的提交到暂存区
git reset [commit id] --hard // 撤回提交,放弃变更,回退到某个版本
git push -f // 将目前自己本机的代码库推送到远端,并覆盖
已经提交到版本库,工作区中删除了文件
git rm hello.txt
git commit -m "删除了hello.txt文件" // 确实想删除这个文件
查看分支
git branch
创建分支
git branch dev // "dev"就是你新建分支的名字
切换分支
git checkout dev // 由当前分支切换到dev分支
创建 + 切换分支
git checkout -b dev // 先创建dev分支,再切换到dev分支
合并某分支到当前分支
git merge dev // 把dev分支合并到当前分支
删除分支
git branch -d dev // 把dev分支删除
将远程origin主机的master分支拉取过来和本地的当前分支进行合并
git pull origin master
把本地的代码推到远程的仓库
git push origin master
将存储库克隆到新目录中
git clone "https://github.com/jquery/jquery.git" // 双引号内为仓库的地址
设置别名
git config --global alias.ci commit // 将commit命令设置一个别名为ci
查看某个文件的每个部分是谁修改的
// 获得的格式为 commit ID | 代码提交作者 | 提交时间 | 代码位于文件中的行数 | 实际代码
git blame README.md
// 加上 -L 参数,后面跟起始行数(这里行数包括开始行,和结束行,5,7 其实获取 5、6、7 三行)
git blame -L 5,7 README.md
删除当前目录下没有被跟踪的文件
// 一次clean的演习, 告诉你哪些文件会被删除,他不会真正的删除文件, 只是一个提醒
git clean -n
// 删除当前目录下所有没有track过的文件
git clean -f
重命名文件
git mv a.txt b.txt // 把 a.txt 文件重命名为 b.txt
比较差异
git diff // 比较的是工作区和暂存区
git diff --cached // 比较的是暂存区和版本库
git diff HEAD // 比较的是工作区和版本库
git diff HEAD^ // 比较的是工作区和版本库上一个版本
git diff HEAD~4 // 比较的是工作区和版本库最近的第5个版本
git diff [commit id] // 比较的是工作区和版本库具体的某一次
git diff [commit id] [commit id] // 比较的是版本库中某一个版本和某一个版本
标签
列出所有标签
git tag
在当前提交上,打上标签
git tag [tagName]
新建一个标签在指定commit
git tag [tagName] [commitId]
新建一个标签,并加上message信息注释
git tag [tagName] -m [message]
本地删除标签
git tag -d [tagName]
把标签推送到远程仓库
git push origin v1.0 // 把某个标签推送到远程仓库
git push origin --tags // 把所有标签推送到远程仓库
远程仓库删除标签
git push origin :refs/tags/[tagName]
分支
列出当前所有分支
git branch
列出远程分支
git branch -r
新建分支
git branch [branchName] // 依旧停留在当前分支
切换到指定分支
git checkout [branchName]
创建分支并同时切换到该分支
git checkout -b [branchName]
合并指定分支到当前分支
git merge [branchName]
删除指定分支
git branch -d [branchName]