1 Git 工作流程
workspace:工作区
statging area:暂存区
local repository:版本库(或常称为本地仓库)
remote repository:远程仓库
2 Git 配置和首次提交
1)获取密钥
生成 RSA 密钥
ssh-keygen -t rsa
获取 RSA 公钥内容,并配置到 SSH 公钥中
cat ~/.ssh/id_rsa.pub
2)Git 全局设置
git config --global user.name "你的姓名"
git config --global user.email "你的邮箱"
git config --global --list
3)首次提交(没有仓库)
mkdir code
cd code
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin git@gitee.com:XXX.git
git push -u origin "master"
4)首次提交(已有仓库)
cd existing_git_repo
git remote add origin git@gitee.com:XXX.git
git push -u origin "master"
3 Git 常用命令
初始化git仓库
git init
克隆远端代码
git clone git@gitee.com:XXX.git
拉取代码
git pull origin master
比较工作区与暂存区的差异
git diff # 查看工作区和暂存区之间所有的文件差异
git diff -- 文件名 # 查看具体某个文件 在工作区和暂存区之间的差异
git diff -- 文件名1 文件名2 文件名3 # 查看多个文件在工作区和暂存区之间的差异
比较工作区和版本库的差异
git diff HEAD # 查看工作区与最新版本库之间的所有的文件差异
git diff 具体某个版本 # 查看工作区与具体某个提交版本之间的所有的文件差异
git diff HEAD -- 文件名 # 查看工作区与最新版本库之间的 指定文件名的文件差异
git diff HEAD -- 文件名1 文件名2 文件名3 # 查看工作区与最新版本库之间的 指定文件名的多个文件差异
git diff 具体某个版本 -- 文件名 # 查看工作区与具体某个版本之间的 指定文件名的文件差异
git diff 具体某个版本 -- 文件名1 文件名2 文件名3 # 查看工作区与最具体某个版本之间的 指定文件名的多个文件差异
比较暂存区和版本库的差异
git diff --cached # 查看暂存区和 上一次提交 的最新版本(HEAD)之间的所有文件差异
git diff --cached 版本号 # 查看暂存区和 指定版本 之间的所有文件差异
git diff --cached -- 文件名1 文件名2 文件名3 # 查看暂存区和 HEAD 之间的指定文件差异
git diff --cached 版本号 -- 文件名1 文件名2 文件名3 # 查看暂存区和 指定版本 之间的指定文件差异
比较不同版本库之间的差异
git diff 版本号1 版本号2 # 查看两个版本之间的差异
git diff 版本号1 版本号2 -- 文件名1 文件名2 # 查看两个版本之间的指定文件之间的差异
git diff 版本号1 版本号2 --stat # 查看两个版本之间的改动的文件列表
git diff 版本号1 版本号2 src # 查看两个版本之间的文件夹 src 的差异
查看仓库状态
A: 本地新增的文件(服务器上没有)
C: 文件的一个新拷贝
D: 本地删除的文件(服务器上还在)
M: 文件的内容或者mode被修改了
R: 文件名被修改了
T: 文件的类型被修改了
U: 文件没有被合并(需要完成合并才能进行提交)
X: 未知状态(很可能是遇到了git的bug,可以向git提交bug report)
git status -s
添加到暂存区
git add [file1] [file2]... # 添加一个或多个文件到暂存区
git add [dir] # 添加目录到暂存区
git add . # 添加当前目录下的所有文件到暂存区
提交到版本库
git commit -m 'message' # 将所有改动自动添加到提交中
git commit --amend # 将新更改追加到上一次提交中(此时会打开编辑器让你输入新提交消息)
git commit --amend --no-edit # 将新更改追加到上一次提交中(不提交消息)
推送到远程仓库
git push origin master
git push origin HEAD:refs/for/dev_trunk
生成补丁
git diff > test.patch
打补丁
patch -p0 < test.patch