QQ空间分享网址
Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。Git 的读音为 / gɪt/。
GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 git 作为唯一的版本库格式进行托管,故名 GitHub。
一:Git 基本操作
配置
Windows 下配置文件位置:C:\Users\Administrator\.gitconfig
姓名:
git config --global user.name "Your Name"邮箱:
git config --global user.email "email@example.com"支持 UTF-8 编码(中文字符由显示转义字符调整为显示正常字符):
git config --global core.quotepath falseGit Bash 可能还需要:
Git Bash 窗口右键 ->Options->Text->Locale 设置 zh_CN,Character set 设置 UTF-8Git GUI 支持 UTF-8 编码:
git config --global gui.encoding utf-8忽略文件权限:
git config core.filemode false检查文件名大小写:
git config core.ignorecase false查看配置:
cat .git/config
版本(commit)
查看历史记录
- 标准:
git log - 一行:
git log --pretty=oneline - 包括未来版本:
git log --reflog - 按提交顺序逆序:
git log --reverse(--reverse : Git - git-log Documentation) - 查看全部信息(committer):
git log --format=fuller
版本回退
- 回退一个版本:
git reset HEAD^ - 回退两个版本:
git reset HEAD^^ - 回退 N 个版本:
git reset HEAD~N - 回退到指定版本:
git reset 版本号
版本前进
通过查看历史命令查看未来版本号(
git log命令获取不到未来版本号):git reflog或通过以下命令查看未来版本号:
git log --reflog跳转到指定版本:
git reset 版本号
查看某个版本的改动[一行]
git show 版本号 [--stat]
分支(branch)
创建
- 创建:
git branch dev - 创建并切换:
git checkout -b dev
切换
git checkout dev
查看
git branch
合并
- 合并指定分支到当前分支:
git merge dev
删除
- 删除本地分支:
git branch -d dev
从远程库删除
git push --delete origin devel
修剪分支(变鸡):rebase
https://git-scm.com/docs/git-rebase
标签(tag)
查看
- 列出所有 tag(按字母排序):
git tag - 列出 1. 几的版本 tag:
git tag -l v1.*
创建
- 不带信息的 tag:
git tag v1.0 - 带信息的 tag:
git tag -a v1.0 -m 'first version' - 为以前的 commit 添加 tag:
git tag -a v1.0 版本号
删除
git tag -d v1.0
上传到远程库
- push 单个 tag:
git push origin [tagname] - push 所有 tag:
git push [origin] --tags
从远程库删除
git push origin :refs/tags/tagname或git push origin :tagname
撤销修改
暂存区 -> 工作区:git checkout filename
版本库 -> 暂存区:git reset HEAD filename
查看历史命令
git reflog
换行(eol)
core.autocrlf:配置 eol 自动转换
- true(默认):提交时将 CRLF 变为 LF,window 下迁出时将 LF 变为 CRLF
- input:提交时将 CRLF 变为 LF
- false:不变
core.eol:配置 eol,当core.autocrlf为true 或 input时该配置失效
- lf, crlf 或_native_
二:Git 远程仓库
1. 创建 SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
2. GitHub 配置 SSH Key
- 登录 GitHub->Account settings->SSH Keys
- Title
- key 中粘贴 id_rsa.pub 文件的内容
3. GitHub 创建仓库
登录 GitHub 创建仓库
4. 本地仓库 push 到 GitHub
- 关联远程库:
git remote add origin git@github.com:path/repo-name.git - 推送[第一次 push]:
git push [-u] [origin master] - 推送到分支:
git push origin local_branch:remote_branch
5. GitHub pull 到本地仓库
GitHub 上为最新版本,本仓库是旧版本可以用 pull 将本地更新到最新版本
git pull [origin remote_branch:local_branch]
pull = fetch(下载) + merge(合并)
6. GitHub clone 到本地
git clone git@github.com:path/repo-name.git
- clone 最近 N 次提交:
git clone --depth 1 git@github.com:path/repo-name.git - fetch 指定提交:
git fetch git@github.com:path/repo-name.git <sha1-of-commit-of-interest>
git reset --hard FETCH_HEAD
- 使用用户名和密码克隆私有仓库
git clone https://username:password@github.com/username/repository.git
git clone https://username@github.com/username/repository.git
7. 配置远程仓库
git remote 不带参数:列出已经存在的远程分支git remote -v | --verbose:列出详细信息,在每一个名字后面列出其远程 urlgit remote add [shortname] [url]:添加一个新的远程仓库, 可以指定一个简单的名字, 以便将来引用git remote remove name:删除远程仓库
8. 版本回退
方案 1(推荐):
$ git revert <commit>
$ git push origin master
方案 2(不推荐!!!):
$ git reset --hard <commit>
$ git push origin master -f
方案 3(不推荐!!!):
$ git reset --hard <commit>
$ # 删掉远程仓库的分支
$ git push <remote_name> :<branch_name>
$ git push <branch_name> <branch_name>
9. GitHub Pull Request
- Fork 官方的仓库
- clone 下来刚刚 Fork 的仓库
- 创建分支
- 修改代码
- 提交修改
- push 修改到刚刚 Fork 的仓库
- 在 GitHub 官方仓库上点击 Pull Request->New pull request
- 注意 Compare changes 下面有一行小字有个链接 compare across forks,点击这个链接就能选择这个项目的 Fork 里的分支了进行比较了
- 比较后觉得没问题了,点击 Create pull request 输入修改了什么就 OK 了
10. 保存用户名密码
这种方式可以在无法用 SSH Key 的场合使用
git config --global credential.helper store
git pull
credentials - How to save username and password in GIT? - Stack Overflow
三:高级操作
寻找丢失的版本
git fsck --lost-found
eg:A 更新到 B,B 回退到 A,A 又更新到 C。丢失的 B 用上面的命令找回。(版本回退后在旧版本提交产生的问题)
清除 untracked 的文件
谨慎使用可以先加上-n检查一下哪些文件将被删除。
git clean [-d] [-f] [-x] [-n]
-d:包括文件夹-f:强制执行-x:删除忽略的文件-n:不删除文件,只列出哪些文件将被删除
修改多个提交的提交信息
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
四:.gitignore
语法:
- 以斜杠 "/" 开头表示根目录
- 以斜杠 "/" 结尾表示匹配的最后一项是目录
- 以星号 "*" 通配多个字符(全部文件)
- 以问号 "?" 通配单个字符
- 以叹号 "!" 表示不忽略(跟踪)匹配到的文件或目录
eg:忽略根目录下 upload 文件夹,除了 2015 文件夹
#最前面不加"/"则所有文件夹下的upload都会忽略
#不加"*"则将upload忽略而不是upload下的文件忽略,后面的!/upload/2015/无法生效
/upload/*
#忽略/upload/2015/文件夹
!/upload/2015/
eg:忽略 / web/upload / 下的所有文件和文件夹,除了 / web/upload/img/20170301 / 文件夹
/web/upload/*
!/web/upload/img/
!/web/upload/img/20170301/
五:多账户配置
配置 user 和 email
全局配置(~/.gitconfig)
姓名:git config --global user.name "Your Name"邮箱:
git config --global user.email"email@example.com"
ssh-keygen -t rsa -C "youremail@example.com"Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): /c/Users/Administrator/.ssh/name_rsa
单个仓库配置(仓库 /.git/config)
进入某仓库
姓名:git config user.name "Your Name"邮箱:
git config user.email"email@example.com"
ssh-keygen -t rsa -C "youremail@example.com"
Enter file in which to save the key (/c/Users/Administrator/.ssh/id_rsa): /c/Users/Administrator/.ssh/name_rsa
配置使用的 key
这里使用哪个用户上传就把哪个用户放上面(不知道为什么只能用第一个)
- 进入~/.ssh
- 创建 config 文件
- 配置每一个 key
#global_key
Host github.com
HostName github.com
IdentityFile ~/.ssh/name_rsa1
PreferredAuthentications publickey
User your_name1
#xxx_key
Host github.com
HostName github.com
IdentityFile ~/.ssh/name_rsa2
PreferredAuthentications publickey
User your_name2
# 配置文件参数
# Host : Host 可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和 ssh 文件
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面 User 对应的 identityFile 路径
六:在 U 盘中建立 git 仓库
建立:
在 U 盘作为仓库的目录(eg:I:\repo\test_project)执行git --bare init --sharedbare:只有. git 中的文件,且. git 中的文件都放在当前目录下(git 服务器)
使用:
直接使用建立时的路径访问就行eg:
git clone I:\repo\test_project
QQ空间分享网址的更多相关文章
- QQ空间分享功能(二)
http://sns.z.qq.com/tools/share/demo_html.jsp 手机QQ空间分享功能接入指引: 1.请求地址: http://sns.z.qq.com/share 2.请 ...
- JavaScript实现HTML页面集成QQ空间分享功能
<!DOCTYPE HTML> <html> <head> <title>QQ空间分享</title> <meta http-equi ...
- Android中集成QQ登陆和QQ好友分享及QQ空间分享
extends : http://blog.csdn.net/arjinmc/article/details/38439957 相关官方文档及下载地址: 如果只用分享和登陆,用lite包就可以,体积小 ...
- QQ登入(3)QQ空间分享-无需登入
public void myclick2(View v){ //QZone分享, SHARE_TO_QQ_TYPE_DEFAULT 图文,SHARE_TO_QQ_TYPE_IMAGE 纯图 ,SHAR ...
- 整合 新浪 腾讯 人人 qq空间 分享地址
function snsShare(snsId, title, content, image, url) { var snsUrl; // 新浪 腾讯 要申请appkey switch (snsId) ...
- QQ分享 QQ空间分享 API链接:
QZone: "http://sns.qzone.qq.com/cgi-bin/qzshare/cgi_qzshare_onekey?url={{URL}}&title={{TITL ...
- 自己动手写js分享插件 [支持https] (可以分享QQ空间,微信,新浪微博。。。)
由于百度分享,jiathis 等分享插件在https下均会报错,就萌生了自己动手写一个分享插件的念头,其实实现起来一点都不难,以下代码都已在https网站运行通过,特附上以下代码:还请各位看官不吝赐教 ...
- Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow
这是一张QQ空间说说详情的截图. 分析: .点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 .当该区域出现的时候,详情界面便灰了,也说成透明度变化了 .当任意选了一个 ...
- 分享到QQ空间、新浪微博、腾讯微博的代码
今天公司原来的分享代码,在IE下有问题.网上找了下网上的分享代码. 给网页加上分享代码,借助网友的力量推广网站,目前已经很流行了 以下是网页代码 QQ空间分享代码如下: <a href=&quo ...
随机推荐
- jmeter _Random函数生成随机数
因对发送邮件接口做压测发现相同数据对服务器的压力很小所以需要每次发送请求都需要不同的参数,所以要对某个字段做随机数 选项中-函数助手对话框
- docker--虚拟化
1 什么是虚拟化 1.1 概念 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种 实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体 ...
- Node.js实战10:“流”是Node.js最强大的功能之一。
流是Nodejs的高级应用,掌握流的使用,才能真正胜任NodeJS开发. Nodejs中,流是基于事件的API,用于管理和处理数据,而且效率很好! 什么是流? 流是一个抽象接口,Node 中有很多对象 ...
- ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.
在做多表映射查询时,在同一个resultMap中写了1:1映射和1:n映射,结果测试时报错如下: org.apache.ibatis.exceptions.PersistenceException: ...
- SQL Server增量备份数据[转]
服务器中一个数据库DB,其中表A有几个地方要写入的,程序设定在网络不通的时候也可以用本机的数据库运行,在网络通达后,再将本机的数据写回到服务器中,经研究,增量备份有以下几种可能性: 1. ...
- [BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明)
[BZOJ 2301] [HAOI 2011] Problem b (莫比乌斯反演)(有证明) 题面 T组询问,每次给出a,b,c,d,k,求\(\sum _{i=a}^b\sum _{j=c}^d[ ...
- JavaScript基础5——动态显示时间
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- js实现-小框框全选
点击全选下面单独的肉也会全选,再次点击取消 一个一个点击肉,点完--全选也会被选上 HTML代码---CSS略 <table> <tr> <th> <inpu ...
- 模块之re模块
八.正则表达式 1.1首先我们先了解re模块与正则表达式的关系: re模块与正则表达式之间的关系 正则表达式不是python独有的 它是一门独立的技术所有的编程语言都可以使用正则,但是如果你想在pyt ...
- 【记录】Git pull(拉取),push(上传)命令整理(详细)
前言:博主最近在学习git命令,因为git是一个非常好用的分布式版本管理工具,功能比svn强大,与SVN不同点是Git去中心化,每一个分支都是一个中心,并且支持本地仓库存储,像如今很多大公司都用git ...