- 前言
- 本地配置
- Git基础概念
- 基本操作
- 仓库获取
- 拉取
- 提交
- 分支管理
- 更新子模块
- 查看修改
- 提交了错误的commit
- 多人协同开发常见问题
- 在线学习网站
- 参考鸣谢
- 深入讲解
说来惭愧,关于版本控制工具,此前虽然用过SVN和Git,但都是局限于本地管理,所以并没有远程仓的概念…
远程环境这里使用 GayHub,其他提供远程Git存储库的服务平台其实也大同小异。
本地配置- Git 安装
- 配置个人信息
#
: 表示需要替换的内容 git config --global user.name git config --global user.email # ps: 使用config指令查看所有配置 git config --list - 配置SSH Key
# 检查是否存在SSH Key cd ~/.ssh && ls # 如果出现了 id_rsa.pub 那么直接跳过这一步 #配置SSH Key ssh-keygen -t rsa -C
- 添加SSH Key 到 GayHub
# 打印 id_rsa.pub cd ~/.ssh && cat id_rsa.pub # GayHUb 个人头像 --> Setting --> SSH and GPG keys --> New SSH key
- 测试
ssh -T git@github.com
- 工作区间:即我们的工程项目文件。
- 缓存区:只能通过 git GUI 或 git shell 窗口显示,提交代码、解决冲突的中转站。
- 本地仓库:只能在git shell 窗口显示,连接本地代码跟远程代码的枢纽,不能联网时本地代码可先提交至该处。
- 远程仓库:保存我们代码的服务器。
- 从远程拉取
# GayHub 上进入项目首页,点击Code,选择SSH方式(默认),复制项目地址 git clone
- 在本地创建仓库同步到远程仓
# 本地仓库创建 git init # 添加文件到版本管理器 git add
# 重版本控制中移除文件 git rm # 文件重命名 git mv # 查看当前状态 git status # 创建远程仓库后复制项目地址URL # 关联远程仓库 git remote add # 推送到远程仓库 git push -u origin master # ps: 远程仓库空时需要加 -u
# 下载远程代码并合并 git pull提交
# 提交到暂存区 git commit # 推送到远程仓库并合并 git push分支管理
- 克隆指定分支
#
是分支名 是仓库地址 git clone -b - 切换分支
git check
- 更新主分支流到某分支
# 一般我选择将两个分支都 clone 下来,通过 Beyond Compare 比较后手动同步代码,再 commint, push...
# 有时候项目依赖到其他子项目,需要我们下载子项目 git submodule init git submodule update查看修改
# 可以查看每个commit的改动细节 git log -p # 查看简要统计 git log --stat # 查看指定commit的指定文件改动细节 git show提交了错误的commit# 显示暂存区和上一条提交之间的不同,即如果执行commit的结果 git diff --staged # 显示工作区和暂存区之间的不同,即如果所有文件都add的结果 git diff # 显示工作目录和上一条提交之间的不同,即苏鸥文件都add 再commit的结果 git diff HEAD
- 修改commit
# 将存在问题的文件改好 # 添加到暂存区 git add
# 提交修改 git commit --amend - 回滚
# git reset [--soft | --mixed | --hard] [HEAD] # 回退所有内容到上一个版本 git reset HEAD^ # 回退 hello.php 文件的版本到上一个版本 git reset HEAD^ hello.php # 回退到指定版本 git reset 052e # 补充 HEAD 说明: # ^ # - HEAD 表示当前版本 # - HEAD^ 上一个版本 # - HEAD^^ 上上个版本 # - ... # ~ # - HEAD~0 表示当前版本 # - HEAD~1 上一个版本 # - ...
- 再次提交提交 合并commint
# 合并最近两次提交 git rebase -i HEAD~2
注意:rebase 在 git 中是一个非常有魅力的命令,使用得当会极大提高自己的工作效率;相反,如果乱用,会给团队中其他人带来麻烦。
多人协同开发常见问题- 提交代码推荐前摇
# 人物:同事A,同事B # 初始远程仓:版本T # 由于所有项目组成员都可以修改远程仓库的版本,所有很容易出现一下情况: # 问题流程: 同事A、B都clone了远程仓版本T,修改后的版本我们记录为TA、TB。假设同事A 先提交,这时远程仓的变为TA了,同事B再提交代码时可能出现两个情况: # 1. Git自动合并 # 2.你们修改了同一个代码段,提交冲突 # 个人习惯:提交代码前先从远程仓同步代码最后再推送至远程仓 git pull --rebase在线学习网站
Learn Git Branching
参考鸣谢git图解:代码区域总结
图解git原理与日常实用指南
深入讲解这才是真正的Git——Git内部原理揭秘!
这才是真正的 Git——分支合并
这才是真正的Git——Git实用技巧
详解 Git 大文件存储(Git LFS)
图解4种git合并分支方法



