名词解释:
SSH Key
生成SSH Key:ssh-keygen –t rsa –C "你的邮箱@xx.com"
生成Key时弹出选项,回车选择默认即可。
Key保存位置:/root/.ssh
登陆GitHub,创建new SSH key,其内容为/root/.ssh/id_rsa.pub中文本
HEAD
它是永远自动指向当前commit的引用(可以理解为,指向commit对象的可变指针),当前commit在哪里,HEAD就在哪里。所以,你永远可以用HEAD来操作当前commit。
即commitID,git reflog可以获取:
20a6587 (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: commit: fix issues
91b5f68 HEAD@{1}: commit: data issues
9c9a17c HEAD@{2}: commit: batch supplier payout
工作区、暂存区
工作区:就是你在电脑里能看到的目录。
暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
1. 初始化命令
//设置git账户
git config --global user.name 'userName'
git config --global user.email 'email'
git init // 在工作路径上创建主分支,当前目录变为仓库
git clone 仓库地址 // 克隆远程仓库
git clone -b 分支名 仓库地址 // 克隆远程仓库的分支代码到本地
2. 基本操作
git status // 查看状态
git branch // 查看所有分支
git add 文件名 // 将某个文件存入暂存区
git add . // 将所有文件提交到暂存区
git diff // 查看变更 工作区与暂存区的差异比对
git diff 文件名 // 文件有修改后,查看changes
git diff HEAD // 工作区与仓库中最后一次提交版本的差别
git diff 版本哈希值1 版本哈希值2 // 查看这2个版本哈希之间的区别
git log --oneline // 拉出所有提交信息,Enter翻页,q退出
git log 文件名 // 查看该文件的提交记录
git log -n // 查看近期提交的n条信息内容
git reflog // 查看所有分支的提交信息,Enter切换下一页
3. 分支操作
git pull origin 分支名 // 将远程主机的最新内容拉下来后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决
git fetch origin 分支名 // 将远程主机的最新代码拉到本地,用户在检查后决定是否合并到工作本机分支中
git branch 分支名 // 新建分支
git checkout 分支名 // 检出分支
git checkout -b 分支名 // 创建并切换分支
git branch -d 分支名 // 删除分支
git branch -D 分支名 // 强制删除 若没有其他分支合并就删除 d会提示 D不会
git commit -m 备注 // 提交到本地仓库
git push origin 分支名 // 提交到远程仓库
git merge 分支名 // 把该分支的内容合并到现有本地分支上
git rebase origin 分支名 // 从远程仓库分支,拉去最新的提交内容,并合并到当前本地分支
4. 标签和回撤
git tag 标签名 // 为当前版本打标签
git tag 标签名 该版本ID // 为历史版本打标签
git tag // 查看所有标签
git show 标签名 // 查看某一标签
git tag –d 标签名 // 删除某一标签
git reset --hard commitID // 回退到历史版本,根据commitID
git reset --hard HEAD^ // 回退到上个版本,根据HEAD
git revert commitID // 还原到上个版本,和reset类似,但会产生一次提交记录