常用命令
- workspace: 工作区
- Index/Stage: 暂存区
- Repository: 仓库区(或本地仓库)
- Remote: 远程仓库
全局配置
# 编辑 Git 配置文件
git config -e [--global]
# 安装Git后的第一步,配置用户名和邮箱
git config --global user.email "email@example.com"
git config --global user.name "Your Name"
# 让 Git 记住密码账号。
# 在 Git Bash 输入这个命令就可以了
git config --global credential.helper store
# 显示当前的 Git 配置
git config --list
# 删除配置
git config --unset --global <config>
创建版本库
# 在当前目录新建一个Git代码库
git init
# 新建一个目录,将其初始化为Git代码库
git init [dir]
# 克隆远程版本库到本地
git clone [url]
添加文件
添加指定文件到暂存区
git add . # 添加当前目录所有改变的文件到暂存区
<dir> # 添加指定目录到暂存区
<file>... # 跟踪指定的文件
-f <file> # 强制添加 .gitignore 忽视的文件
删除文件
git rm <file>... # 删除工作区的文件
git rm --cached <file> # 停止跟踪文件但不删除
修改文件
# 文件改名
git mv <old> <new>
提交文件
提交暂存区到仓库区
git commit -m "commit message" # 提交暂存区到仓库区
--amend -m "message" # 如果代码没有任何新变化,则用来改写上一次 commit 的提交信息
-v # 提交时显示所有diff信息
撤销
# 撤销工作目录中所有未提交文件的修改内容
git reset . # 已经 add . 但未 commit
--hard HEAD^ # 有多少个^返回多少版本
--hard HEAD~<number> # 返回前第<number>个版本
--hard <commit_id> # 返回<commit_id>这个版本
HEAD <file> # 把暂存区的修改撤销掉,重新放回工作区
# 撤销未`git add`的文件
git checkout -- <file> # 用版本库里的版本替换工作区的版本
HEAD <file> # 撤销指定的未提交文件的修改内容
# 还原
git revert <commit_id> # 撤销指定的提交
查看信息
git blame <file> # 以列表方式查看指定文件的提交历史
git diff # 查看暂存区和工作区的差异
HEAD # 显示工作区与当前分支最新 commit 之间的差异
--cached <file> # 显示暂存区和上一个 commit 的差异
# 查看提交历史
git log # 查看所有提交历史
--after # 显示某个日期之后发生的提交
--before # 显示某个日期之前发生的提交
-p <file> # 查看指定文件的提交历史
-graph # 显示所有提交的依赖树
--pretty=oneline # 一行显示历史记录
--stat # 显示 commit 历史, 以及每次 commit 发生变更的文件
git reflog # 查看所有提交记录(含版本号)
git status # 查看有变更的文件
分支
# 分支
git branch # 显示所有本地分支
-a # 显示所有本地和远程分支
-d <branch_name> # 删除<branch_name>分支
-r # 显示所有远程分支
<branch_name> # 创建<branch_name>分支
# 切换
git checkout <branch_name> # 切换到<branch_name>分支
标签
# 标签
git tag # 显示所有本地标签
<tag_name> # 基于最新提交创建标签
-d <tag_name> # 删除<tag_name>标签
git checkout <tag_name> # 切换到<tag_name>标签
合并衍合
# 合并
git merge <branch_name> # "暴力"合并指定分支到当前分支,不管有无差别
# 衍合
git rebase <branch_name> # 一件件衍合指定分支到当前分支,有差别时提示
冲突的时候
<<<<<<<
和 =======
之间为自己的代码
=======
和 >>>>>>>
之间为别人的代码
如:
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
远程操作
# 添加远程库之前需要添加SSH密匙
ssh-keygen -t rsa -C "yourEmail@example.com"
# 远程库
git remote add remoteName git@github.com:name/remote.git # 添加远程库
-v # 显示所有远程仓库
show <remote> # 查看指定远程版本库信息
rm remoteName # 删除远程库
# 下载远程仓库的所有变动
git fetch <remote>
# 下载代码及快速合并
git pull <remote> <branch>
# 上传代码及快速合并
git push <remote> --all # 推送所有分支到远程仓库
<remote> --force # 强行推送当前分支到远程仓库,即使有冲突
-u <remote> <branch> # 使用 -u 选项指定一个默认主机,这样后面就可以不加任何参数使用git push
<remote> <branch> # 将本地master分支推送到<remote>的<branch>分支
<remote>:<branch/tag> # 删除远程分支或标签
--tags # 上传所有标签
.gitignore
# 我是注释,Git 会忽视这里所选择的文件或文件夹
# 忽略 *.o 和 *.a 文件
*.[oa]
# 忽略 *.b 和 *.B 文件,my.b 除外
*.[bB]
!my.b
# 忽略 dbg 文件和 dbg 目录
dbg
# 只忽略 dbg 目录,不忽略 dbg 文件
dbg/
# 只忽略 dbg 文件,不忽略 dbg 目录
dbg
!dbg/
# 只忽略当前目录下的 dbg 文件和目录,子目录的 dbg 不在忽略范围内
/dbg