全局配置

设置全局用户名和邮箱

因为 git 是分布式版本控制系统,机器需要自报家门

# --global 参数:表示机器上所有的仓库都会使用这个配置
$ git config --global user.name "Your Name"
$ git config --global user.email "emai@example.com"
设置 git 命令行颜色
$ git config --global color.ui true
配置别名
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch
忽略特殊文件

本地仓库

创建版本库
# 创建本地目录
$ mkdir git_notes
$ cd git_notes

# 将这个目录变为 git 仓库
$ git init

# 该目录下会自动创建 .git 隐藏目录,通过 -al 参数查看
$ ls -al 
提交文件到本地仓库
# 随便新建个文件
$ cd git_notes
$ echo "git notes" > readme.md

# - 添加单个文件到本地仓库
$ git add readme.md
# - 添加目录下所有文件到本地仓库
$ git add . 

# add 是提交到暂存区
# commit 是将暂存区的所有文件提交到当前分支
$ git commit -m "first commit readme.md"
查看状态
# 比如当前目录下文件是否添加仓库,是否提交等等
$ git status
查看改动内容
# 查看文件最新修改的内容与之前版本的不同
$ git diff readme.md
查看日志
# 查看所有提交记录,
# 显示版本号、分支、提交的备注信息、提交人、日期
$ git log

# --pretty=oneline 
# 仅显示版本号、分支、提交的备注信息
$ git log --pretty=oneline

# log 页面,按 q 返回到命令行
回退版本
# 回退上一版本
$ git reset --hard HEAD^

# 回退上上个版本
$ git reset --hard HEAD^^

# 回退到前 100 个版本
$ git reset --hard HEAD~100

# 回退到指定版本,commit_version 通过 git log 查看
# 版本号不写全也可以,多写几位保证唯一
$ git reset --hard {commit_version}
查看历史命令
# 通常用来查看未来版本号
$ git reflog
撤销修改
# 将文件恢复到最近一次 add 或 commit 的状态
# -- 代表当前分支
$ git checkout -- readme.md
删除文件
$ git rm readme.md
$ git commit -m "remove readme.md"

远程仓库

通过 ssh 连接远程仓库(使用 https 可以忽略)
# ssh 速度快,https 速度慢且需要输入口令
# 1. 创建 SSH Key
$ cd ~/.ssh
$ ssh-keygen -t rsa -C "lan_yangbi@163.com"
# 一路回车,得到公钥和私钥
$ ll
id_rsa
id_rsa.pub

# 2. 将公钥信息配置到 github
# 进入 github 页面 -> 点击头像 -> settings -> SSH and GPG keys -> SSH keys -> New SSH key
# Title:随意填写
# Key:从 id_rsa.pub 内复制粘贴过来
# 点击 Add SSH key
# 配置好之后,就可以向 github 提交
克隆仓库
$ git clone git@github.com:lanyangbi/lanyangbi.github.io.git
关联远程仓库
# orgin 代表的是远程仓库,这是默认叫法
$ git remote add origin git@github.com:lanyangbi/lanyangbi.github.io.git

# 查看远程仓库
$ git remote
origin

# 查看详细信息
$ git remote -v
origin	https://github.com/lanyangbi/lanyangbi.blog.git (fetch)
origin	https://github.com/lanyangbi/lanyangbi.blog.git (push)
提交内容到远程仓库
# 首次提交时加上 -u 代表关联分支,后续就可以不用了
$ git push -u orgin master
$ git push orgin master
查看当前分支
# * 代表当前分支
$ git branch
* dev
  master
创建并切换分支
# 创建分支后切换
$ git branch dev
$ git checkout dev

# 也可以使用一条命令 -b 表示创建并切换到新分支
$ git checkout -b dev
合并指定分支到当前分支
# 当在 dev 有文件修改后
# 需要先切换到 master 分支然后合并
$ git checkout master
$ git merge dev
删除分支
# 当分支合并到 master 后,分支就可以删除啦
$ git branch -d dev
冲突解决

文件冲突

多人协作:分支冲突

保存工作区
$ git stash
Saved working directory and index state WIP on dev: f52c633 add merge

# 查看保存的工作区
$ git stash list

# 恢复工作区
$ git stash apply

# 恢复后,需要手动删除该工作区
$ git stash drop

# 恢复的同时,删除工作区
$ git stash pop

# 可以保存多个 stash,恢复指定 stash
$ git stash apply stash@{0}
复制特定提交到当前分支
# 可以将修改 bug 后提交的修改复制到当前开发分支,避免重复劳动
$ git cherry-pick {commit_version}
强制删除未合并过的分支
$ git branch -D dev
创建标签
# 创建标签
$ git tag v1.0

# 对指定 commit 打标签
$ git tag v1.1 f52c633

# 创建带有说明的标签
$ git tag -a v1.2 -m "version 1.2 released" 1094adb
查看标签
# 查看标签
$ git tag

# 查看标签信息
$ git show v1.0
推送标签到远程仓库
#推送指定标签
$ git push orgin v1.0

# 推送全部标签
$ git push orgin --tags
删除标签
# 删除本地标签
$ git tag -d v1.0

# 删除远程仓库标签
$ git push orgin :refs/tags/v1.0

报错

Error:LibreSSL SSL_connect:

参考链接

廖雪峰 Git 教程
Git 实战通关

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