配置个人的用户名称和电子邮箱地址:
# 系统设置 $ git config --system user.name "userName" $ git config --system user.email "user@email.com" # 全局设置(当前用户) $ git config --global user.name "userName" $ git config --global user.email "user@email.com" # 仓库设置(当前仓库) $ git config --local user.name "userName" $ git config --local user.email "user@email.com"
文本编辑器
# 设置一个叫 emacs 的默认文本编辑器 $ git config --global core.editor emacs
差异分析工具
# 设置一个叫 vimdiff 的默认差异化分析工具 $ git config --global merge.tool vimdiff
查看配置信息
# 全部 $ git config --list # 局部 $ git config --local --list # 查看某个变量 $ git config user.name
# 初始化,该命令会在当前文件夹生成一个 .git 目录 $ git init # 指定一个目录作为初始化 $ git init newTest
添加修改或增加的内容到本地版本库
$ git add *.c $ git add README $ git commit -m "第一次提交"
# 参数说明:repo:Git 仓库 directory:本地目录 $ git clone <repo> $ git clone <repo> <directory>
# git status 以查看在你上次提交之后是否有修改 $ git status # -s 参数,以获得简短的结果输出 $ git status -s
# 尚未缓存的改动,多个文件比较 $ git diff # 查看已缓存的改动 $ git diff --cached # 查看已缓存的与未缓存的所有改动 $ git diff HEAD # 显示摘要而非整个 diff $ git diff --stat # 将工作区中的文件和暂存区文件进行比较 $ git diff <文件名> # 将工作区的文件和本地库历史版本进行比较 $ git diff <本地库版本><文件名>
$ git commit -m '第一次版本提交'
# git reset HEAD** 命令用于取消已缓存的内容 $ git reset HEAD hello.php
# 正常移除 $ git rm <file> # 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f $ git rm -f <file> # 文件从暂存区域移除 $ git rm --cached <file>
移动或重命名文件
# 创建分支 $ git branch <branch name> # 切换分支 $ git checkout <branch name> # 合并到当前分支 $ git merge <branch name> # 删除分支 $ git branch -d <branch name> # 查看分支 $ git branch -v or git branch
# 解决完冲突后,执行以下命令 $ git add . $ git commit
# 最完整显示 $ git log # 简洁显示历史 $ git log --oneline # 开启了拓扑图 $ git log --graph # 逆向显示日志 $ git log --reverse --oneline # 查找指定用户日志, -5 是显示 5 条记录的意思 $ git log --author=<name> --oneline -5 # 指定日期查询, --no-merges 选项以隐藏合并提交,可以执行几个选项:--since 和 --before,但是你也可以用 --until 和 --after $ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges # 以漂亮的格式显示历史提交信息 $ git log --pretty=oneline # 多了指针显示 $ git reflog
# 带注解的标签 $ git tag -a v1.0.0 # 查看标签 $ git tag # 指定标签信息命令 $ git tag -a <tagname> -m "标签" # PGP签名标签命令 $ git tag -s <tagname> -m "标签"
# 要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用 $ git remote add <shortname> <url> # 查看当前的远程库 $ git remote # 执行时加上 -v 参数,你还可以看到每个别名的实际链接地址 $ git remote -v
# 从远程仓库下载新分支与数据,命令执行完后需要执行git merge 远程分支到你所在的分支 $ git fetch # 从远端仓库提取数据并尝试合并到当前分支 $ git merge
$ git push <alias> <branch>
$ git remote rm [别名]
$ git reset --hard <局部索引值> # 只能往后退 ^ 向后退一个版本,^ 有几个就退几个版本 $ git reset --hard HEAD $ git reset --hard HEAD^ $ git reset --hard HEAD^^ $ git reset --hard HEAD^^^ # 后退一个版本 $ git reset --hard HEAD~1 # 后退两个版本 $ git reset --hard HEAD~2 # reset 命令的三个参数对比 # --soft 仅仅在本地库移动 HEAD 指针 # --mixed 在本地库移动 HEAD 指针,重置暂存区 # --Hard 在本地库移动 HEAD 指针,重置暂存区,重置工作区
# 查询有哪些远程库 $ git remote -v # 添加远程仓库和别名 $ git remote add origin <远程仓库地址> # 推送本地库到远程库 $ git push origin master # 克隆 $ git clone <远程仓库地址> # 抓取远程仓库 origin 地址别名 master 远程仓库主要分支 $ git fetch origin master # 切换远程仓库的 master $ git checkout 'origin/master' # 远程的 master 合并到本地的 master $ git merge 'origin/master' # git pull == git fetch + git merge # 冲突解决
$ ssh-keygen -t ras -C <用户名>