Git同一台电脑多个git账号

Git命令

生成新账号的公钥和私钥

1.用ssh-keygen命令生成一组新的id_rsa_new和id_rsa_new.pub。

ssh-keygen -t rsa -C “your new email”

不要直接回车,直接回车默认生成id_rsa和id_rsa.pub。这里特别需要注意,出现提示输入文件名的时候要输入与默认配置不一样的文件名,比如: id_rsa_new。

执行ssh-agent让ssh识别新的私钥

ssh-add ~/.ssh/id_rsa_new

2.配置~/.ssh/config文件

#加上以下内容 #default github Host 192.168.45.120

HostName 192.168.45.120

IdentityFile ~/.ssh/id_rsa

Host github_zhaoxin

HostName github.com

IdentityFile ~/.ssh/id_rsa_zhaoxin

清除git的全局的用户名和邮箱

git config –global –unset user.name

git config –global –unset user.email

重新设置每个项目的非全局的用户名和邮箱

git config user.name “your_name”
git config user.email “your_email”

例:从第2个远端仓库clone代码用别名代替域名

git clone git@github_zhaoxin:choukin/choukin.github.io.git

参考资料

参考文章!

Git命令

Git命令

创建版本库

  • 初始化一个Git仓库:git init
  • 添加文件到Git仓库,分两步:
  • 第一步,告诉git添加文件,添加到暂存区: git add ,注意,可反复多次使用,添加多个文件;
  • 第二步,告诉文件添加文件到仓库提交到当前分支:git commit -m <”commit”>,完成。
  • 查看工作区状态: git status
  • 查看修改内容:git diff
  • 查看工作区和版本库里面最新版本的区别:git diff HEAD –
  • 查看文件内容: cat

日志

  • 显示从最近到最远的提交日志 git log
  • 简化日志查看git log –pretty=oneline
  • 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本
  • 分支合并图: git log –graph –pretty=oneline –abbrev-commit

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164…882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

回退到上一个版本:git reset –hard HEAD^/使用命令git reset –hard commit_i

撤销修改

把文件在工作区的修改全部撤销,就是让这个文件回到最近一次git commit或git add时的状态

  • 文件自修改后还没有被放到暂存区
  • git checkout – file 命令中的–很重要,没有–,就变成了“切换到另一个分支”的命令
  • 文件已经添加到暂存区后
  • git reset HEAD file可以把暂存区的修改撤销掉

删除文件

  • 直接在文件管理器中把没用的文件删:rm
  • 确实要从版本库中删除该文件:那就用命令git rm 删掉,并且git commit:

远程仓库

  • 创建SSH Key : ssh-keygen -t rsa -C “youremail@example.com”
  • 关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
  • 第一次推送master分支的所有内容:git push -u origin master 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改
  • 远程库已经准备好了,下一步是用命令git clone克隆一个本地库:git clone git@github.com:michaelliao/gitskills.git

分支

  • 查看分支:git branch
  • 创建分支:git branch
  • 切换分支:git checkout
  • 创建+切换分支:git checkout -b
  • 合并某分支到当前分支:git merge
  • 删除分支:git branch -d
  • 普通模式合并,合并后的历史有分支,能看出来曾经做过合并:git merge –no-ff -m “merge with no-ff” dev

Bug分支

  • 把当前工作现场“储藏”起来,等以后恢复现场后继续工作:git stash
  • 首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支

    $ git checkout master git checkout -b issue-101

  • 修复完成后,切换到master分支,并完成合并,最后删除issue-101分支:

    git checkout master git merge –no-ff -m “merged bug fix 101” issue-101 git branch -d issue-101

  • 接着回到dev分支干活

    git checkout dev 用git stash list命令看看存储的工作现场 工作现场还在,Git把stash内容存在某个地方了,但是需要恢复一下,有两个办法: 一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除; 另一种方式是用git stash pop,恢复的同时把stash内容也删了: 可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令

  • git stash apply stash@{0}
  • 如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除

远程分支

程分支就是本地分支push到服务器上的时候产生的:git push origin dev 会产生一个dev远程分支

  • 查看远程和本地分支 :git branch -a
  • 查看远程库信息,使用:git remote -v;

本地新建的分支如果不推送到远程,对其他人就是不可见的; 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交; 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致; 建立本地分支和远程分支的关联,使用git branch –set-upstream branch-name origin/branch-name; 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签管理

Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针(跟分支很像对不对?但是分支可以移动,标签不能移动),所以,创建和删除标签都是瞬间完成的。

  • tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  • git tag -a -m "blablabla..."可以指定标签信息;
  • git tag -s -m "blablabla..."可以用PGP签名标签;
  • git tag可以查看所有标签
  • git push origin 可以推送一个本地标签;
  • git push origin –tags可以推送全部未推送过的本地标签;
  • git tag -d 可以删除一个本地标签;
  • git push origin :refs/tags/可以删除一个远程标签。

参考资料

廖雪峰的官方网站史上最浅显易懂的Git教程!

AMD&CMD 兼容实现

AMD&CMD 兼容实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(function(name,definition){ 
//兼容 AMD CMD
//AMD 定义了 define 函数,我们可以使用 typeof 探测该函数是否已定义。
//若要更严格一点,可以继续判断 define.amd 是否有定义
var hasDefine = typeof define === 'function'&& define.cmd,
//对于 CommonJS,可以检查 exports 或是 module.exports 是否有定义。
hasExports = typeof module !== 'undefined' && module.exports;
 if(hasDefine){ 
 	define(definition) 
 }else if(hasExports){
 	module.exports = definition();
 }else{ //把对象放到window里
 	this[name] = definition();
 }
})("m9futil",function(){
//严格模式
'use strict';
var m9futil = {};
//TODO 
return m9futil;
});
我的地盘

#写在前面-第一篇

一个水桶无论有多高,它盛水的高度取决于其中最低的那块木板。__木桶原理

一直想有一个自己的博客,可以记录自己点滴的成长,让自己一步一步的建立自己强大的内心,以改变自己不自信的性格。 看过很多方法,多读书,多和别人沟通,建立总结机制,琳琳总总,总是不能坚持。有了自己的地盘要多写,做记录。