---
`Git`
# Git管理 #
- 创建仓库
git init
在本地目录下建立新git仓库,该仓库可以为空也可以是重新初始化的仓库。该命令将创建一个名为 .git 的子目录,这个子目录含有初始化的 Git 仓库中所有的必须文件,仅仅是做了一个初始化的操作,项目里的文件还没有被跟踪。此时可通过 git add 命令来实现对指定文件的跟踪,然后执行 git commit 提交。
git clone [path] [name]
克隆仓库至当前目录,path可以为本地也可以是远程,name为仓库的命名。
- 添加和提交
git add [file]
workdir->index->head
将修改的文件添加入缓存流(index)
git commit -m "代码提交信息" /git commit -a /git commit --initial
将修改后的index提交至head
- 推送至仓库
git push orgin [branch(default:master)]
若你之前未使用clone那么需要
使用:
git remote add origin <server>
- 分支概念

分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master 是“默认的”分支。在其他分支上进行开发,完成后再将它们合并到主分支上。
git checkout -b newfeature #建立并切换分支
or
git branch newfeature #建立分支
git checkout newfeature #切换分支

git branch # 查看分支
并非每次都成功,并可能出现冲突(conflicts)。
这时候就需要你修改这些文件来手动合并这些冲突(conflicts)。
改完之后,你需要执行如下命令以将它们标记为合并成功:
git add <filename>
git merge <name> # 合并分支到master
git branch -d <name> # 删除分支
git diff <source_branch> <target_branch>
git log --graph #查看分支合并图
- 日志
git log #显示本地仓库日志
git tag 1.0.0 1b2e1d63ff #为各个提交记录设置标签
- 恢复

git checkout -- <file> #取消对文件的修改。还原到最近的版本,废弃本地做的修改。
git reset HEAD <file>... #取消已经暂存的文件。即,撤销先前"git add"的操作
git commit --amend #修改最后一次提交。用于修改上一次的提交信息,或漏提交文件等情况。
git reset HEAD^ #回退所有内容到上一个版本
git reset HEAD^ a.py #回退a.py这个文件的版本到上一个版本
git reset –soft HEAD~3 #向前回退到第3个版本
git reset –hard origin/master #将本地的状态回退到和远程的一样
git reset 057d #回退到某个版本
git revert HEAD #回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit.(代码回滚到上个版本,并提交git)
git fetch
git reset --hard origin/master #丢弃本地版本恢复为远程版本

文件删除恢复分为4种情况:
1. 使用系统的删除或者对文件进行了修改. 可以使用git checkout -- <file>来恢复.
2. 使用git rm 删除的,即是将记录写入了index,必须采用 HEAD 来恢复index.
git reset HEAD <file> , 之后按照1来恢复
3. 使用git commit 修改了 HEAD 同理 git reflog查看操作日志 修改 git reset HEAD{x} 来恢复HEAD.
4. 使用git push修改了远端仓库 使用 git log 查看版本改动 ,git reset --hard <commit_id> 还原到位.使用git push -f 强制恢复远程仓库.

- SSH方式链接

Git 可以使用四种主要的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议。
HTTPS:不管是谁,拿到url随便clone,但是在push的时候需要验证用户名和密码;
SSH:clone的项目你必须是拥有者或者管理员,而且需要在clone前添加SSH Key。SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。

1. 生成SSH-key

ssh-keygen -t rsa -C youremail@email.com rsa加密生成SSH秘钥
生成的秘钥分为私钥id_rsa 和 公钥 id_rsa.pub 保存在 ~/.ssh/ 目录下。
2. 添加SSH-key

打开github账户的profile 设置 SSH-key
复制id_rsa.pub内容至key区域
3. 测试SSH链接
SSH -T git@github.com

4. 仓库设置SSH关联

由于remote方式可能不是ssh,使用
git remote -v #查看remote方式
若无ssh-url则进行
git remote set-url origin <ssh-url>
SSH-URL可从github repository 的clone or download处复制获取.
格式类似于:git@github.com:account/project.git
---

