常用命令
提交代码
git pull 拉取代码后直接合并,即:git pull = git fetch + git merge
git push 推送代码
完整写法:
git push orgin 本地分支名:远程分支名
其中本地分支名不写即删除远程分支
git add . 添加到本地staged
git commit -m “提交的message” 提交(commit)到本地仓库;--amend使用一个新的提交来替代当前提交的tips(也就是可以修改commit信息啦)
git fetch -p 将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。-p 修剪 删除远程已删除的分支
检查仓库
git --version 查看git版本
git status 本地仓库状态
git config --list 查看git配置信息
git config --global user.name lily 配置git全局配置信息 用户名
git config --global user.email huang@qq.com 配置git全局配置信息 邮箱
git config --global credential.helper store --file ~/.my-credentials 配置git凭证助手
在使用https连接的时候不用输密码
查看某个提交的具体内容
git log 查看提交历史记录;--oneline显示commitid和信息在一行;--graph以图形显示
git log 文件名 查看已删除的文件的提交记录
git show commit_id 查看某个提交记录的详细
git show --raw commit_id 显示原始的
分支操作
git branch -D dev 强制删除dev分支
git push origin :dev (先删除dev分支)删除远程dev
git branch 显示分支
- -r 显示远程分支
- -v 显示详情
git branch 分支名 创建一个本地分支
git branch -m 旧名字 新名字 重命名分支
git checkout 分支 切换到分支
git checkout -b 分支 创建并切换分支
git checkout -b dev(本地分支名) origin/dev(远程分支名) 检出远程分支,并与建立关联
git checkout -- <file>... 丢弃工作区的改变(已追踪的文件)
将代码从一个分支转移到另一个分支
git merge 所有的
git cherry-pick <commitHash> <commitHash>某几个提交 ,会在当前分支产生一个新的提交;commitHash 可以用git log看
- -x在提交信息的末尾追加一行(cherry picked from commit ...),方便以后查到这个提交是如何产生的。
git cherry-pick --continue 如果cherry-pick发生冲突,并已解决好,使用此命令来继续 cherry-pick
git cherry-pick --abort 取消本次cherry-pick
git rebase 变基,当前分支与目标分支变动的提交取消掉,保存在 .git/rebase 目录中,将目标分支的代码更新到当前分支,然后把当前分支保存下来的应用到最新分支上;此过程会产生冲突,与 merge 不同的是,他是一个一个的处理,处理完 使用 git rebase --continue,如果不想 rebase,可以使用 git rebase --abort 取消本次rebase
git 重置
概念解释:
Head 头,可以理解为最近的一次commit记录
index 索引,可以理解为git add 之后的区域
working tree 工作树,就是修改没有git add的区域文件
git reset --hard HEAD^ 硬重置;一共有3个区,工作区(working tree),暂存区(index),历史区(Head);当修改一个文件,这个文件变化在工作区;使用git add 这个文件将进去到暂存区,git commit 会提交到历史区;这3个区会重置
- --hard 相当于重置到目标,工作区暂存区清空
git reset --mixed HEAD^ 默认 --mixed 相当于重置到 工作区保留,暂存区清空
git reset --soft HEAD^ --soft 工作区 暂存区保留
可用来合并commit节点,让演进图更清晰
git checkout -- <file>... 重置一个文件;丢弃工作区的改变(已追踪的文件)
git checkout commitid <file> 重置文件为某个提交的状态
- 本地commit重置到index区
使用 git reset --soft HEAD - index区重置到工作区
使用 git reset HEAD - 丢弃工作区改变
使用 git checkout file
git 暂存
暂存可以保存不需要提交的文件,便于切换分支。回头还可以再应用回来。
git stash save [message] 暂存已追踪的文件,保存为message名称
git stash list 列出所有暂存
git stash apply stash@{0} 应用第一个暂存,不会删除暂存
git stash pop 应用第一个暂存,删除第一个暂存
tips:对于新增的文件需要暂存,要先 git add 才行
比对
git diff 比较工作区和暂存区之间的文件差异
git diff HEAD 比较工作区和版本库之间的文件差异
可附加具体文件名
常用操作
获取仓库
创建git仓库并关联远程
-
创建仓库目录
mkdir microservice -
进入目录
cd microservice -
初始化git
git init -
关联远程仓库
git remote add origin git@gitee.com:street1corner/microservice.git -
推送远程分支 指定一个默认主机
# 建立追踪关系 git push -u origin master # 推送本地分支到远程分支(远程没有) git push --set-upstream origin feature-test-u 建立或者更新当前分支和远程分支的追踪关系
克隆已存在的仓库
git clone https://github.com/libgit2/libgit2
使用idea、eclipse(sts)记住密码
git通常有2种连接方式ssh和https
ssh 前提当然你得有权限将自己主机的id_rsa.pub 加入到git账户的SSH Keys中
https 需要使用credential 来记住
安装git客户端
运行git config --global credential.helper store --file ~/.my-credentials
下一次pull或者push将把密码保存在.my-credentials文件中
个人觉得还是ssh最为方便
重置操作
对于已经跟踪的文件已经修改了可使用git checkout 文件名来重置
对于已经跟踪的文件已经修改并暂存了可使用git reset Head 文件名来移出暂存区,接着使用git checkout 文件名来重置
git多人协作
分支:
master 和 dev 日常保持
feature-*
release-1.0
fixbug-1.0
- master 主分支,用来发布
- dev 开发分支,用来开发(通常多个人同时在此分支)
- feature-* 功能性分支,从dev检出,用来开发某个功能,开发完合到dev,用完即删
- release-1.0 预发布分支,从dev检出,做测试,测试完合到master,master打个tag,再合到dev,用完即删
- fixbug-1.0 修补bug分支,从master检出,改bug,改完合到master、dev,master打个tag,用完即删
相关命令
# 创建一个功能分支
git checkout -b feature-x dev
# 合并到dev分支
git checkout dev
git merge feature-x
# 删除分支
git branch -d feature-x
# 打标签
git tag -a 1.2
git commit 规范
书写格式,例如:
feat: 新增加密日志
- 报文加解密
其中 feat 可替换成下面些
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:中文含义:家务活,日常事务,例行工作;构建过程或辅助工具的变动
参考文献: