「Efficient Android Threading 笔记」- C1 Android Components and the Need for Multiprocessing Android RecyclerView Android Socket Programming Supporting Multiple Screens Make a Reusable UI in Android App Development 如何在 Android Studio 中包含 *.so library,并使用库中定义的方法? 使用 SpannableString 格式化字符串,实现前景色、下划线、超链接、图文混排等 如何使用 bound service 完成进程间通信? 创建自定义视图 Creating custom views 通过 Android Theme & Style 定制应用的样式 「译」Android ViewPropertyAnimator 介绍 Android Animation Interpolator - Android 动画插值器源码笔记 「译」Android Animation in Honeycomb by Chet Haase(Android 3.0系统中的动画机制) 从 Android Sample ApiDemos 中学习 android.animation API 的用法 如何学习 Android Animation? 如何实现 Android ListView「上拉加载更多」? 「译」向Big Nerd Ranch提问:为什么Fragment在Android App开发中非常重要? 分类整理我在 SegmentFault 上针对某些问题作的回答 Android Servcie 后台服务总结笔记 如何在Android设备旋转时暂存数据以保护当前的交互状态? Android Message Handler 消息处理机制总结笔记 如何获取FragmentTabHost中指定标签页的Fragment? Fragment子类必须包含一个public无参构造器 如何更新及替换ViewPager中的Fragment? 如何使用Android UI Fragment开发“列表-详情”界面? 一个Android音频文本同步的英文有声读物App的开发过程 「Android编程权威指南笔记」Android应用本地化 通过jfeinstein10/SlidingMenu实现Android侧滑菜单 为Ubuntu14.04部署Android App的Eclipse开发环境 「Android编程权威指南笔记」使用ListFragment显示列表 「Android编程权威指南笔记」SDK版本与兼容 「Android编程权威指南笔记」Android布局和组件 「Android编程权威指南笔记」UI Fragment 「Android编程权威指南笔记」Activity 第一次开发iOS App和Android的对比总结笔记 「App Training笔记」创建第一个应用 「App Training笔记」开发入门训练大纲 Android APP - 从远程FTP服务器下载文件到本地

Git使用总结

2015年03月21日

git push 每次都要输入用户名和密码

原因是git clone URL使用的是HTTPS,需要更改为SSH,并更新本地的git地址
Git push requires username and password

A common mistake is cloning using the default (HTTPS) instead of SSH. You can correct this by going to your repository, clicking the ssh button left to the URL field and updating the URL of your origin remote like this:
git remote set-url origin git@new.url.here

完成上述两个步骤,再次push会提示一个错误:

Warning: Permanently added the RSA host key for IP address '' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

接下来需要按照官网的教程生成SSH key
这样就可以避免每次push需要输入用户名和密码。

整理于2015-03-21


多个SSH Key问题

但是一个SSH Key只能用于一个Github账号,如果试图把同一个key贴到另一个账号上,Github会提示错误。我们需要为不同的账号生成不同的key

解决办法是建立配置文件~/.ssh/config

# GitHub Account 1
Host github-as-user1	// 这个名字在稍后用来测试连接:ssh -T git@github-as-user1
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_1

# GitHub Account 2
Host github-as-user2
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_2

特别需要注意的是,此时~/.ssh/路径下可能没有id_rsa_1文件,所以在生成ssh key的命令中,需要加-f选项指明文件,会新建不存在的文件,如果你尝试手动建立这个文件的话,会出现问题

ssh-keygen -t rsa -f ~/.ssh/id_rsa_work -C "weiyi.just2@gmail.com"

参考:
Multiple GitHub Accounts & SSH Config
git生成ssh key及本地解决多个ssh key的问题

多个key存在时,可能会push到错误的key账号

假如Github用户user1把本地代码添加到一个远程仓库whatever.git,并且命名为origin

git remote add origin git@github.com:user1/whatever.git

参考我们上面配置的~/.ssh/config,可以把这行命令改写为:

git remote add gb-user1 git@github-as-user1:user1/whatever.git

想要提交master分支到user1/whatever仓库时,就可以执行git push gh-user1 master.

gh-user1远程仓库在本地的简称,可以改为你想要的名字,越简单明了越好,比如li2.me,假如出现

fatal: remote gh-user1 already exists

可以git remote rm gh-user1

解决办法参考:
How to work with multiple ssh keys

整理于2015-03-28

全局性地更换电子邮件地址

$ git filter-branch --commit-filter '
        if [ "$GIT_AUTHOR_EMAIL" = "old@email" ];
        then
                GIT_AUTHOR_NAME="new name";
                GIT_AUTHOR_EMAIL="new@email";
                git commit-tree "$@";
        else
                git commit-tree "$@";
        fi' HEAD

git update-ref -d refs/original/refs/heads/master
git push --force --tags origin 'refs/heads/*'

全局性地更换电子邮件地址
Change the author of a commit in Git


知识共享许可协议
li2的博客WeiYi.Li 创作,采用 知识共享 署名-非商业性使用 4.0 国际 许可协议进行许可。
© 2011-2017. All rights reserved by WeiYi.Li. Powerd by Jekyll & LinAnYa's Theme