Git使用笔记 (github为例)的更多相关文章

  1. git使用笔记(六)github

    By francis_hao    Nov 20,2016 github介绍 github是一个网站https://github.com/,可以实现基于git(当然,svn也是可以的)的代码托管工作. ...

  2. Git学习笔记(三)远程库(GitHub)协同开发,fork和忽略特殊文件

    远程库 远程库,通俗的讲就是不再本地的git仓库!他的工作方式和我们本地的一样,但是要使用他就需要先建立连接! 远程库有两种,一个是自己搭建的git服务器:另一种就是使用GitHub,这个网站就是提供 ...

  3. 【转帖】Git学习笔记 记录一下

    本文内容参考了廖雪峰老师的博文,并做了适当整理,方便大家查阅. 原帖地址 https://wangfanggang.com/Git/git/ 常用命令 仓库初始化 - git init 1 git i ...

  4. Git学习笔记(二) 远程仓库及分支

    添加远程仓库(以GitHub为例) 所谓的远程仓库,其实就和本地仓库一样,只是我们本地电脑可能会关机什么的.远程仓库的目的就是保证7*24小时开启状态.GitHub是一个很好的公共Git远程仓库(后面 ...

  5. Git学习笔记(二) · 非典型性程序猿

    远程库的使用 前面说到的都是git在本地的操作,那么实际协作开发过程中我们肯定是要有一个远程版本库作为项目的核心版本库,也就是投入生产使用的版本.这里我们以 Github为例.Github是一个开放的 ...

  6. Git学习笔记与IntelliJ IDEA整合

    Git学习笔记与IntelliJ IDEA整合 一.Git学习笔记(基于Github) 1.安装和配置Git 下载地址:http://git-scm.com/downloads Git简要使用说明:h ...

  7. 版本控制简介,git使用----使用GitHub托管代码

    关于版本控制: 很久以前,人们苦于对写过的代码进行版本的管理,经常过了一段时间想恢复原来写过的代码却又忘了不知道丢到哪儿去了,有的人用加上时间后缀来命名文件的方法,便于后期维护,但是这样做的麻烦也很大 ...

  8. Git学习笔记(10)——搭建Git服务器

    本文主要记录了Git服务器的搭建,以及一些其他的配置,和最后的小总结. Git远程仓库服务器 其实远程仓库和本地仓库没啥不同,远程仓库只是每天24小时开机为大家服务,所以叫做服务器.我们完全可以把自己 ...

  9. Git学习笔记(四)

    一.忽略特殊文件 在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件. 不需要从头写.gitignore文件,GitHub已经为我们 ...

随机推荐

  1. LeetCode 929. Unique Email Addresses (独特的电子邮件地址)

    题目标签:String 题目说明 有两个规则针对于 local name. 所以先把local name 和 domain name 分开. 两个规则是: rule 1:'.' 会被去除. (利用re ...

  2. CountDownTimer完整具体演示样例

    MainActivity例如以下: package cc.cv; import android.os.Bundle; import android.os.CountDownTimer; import ...

  3. [NHibernate] 入门实例 NHibernate 3.3 GA + VS2010 +MySQL

    题外话: 中国的技术论坛要赶上stackoverflow的水平.至少还需35年.中国程序猿笔者的特点是:太浮躁,太easy下总结.太自得其乐,虽说写的是为了让别人更好的看.却也演变成了一种" ...

  4. Android隐藏状态栏和标题栏,相当于全屏效果

    隐藏标题栏需要使用预定义样式:android:theme=”@android:style/Theme.NoTitleBar”. 隐藏状态栏:android:theme=”@android:style/ ...

  5. strok函数用法【转】

    本文转载自:http://blog.csdn.net/hexiechina2010/article/details/25096763 char *strtok( char *strToken, con ...

  6. 使iframe随内容(target到iframe的内容)改变而自适应高度,完美解决各种获取第一个demo高度后第二个高度不变情况

    转自:http://caiceclb.iteye.com/blog/281102 很高兴,终于使用jquery实现了点击外部链接,更改iframe内容时,iframe的高度自适应问题. 失败的测试就不 ...

  7. la3211

    2-sat+二分... 每次二分答案然后连边2-sat...边要开到n*n 样例水得跟没有一样... #include<bits/stdc++.h> using namespace std ...

  8. ubuntu下设置共享目录

    在使用VirtualBox和相关的客户机系统比如XPMac等需要用到一些相关功能共享剪贴板等等这时候需要安装VirtualBox中的一个工具叫做Guest Additions中文叫法不一增强工具包功能 ...

  9. 基于spark和flink的电商数据分析项目

    目录 业务需求 业务数据源 用户访问Session分析 Session聚合统计 Session分层抽样 Top10热门品类 Top10活跃Session 页面单跳转化率分析 各区域热门商品统计分析 广 ...

  10. PCB genesis大孔加小孔(即卸力孔)实现方法

    一.为什么 大孔中要加小孔(即卸力孔) 这其实跟钻刀的排屑有关了,当钻刀越大孔,排屑量也越大(当然这也得跟转速,下刀速的参数有关系),通常当钻刀越大,转速越慢,下刀速也越慢(因为要保证它的排屑通畅). ...