预期学习目标
- github的学习
- gitlab的学习
- git的原理
- git的重点操作
- 合并冲突
- 版本管理
- composer的学习
- 基本composer的编写
- 项目中composer的使用
版本控制
文件配置
- 换行符配置
有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig 和 ~/.gitconfig),不过最终 Git 实际采用的是最后一个。
git config --list
# core.autocrlf=true
git会自动转换换行符,导致提交时有多余的文件被更改.进行一下设置修复
git config --global core.autocrlf false
- 中文设置
中文乱码: git status
# git config --global core.quotepath false # 对 0×80 以上的字符进不进行进行转义编码
- 中文乱码: git log
# 注:全局配置还是当前项目配置看具体情况
# git config --global gui.encoding utf-8 # 根据本地编码选择图形界面的编码
# git config --global i18n.commit.encoding utf-8 # 根据本地编码选择提交信息的编码
# git config --global i18n.logoutputencoding utf-8 # 根据本地编码环境选择日志的编码
# i18n 是 internationalization 的简称, 数字基于首尾英文单字长度
*.log #忽略所有日志文件
!except.log #不忽略该文件
vendor/ #忽略文件夹
/config #忽略文件
工具配置
- IDE 配置
当更改 IDE 的 Terminal 为 Git Bash 时有可能会出现 git log 仍然乱码,这种情况下需要更改 IDE 设置
# 以 PhpStorm 为例
# 编辑: phpstorm64.exe.vmoptions 添加
-Dfile.encoding=UTF-8
# 编辑: phpstorm.exe.vmoptions 添加
-Dfile.encoding=UTF-8
编辑 Git 文件
# 编辑: bash.bashrc 添加
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
- Cmder 更改 λ 为 $
打开文件,搜索 λ 将 λ 改为 $ 即可
# git
Cmder\vendor\git-for-windows\etc\profile.d\git-prompt.sh
# Cmder
Cmder\vendor\clink.lua
- Bash配置
右键点击进入 Bash 的设置界面, Text选项 改为 Local:zh_CN, Character:UTF-8
# 设置 HTTP 代理
git config --global http.proxy http://127.0.0.1:8118
git config --global https.proxy http://127.0.0.1:8118
# 设置 SOCKS5 代理
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080
# 取消代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy
分支相关
- 头指针游离
# 切换到某一历史版本
git checkout bda7532839a90de23e7a71017ed2c56816d6f8b2
# 比较两个分支直接的不同
git diff master origin/dev
# 查看分支的提交记录
git log branchName
# 查看本地分支的详细信息
git branch -vv
bug 506ac405 [upstream/master] Merge branch 'bug_send_appmsg' into 'master'
dev 506ac405 [upstream/dev] Merge branch 'bug_send_appmsg' into 'master'
* master a5ee1b00 [upstream/master: behind 2] Merge branch 'req_net_mail_en' into 'master'
# 设置关联的远程分支
git branch --set-upstream-to=remote_repository/target_remote_branch current_branch
# 查看所有分支
git branch -a
# 查看远程分支
git branch -r
# 查看远程仓库信息
git remote show origin
# 删除本地跟踪(已被删除的远程分支,本地还追踪着)
git remote prune origin
# 批量删除本地分支
git branch | grep -v -E 'master|dev' | xargs git branch -D
# 删除远程分支
git push origin :branch_name
头指针游离 : HEAD detached at bda7532
需要注意的是游离状态下的提交是无法可见保存的,一旦切到别的分支,游离状态以后的提交就不可追溯了.解决办法是新建一个分支保存游离状态后的提交
版本历史
- 重写最近提交历史(未推送)
# 重写最近提交历史(未推送)
git commit --amend
# 强制提交
git push origin branch -f
# 回退更改
git checkout .
# 查看某个提交的具体内容
git show commit_id
- 合并提交分支
# 合并提交分支
git rebase upstream/master
# 合并其他分支的提交到当前分支
git cherry-pick acddaa967
- 冲突解决
# 配置冲突解决工具
git config --global merge.tool vimdiff
#暂存代码
git stash save [message]
# 查看暂存列表
git stash list
#恢复暂存
git stash apply
#恢复指定的暂存
git stash apply stash@{1}
#移除暂存代码
git stash drop stash@{1}
#恢复并移除第一个暂存
git stash pop
#恢复并移除指定暂存
git stash pop stash@{1}
在 Windows 下 stash 速度慢
使用内建指令需要版本 > 1.9
# 更新版本( 2.14.2 - 2.16.1)
git update
# 更新版本( > 2.16.1)
git update-git-for-windows
# 使用内建指令(rebase)
git config --global rebase.useBuiltin true
# 使用内建指令(stash)
git config --global stash.useBuiltin true
撤销更改
git revert 是用一次新的 commit 来回滚之前的 commit 而 git reset 是直接删除指定的 commit
# 撤销已经更改但是还没保存的文件
git checkout .
# 撤销更改的文件
git reset --hard
# 回滚到指定提交
git reset commit_id
# 回滚到前两个提交
git reset HEAD^^
# 取消指定提交的内容
git revert commit_id
# 取消第二个的提交
git reset HEAD^^
缓存管理
# 清除缓存
git rm -r --cached .
# 追踪本地文件
git add .
# 保存更改
git commit -am 'updateCache'
# 查看将要删除的未追踪的文件
git clean -nf
# 删除未追踪的文件
git clean -f
# 删除未追踪的文件和目录
git clean -fd
# 删除未追踪的文件和目录和编译文件
git clean -fdx
代码托管
Git Hub
- 项目相关
创建/查看目标用户的公钥,并添加 Git 公钥,使之能拉取/提交代码
Git Lab
注意
: 强制提交最好用在个人仓库,协作开发还是合并为好
# gitlab允许强制提交
unprotect branch
# 强制提交
git push -f
# 指定仓库强制提交
git push -u origin master -f
软件包管理
基本配置
# 全局配置
composer config -g repo.packagist composer https://packagist.laravel-china.org
# 项目配置
composer config repo.packagist composer https://packagist.laravel-china.org
# 取消镜像
composer config -g --unset repos.packagist
# 查看配置
composer config -l
只在当前终端有效
永久代理设置
: 将代理命令写入配置文件 ~/.profile 或 ~/.bashrc 或 ~/.zshrc 中:
当前终端有效
: 在当前终端输入命令
# Windows HTTP代理
set http_proxy = http://127.0.0.1:1080
set https_proxy = http://127.0.0.1:1080
# Windows SOCKS5 代理
set http_proxy = socks5://127.0.0.1:1080
set https_proxy = socks5://127.0.0.1:1080
# Windows 取消终端代理
set http_proxy =
set https_proxy =
# Linux HTTP代理
export http_proxy = http://127.0.0.1:1080
export https_proxy = http://127.0.0.1:1080
# Linux SOCKS5 代理
export http_proxy = socks5://127.0.0.1:1080
export https_proxy = socks5://127.0.0.1:1080
# Linux 所有 SOCKS5 代理
export ALL_PROXY = socks5://127.0.0.1:1080
# Linux 取消终端代理
unset http_proxy
unset https_proxy
unset ALL_RPOXY
基本命令
Composer 使用技巧与要点
# 终端查看安装列表
composer show
# 添加拓展
composer require repository/package
# 删除拓展
composer remove repository/package
# 全局添加扩展
composer global require repository/package
# 全局删除拓展
composer global remove repository/package
问题解决
requires ext-dom * -> the requested PHP extension dom is missing from your system.
# 缺少 ext-dom,该拓展是用来读 取xml的,安装 php-xml 即可
yum install php-xml
相关文章
PHP 规范开发(一):断点调试
PHP 规范开发(二):单元测试
PHP 规范开发(三):版本控制与协作开发
PHP 规范开发(四):重构、代码规范及设计模式