Git快速上手小结

2017-10-17 06:32:08 语法专题 3855 1

Git 我们一般用于保存代码、协同开发

安装

Linux 环境
yum install git
Windows 环境

去下载

配置

git remote 的相关配置详见 `初次操作`
各个环境下 大致流程 如下

Linux

git remote 设置的远程地址 请用 git 协议格式 如 git@github.com:HaleyLeoZhang/blog_v3.git

生成SSH公钥与私钥 -> 上传公钥到git代码托管服务器 -> 用私钥进行代码管理

如果你要上传代码到 Github 或者是 码云
得去对应平台的个人设置中心,设置SSH公钥

Windows

git remote 设置的远程地址 请用 https 协议格式 如 https://github.com/HaleyLeoZhang/blog_v3
Windows下保存 git 帐号的用户名与密码

初次操作

git init # 在对应项目的根目录,初始化项目
git remote add 自定义名称 远程仓库名 # 设置远程代码仓库信息
git pull 自定义名称 分支名 # 初次拉取,需要确认仓库地址是正确的
git branch --set-upstream master origin/master # 本地的这个master分支 去关联 远程master分支
示例
git init
git remote add origin https://github.com/HaleyLeoZhang/blog_v3 # windows环境,就是这样用 https 的协议
git pull origin master
git branch --set-upstream master origin/master

提交流程

git add -A # 将git status中对应的所有的具体改动,添加到仓库门口,等待说明这些改动是干嘛的
git status # 查看该当前书写好的代码与上次存于git仓库中的文件,有哪些文件有过改动  
git commit -m '这是你对此次改动的说明' # 用于表明最新的这次添加操作是干嘛的  
              # 注:如果提交的说明写错了,用`git commit --amend -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_v3

处理细节

.gitignore

.gitignore的使用与应用场景

中途修改 .gitignore 时

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

.gitattributes

指定非文本文件的对比合并方式

示例:把下面的以.js .css .scss .html文件结尾的文件当成是php文件
*.js linguist-language=php
*.css linguist-language=php
*.scss linguist-language=php
*.html linguist-language=php

这样我们会看到,我们上传到git后,项目会被归类到php类中去

代码调试

如果你是在服务器上写日志调试问题在哪里,
调试完了,想恢复到修改前的样子

git checkout .
注:若无特殊说明,文章均为云天河原创,请尊重作者劳动成果,转载前请一定要注明出处