Git 我们一般用于保存代码、协同开发
安装
Linux 环境
yum install git
Windows 环境
配置
git remote 的相关配置详见 `初次操作`
各个环境下 大致流程 如下
Linux
git remote 设置的远程地址 请用 git 协议格式 如 git@github.com:HaleyLeoZhang/blog_v2.git
生成SSH公钥与私钥 -> 上传公钥到git代码托管服务器 -> 用私钥进行代码管理
如果你要上传代码到 Github 或者是 码云
得去对应平台的个人设置中心,设置SSH公钥
Windows
git remote 设置的远程地址 请用 https 协议格式 如 https://github.com/HaleyLeoZhang/blog_v2
Windows下保存 git 帐号的用户名与密码
初次操作
git init # 在对应项目的根目录,初始化项目
git remote add 自定义名称 远程仓库名 # 设置远程代码仓库信息
git branch --set-upstream master origin/master # 本地的这个master分支 去关联 远程master分支
示例
git init
git remote add origin https://github.com/HaleyLeoZhang/blog_v2 # windows环境,就是这样用 https 的协议
git branch --set-upstream master origin/master
提交流程
git add -A # 将git status中对应的所有的具体改动,添加到仓库门口,等待说明这些改动是干嘛的
git status # 查看该当前书写好的代码与上次存于git仓库中的文件,有哪些文件有过改动
git commit -m '这是你对此次改动的说明' # 用于表明最新的这次添加操作是干嘛的
git push <远程主机名> <本地分支名>
示例
git add -A
git status
git commit -m 'This is a commit'
git push origin master
合并分支
合并流程
注意:合并前,请一定先git add与git commit一下你的文件,以防pull下来的合并导致的代码丢失
git pull <远程主机名> <本地分支名> # 从远程获取最新版本并merge到本地
示例
git pull origin master
冲突解决
合并后,命令行显示的信息类似提示。表明对应文件产生了冲突
Auto-merging router.php
CONFLICT (content): Merge conflict in router.php
Automatic merge failed; fix conflicts and then commit the result.
router.php中的冲突代码,如下
冲突标记<<<<<<< (7个<)与=======之间的内容是我的修改
=======与>>>>>>>之间的内容是别人的修改
<<<<<<< HEAD
Route::get('wechat/login','v1\CommonController@getWechatLogin'); // 微信登录
=======
Route::get('chat/qq','v1\CommonController@getChatQq'); // 加入qq群
>>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc
然后双方协商,冲突的位置,哪些代码的去留就行了。
双方代码都想保留 -> router.php修改后
Route::get('wechat/login','v1\CommonController@getWechatLogin'); // 微信登录
Route::get('chat/qq','v1\CommonController@getChatQq'); // 加入qq群
修改完后,记得重新提交一下代码哟
版本回退
回退到前 n 个版本
git reset --hard HEAD~数字
示例
git reset --hard HEAD~1 # 回退到上一个版本
回退到某个版本
git reset --hard 版本号
示例
git reset --hard b28a2baef9f9ad73793900a5561ef15b1e147b1d
代码日志
git log --stat
概览代码仓库的历史
提交时间
提交标注
版本号 --> 可用于版本回退
改动行数
下方是 云天河Blog 的部分日志详情
commit b28a2baef9f9ad73793900a5561ef15b1e147b1d
Author: hlz <tiemaocsdn@qq.com>
Date: Sat Sep 9 10:51:35 2017 +0800
:
Updated
:
application/api/Editor.php | 6 +++---
application/api/Media.php | 24 +++++++
application/view/Admin/user_info.html | 3 ++-
3 files changed, 17 insertions(+), 16 deletions(-)
:
commit 96cf3bc3a2268441fbeb09424fffea079b77502c
Author: hlz <tiemaocsdn@qq.com>
Date: Mon Sep 4 21:22:04 2017 +0800
:
updated
:
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
查看具体某次的代码详情
git log -p 版本号或者最新的第几次 # 用法类似 版本回退
示例
git log -p b28a2baef9f9ad73793900a5561ef15b1e147b1d # 查看这次版本号 对应的具体修改
对比版本间代码差异
git diff 版本号1 版本号2
克隆代码
将代码托管处的项目,拷贝到当前目录下
git clone 项目地址
示例
git clone https://github.com/HaleyLeoZhang/blog_v2
处理细节
.gitattributes 指定非文本文件的对比合并方式
示例:把下面的以.js .css .scss .html文件结尾的文件当成是php文件
*.js linguist-language=php
*.css linguist-language=php
*.scss linguist-language=php
*.html linguist-language=php
这样我们会看到,我们上传到git后,项目会被归类到php类中去
转载至:http://www.hlzblog.top/Article?id=41
这篇文章真的很不错,博主也很厉害,推荐大家去看看一看这个博主:http://www.hlzblog.top/