Git for github 使用心得

引入

作为一个白帽子,使用github的唯一目的是记录自己的研究项目,存放学习笔记,备份资料等等。对协同开发的需求不大,简单使用Git的几个命令就可以上传本地文件到远程服务器,很多人说很繁琐,喜欢使用GUI版本的github for Desktop,那么这就看个人喜好了~接下来的内容仅适合同我情况差不多的人阅读!

详细的学习教程-->菜鸟教程 for Git

Git和github的关系

git是分布式版本控制工具(Version control),它可在本地建立仓库,你写的代码的各个版本都可以存着 ;

github是一个面向开源及私有软件项目的托管平台,相当于网上仓库,你写的代码的各个版本都可以存着;

历史渊源:Git比GitHub出生的早。事件回到2005年,有个公司不允许linux系统继续免费使用它们的版本控制软件了,然后linux系统创始人Torvalds一气之下花了10天时间创造了Git(第一个版本),并且开源给所有人免费试用。3年后,Tom Preston使用Git作为版本控制软件创建了http://Github.com,一个专门托管代码并且可以实现版本控制的网站。Tom之所以把网站叫做Github,是因为其核心部分版本控制是用Git来处理的。但是 为什么有人回复调侃Github是全球最大男性交友网站呢?那是因为Github的注册用户大都是男生,而且彼此之间可以相互关注(类似于微博)

Git概览

所有命令前都要加 git,如表中的init是指 git init
点击命令可直接跳转至本文第一次使用的地方。

以下命令都在命令行里执行。

1、个人本地使用
行为 命令 备注
初始化 init 在本地的当前目录里初始化git仓库
clone [url] 从网络上某个地址拷贝仓库(repository)到本地
查看当前状态 status 查看当前仓库的状态。
查看不同 diff 查看当前状态和最新的commit之间不同的地方
添加文件 add -A 这算是相当通用的了。在commit之前要先add
提交 commit -m "提交信息" 提交信息最好能体现更改了什么
查看提交记录 log 查看当前版本及之前的commit记录
2、个人使用远程仓库
行为 命令 备注
设置用户名 config --global user.name "你的用户名"
设置邮箱 config --global user.email "你的邮箱"
生成ssh key ssh-keygen -t rsa -C "你的邮箱" 这条命令前面不用加git
添加远程仓库 remote add origin 你复制的地址 设置origin
上传并指定默认 push -u origin master 指定默认主机,以后push默认上传到origin上
提交到远程仓库 push 将当前分支增加的commit提交到远程仓库
从远程仓库同步 pull 获取远程仓库的commit

可以使用一张图直观地看出以上主要命令对仓库的影响

image

图片引用自:[Git introduction for CVS/SVN/TFS users]


image

图片引用自:工作区和暂存区 - 廖雪峰的官方网站 (做了点修改)

对照查看两张图:

  • workspace 即工作区,逻辑上是本地计算机,还没添加到repository的状态;
  • staging 即版本库中的stage,是暂存区。修改已经添加进repository,但还没有作为commit提交,类似于缓存;
  • Local repository 即版本库中master那个地方。到这一步才算是成功生成一个新版本;
  • Remote repository 则是远程仓库。用来将本地仓库上传到网络,可以用于备份、共享、合作。本文将使用Github作为远程仓库的例子。

Git 安装

Git for windows
image
  • 安装包可以到官方网站下载,或者在github下载。如果下载不下来,可以把链接复制下来用迅雷下载。如果用迅雷下载不放心,在下载完后去在github下载的那个地方查看SHA-256值,并和下载的文件对比,如果值一样就可以放心使用。
  • 安装的时候一路点击Next就行了。
  • 刚安装完打开后,窗口比较小。如果不太习惯,可以把它改大一些。
    1. 首先移到窗口右下角边缘,出现箭头后把窗口拉大。
    2. 点击窗口顶部左边的图标 -> Options... -> Window -> Current size -> OK
      这样以后打开窗口都会是调整后的大小。

Git for Windows从2.8.0版本开始,默认添加环境变量,所以环境变量部分就不用再手动配置了。

Git for Linux

Git 的工作需要调用 curl,zlib,openssl,expat,libiconv 等库的代码,所以需要先安装这些依赖工具。

在有 yum 的系统上(比如 Fedora)或者有 apt-get 的系统上(比如 Debian 体系),可以用下面的命令安装:

