PHP 规范开发(三):版本控制与协作开发

预期学习目标

  • 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 配置

当更改 IDETerminalGit 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 规范开发(四):重构、代码规范及设计模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值