基础
1、在gitee新建项目 【在gitee中新建一个项目后,默认有一个分支,即主分支】
2、克隆项目
# 创建一个新的本地存储库
$ git init [项目名称]
# 克隆存储库
$ git clone <git仓库url地址>
# 将存储库克隆到指定目录
$ git clone <git仓库url地址> <我的文件夹>
3、配置
设置将附加到您的提交(commit)和标签(tags)的名称
$ git config --global user.name “name”
设置将附加到您的提交(commit)和标签(tags)的电子邮件地址
$ git config --global user.email “email”
查看仓库配置【必须要进入到具体的目录下】
$ git config --local -l
查看用户配置
$ git config --global -l
查看系统配置
$ git config --system -l
查看所有的配置信息,【系统、用户、仓库】
$ git config -l
4、提交
# 暂存文件,准备提交
$ git add [file]
# 暂存所有更改的文件,准备提交
$ git add .
# 将所有暂存文件提交到版本化历史记录
$ git commit -m "commit message"
# 推送
$ git push
分支
主分支
在实际工作中,主分支要求是稳定、安全的,一般不允许在主分支上直接进行开发,而是拉取一个新的分支,开发、测试完成后,再将分支合并到主分支上
# 列出所有本地分支
$ git branch
# 列出所有分支,本地和远程
$ git branch -av
# 删除远程分支
$ git push origin :branchName
# 删除远程分支b1
git push origin --delete b1
# 删除本地test分支,强制删除用-D
git branch -d test
新建功能分支 并提交新开发的功能
# 切换到 master,并更新工作目录
$ git checkout master
# 创建并切换到一个名为 feature/f1 的新功能分支
$ git checkout -b feature/f1
合并到主分支
当功能分支开发完成后,需要合并到主分支,合并有两种选择,快速合并和非快速合并,二者的区别在于是否创建提交节点,命令如下:
快速合并
如果当前的分支和另一个分支没有内容上的差异,就是说当前分支的每一个提交(commit)都已经存在另一个分支里了,git 就会执行一个 ‘快速向前’ (fast forward)操作;git 不创建任何新的提交(commit),只是将当前分支指向合并进来的分支
$ git merge feature/f1 # 快速合并
非快速合并
非快进式合并会生成新的提交,并 ‘分叉’
$ git merge --no-ff -m 'merge feature/f2' feature/f2
区别
快速合并会直接将 master 指向了 feature/a,如下所示:
m1---m2---f1---f2--- master/feature
非快速合并会在 master 创建合并提交节点,如下所示:
f1---f2--- feature
/
m1---m2---------- master
bug分支
当发现代码有bug时,需要及时修复,此时可以基于主分支新建bug分支,如下:
$ git checkout -b bugfix/b1
当改完了所有 bug 验证一下没问题后,此时将bug分支合并到主分支,如下:
// 切换到 master
$ git checkout master
$ git merge --no-ff bugfix/b1
当主分支更新最新代码后,下边的公共分支需要及时同步最新的变更,此时可以使用变基进行同步(建议使用变基)如下:
// 切到 feature/f1 功能分支
$ git checkout feature/f1
$ git rebase master
变基原理
首先找到基底分支和当前分支的最近共同祖先,然后比对当前分支相对于共同祖先的历次提交,提取相应的修改保存为临时文件。接着将当前分支指向基底分支。最后将之前保存为临时文件的修改依序应用。
作用
变基的作用就是整合两个分支。和merge合并比较起来,rebase变基可以让提交历史更加整洁。
标签tag
当项目开发到一定阶段时,或者要发布新版本时,都要给程序打个标签
// 假设当前版本1.0.1
git tag v1.0.2
git push origin --tags # 一次性推送所有分支
git push origin v1.2 # 推送单个tag到orgin源上
git tag # 列出现有标签
git checkout tagname # 切换到标签
git tag -d v1.0.1 # 删除标签
git push origin :refs/tags/v1.0.1 # 删除远程标签
git pull --all # 获取远程所有内容包括tag
git --git-dir='<绝对地址>/.git' describe --tags HEAD # 查看本地版本信息
日志
git log # 查看最近的提交日志
git reflog # 查看所有分支的所有操作记录
git log --since=1.day # 一天内的提交;可以给出各种时间格式,比如说具体的某一天(“2008-01-15”),或者是多久以前(“2 years 1 day 3 minutes ago”)
最后
本文介绍了在工作中常用的一些的Git命令,加深记忆。如果对本文有任何疑问,欢迎留言指正