# Git 操作
## git 命令
* 创建本地仓库
```
git init
```
* 获取远程仓库
```
git clone [url]
例:git clone https://github.com/you/yourpro.git
```
* 创建远程仓库
```
// 添加一个新的 remote 远程仓库
git remote add [remote-name] [url]
例:git remote add origin https://github.com/you/yourpro.git
origin:相当于该远程仓库的别名
// 列出所有 remote 的别名
git remote
// 列出所有 remote 的 url
git remote -v
// 删除一个 renote
git remote rm [name]
// 重命名 remote
git remote rename [old-name] [new-name]
```
* 从本地仓库中删除
```
git rm file.txt // 从版本库中移除,删除文件
git rm file.txt -cached // 从版本库中移除,不删除原始文件
git rm -r xxx // 从版本库中删除指定文件夹
```
* 从本地仓库中添加新的文件
```
git add . // 添加所有文件
git add file.txt // 添加指定文件
```
* 提交,把缓存内容提交到 HEAD 里
```
git commit -m "注释"
```
* 撤销
```
// 撤销最近的一个提交.
git revert HEAD
// 取消 commit + add
git reset --mixed
// 取消 commit
git reset --soft
// 取消 commit + add + local working
git reset --hard
```
* 把本地提交 push 到远程服务器
```
git push [remote-name] [loca-branch]:[remote-branch]
例:git push origin master:master
```
* 查看状态
```
git status
```
* 从远程库中下载新的改动
```
git fetch [remote-name]/[branch]
```
* 合并下载的改动到分支
```
git merge [remote-name]/[branch]
```
* 从远程库中下载新的改动
```
pull = fetch + merge
git pull [remote-name] [branch]
例:git pull origin master
```
* 分支
```
// 列出分支
git branch
// 创建一个新的分支
git branch (branch-name)
// 删除一个分支
git branch -d (branch-nam)
// 删除 remote 的分支
git push (remote-name) :(remote-branch)
```
* 切换分支
```
// 切换到一个分支
git checkout [branch-name]
// 创建并切换到该分支
git checkout -b [branch-name]
```
##与github建立ssh通信,让Git操作免去输入密码的繁琐。
* 首先呢,我们先建立ssh密匙。
> ssh key must begin with 'ssh-ed25519', 'ssh-rsa', 'ssh-dss', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', or 'ecdsa-sha2-nistp521'. -- from github
根据以上文段我们可以知道github所支持的ssh密匙类型,这里我们创建ssh-rsa密匙。
在command line 中输入以下指令:``ssh-keygen -t rsa``去创建一个ssh-rsa密匙。如果你并不需要为你的密匙创建密码和修改名字,那么就一路回车就OK,如果你需要,请您自行Google翻译,因为只是英文问题。
>$ ssh-keygen -t rsa
Generating public/private rsa key pair.
//您可以根据括号中的路径来判断你的.ssh文件放在了什么地方
Enter file in which to save the key (/c/Users/Liang Guan Quan/.ssh/id_rsa):
* 到 https://github.com/settings/keys 这个地址中去添加一个新的SSH key,然后把你的xx.pub文件下的内容文本都复制到Key文本域中,然后就可以提交了。
* 添加完成之后 我们用``ssh git@github.com`` 命令来连通一下github,如果你在response里面看到了你github账号名,那么就说明配置成功了。 *let's enjoy github ;)*
## gitignore
---
在本地仓库根目录创建 .gitignore 文件。Win7 下不能直接创建,可以创建 ".gitignore." 文件,后面的标点自动被忽略;
```
/.idea // 过滤指定文件夹
/fd/* // 忽略根目录下的 /fd/ 目录的全部内容;
*.iml // 过滤指定的所有文件
!.gitignore // 不忽略该文件
```
- JavaSE(Java基础)
- Java基础知识
- Java中的内存泄漏
- String源码分析
- Java集合结构
- ArrayList源码剖析
- HashMap源码剖析
- Hashtable简介
- Vector源码剖析
- LinkedHashMap简介
- LinkedList简介
- JVM(Java虚拟机)
- JVM基础知识
- JVM类加载机制
- Java内存区域与内存溢出
- 垃圾回收算法
- Java并发(JavaConcurrent)
- Java并发基础知识
- 生产者和消费者问题
- Thread和Runnable实现多线程的区别
- 线程中断
- 守护线程与阻塞线程的情况
- Synchronized
- 多线程环境中安全使用集合API
- 实现内存可见的两种方法比较:加锁和volatile变量
- 死锁
- 可重入内置锁
- 使用wait/notify/notifyAll实现线程间通信
- NIO
- 数据结构(DataStructure)
- 数组
- 栈和队列
- Algorithm(算法)
- 排序
- 选择排序
- 冒泡排序
- 快速排序
- 归并排序
- 查找
- 顺序查找
- 折半查找
- Network(网络)
- TCP/UDP
- HTTP
- Socket
- OperatingSystem(操作系统)
- Linux系统的IPC
- android中常用设计模式
- 面向对象六大原则
- 单例模式
- Builder模式
- 原型模式
- 简单工厂
- 策略模式
- 责任链模式
- 观察者模式
- 代理模式
- 适配器模式
- 外观模式
- Android(安卓面试点)
- Android基础知识
- Android内存泄漏总结
- Handler内存泄漏分析及解决
- Android性能优化
- ListView详解
- RecyclerView和ListView的异同
- AsyncTask源码分析
- 插件化技术
- 自定义控件
- ANR问题
- Art和Dalvik的区别
- Android关于OOM的解决方案
- Fragment
- SurfaceView
- Android几种进程
- APP启动过程
- 图片三级缓存
- Bitmap的分析与使用
- 热修复的原理
- AIDL
- Binder机制
- Zygote和System进程的启动过程
- Android中的MVC,MVP和MVVM
- MVP
- Android开机过程
- EventBus用法详解
- 查漏补缺
- Git操作