各 Linux 系统可以使用其安装包管理工具(apt-get、yum 等)进行安装:

Debian/Ubuntu Git 安装命令为:

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

$ apt-get install git

$ git --version
git version 1.8.1.2
用户信息配置

配置个人的用户名称和电子邮件地址:

$ git config --global user.name "Qymua"
$ git config --global user.email "test@Qymua.com"

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。

Git for github

到这里表示已经可以开始使用Git上传项目到github了

添加ssh key

由于你的本地 Git 仓库和 GitHub 仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息:

使用以下命令生成 SSH Key:

$ ssh-keygen -t rsa -C "youremail@example.com"

后面的 your_email@youremail.com 改为你在 Github 上注册的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在 ~/ 下生成 .ssh 文件夹,进去,打开 id_rsa.pub,复制里面的 key

回到 github 上,进入 Account => Settings(账户配置)。

image

左边选择 SSH and GPG keys,然后点击 New SSH key 按钮,title 设置标题,可以随便填,粘贴在你电脑上生成的 key。

image

添加成功后为了验证是否成功,输入以下命令:

$ ssh -T git@github.com
Hi tianqixin! You've successfully authenticated, but GitHub does not provide shell access.
新建仓库

这里不再说明如何创建了,只介绍下相应选项的用途

Repository name: 仓库名称

Description(可选): 仓库描述介绍

Public, Private : 仓库权限(公开共享,私有或指定合作者)

Initialize this repository with a README: 添加一个README.md

gitignore: 不需要进行版本管理的仓库类型,对应生成文件.gitignore

license: 证书类型,对应生成文件LICENSE

开始上传

1、在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库;

2、把项目复制到这个文件夹里面,再通过git add .把项目添加到仓库;

3、再通过git commit -m "注释内容"把项目提交到仓库;

4、通过git remote add origin https://github.com/用户名/项目名.git 将本地仓库和远程仓库进行关联;

5、最后通过git push -u origin master把本地仓库的项目推送到远程仓库(也就是Github)上;

由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需下面这样就可以了:

$ git push origin master

(若新建远程仓库的时候自动创建了README文件会报错,解决办法看下面)。

这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下:

$ git pull --rebase origin master
工作区迁移

1、在新环境下配置好Git;

2、通过git init把它变成Git仓库;

3、git clone [url] 克隆仓库到本地;

4、git add . 添加项目到仓库(缓存区);

5、通过git remote add origin https://github.com/用户名/项目名.git 将本地仓库和远程仓库进行关联;

6、其实到这里已经迁移完成,主要是下载到本地,添加Git仓库后,再把项目同步到本地仓库上

本文涉及的术语

  • Version Control(版本控制): 任何一个能够让你了解文件的历史,以及该文件的发展进程的系统。
  • Git:一个版本控制程序,通过对变更进行注释,以创建一个易于遍历的系统历史。
  • Commit(提交):在指定时间点对系统差异进行的注释 “快照”。
  • Local(本地):指任意时刻工作时正在使用的电脑。
  • Remote(远程): 指某个联网的位置。
  • Repository (仓库,简称 repo):配置了Git超级权限的特定文件夹,包含了你的项目或系统相关的所有文件。
  • Github:获取本地提交历史记录,并进行远程存储,以便你可以从任何计算机访问这些记录。
  • Pushing(推送):取得本地Git提交(以及相关的所有工作),然后将其上传到在线Github。
  • Pulling(拉取):从在线的Github上获取最新的提交记录,然后合并到本地电脑上。
  • Master (branch):主分支,提交历史 “树”的 “树干”,包含所有已审核的内容/代码。
  • Feature branch(功能分支/特性分支):一个基于主分支的独立的位置,在再次并入到主分支之前,你可以在这里安全地写工作中的新任务。
  • Pull Request(发布请求):一个 Github 工具,允许用户轻松地查看某功能分支的更改 (the difference或 “diff”),同时允许用户在该分支合并到主分支之前对其进行讨论和调整。
  • Merging(合并)该操作指获取功能分支的提交,加入到主分支提交历史的顶部。
  • Checking out(切换):该操作指从一个分支切换到另一个分支。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,214评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,307评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,543评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,221评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,224评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,007评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,313评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,956评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,441评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,925评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,018评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,685评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,234评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,240评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,464评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,467评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,762评论 2 345