【工具|效率】Git+Github使用指南

版本控制工具

什么是版本控制?

如果你用 Word 写报告,想删除一段文字,又怕将来这段文字有用,怎么办呢?估计是先把当前文件“另存为”一个文件,然后继续改,改到某个程度,再“另存为”一个文件。就这样改着、存了好几个代表不同版本的 Word 文件。过了几天,如果想找回被删除的文字,可能也已经记不清保存在哪个文件了…

要是有一个软件能帮我们记录每一个版本,并且能显示出各个版本之间的差异,那多方便。这样的软件还真有,git 就是其中一个。

集中式&分布式版本控制系统

版本控制工具主要分为集中式版本控制系统和分布式版本控制系统。

  • 集中式:CSV ,SVN,VSS
  • 分布式Git,Darcs,…

集中式版本控制(Centralized Version Control )

简单地说就是,开发者之间的合作方式是共用一个仓库(repository),无论这个仓库是在本地还是在远端,只要是所有成员都共同存取同一个仓库,那么这种方式就是集中式版本控制。最常见的就是SVN。

但这种方式有一个问题,开发者想要签出代码、提交到仓库,都必须在连网的环境下才能进行。这会大大降低开发效率。你已经在本地端做好了必要的修改,想要提交到系统上,却因为正处于无法连网的环境,所以无法将档案提交出去。

分布式版本控制(Distributed Version Control)

于是分布式版本控制系统应运而生,甚至慢慢成为主流。

其跟集中式最大差别在于分布式的仓库可以有多个,每个开发者都可以在自己的一台或者多台电脑上建立档案库。因此,所有对版本控制系统的操作,都可以直接在本机端的档案库中进行,包括提交、分支、合并、回退等。然后在联网的时候再将档案发送出去。

在分布式版本控制系统中,开发者可以进行push,将自身档案库中的变更送至其他的档案库;也可以进行pull,获取其他档案库的变更。

版本控制工具应该具备的功能

  • 协同修改:多人并行不悖地修改服务器端的同一个文件
  • 数据备份:不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态
  • 版本管理:在保存每一个版本的文件信息的时候要做到不保存重复数据,以节约存储空间,提高运行效率。这方面 SVN 采用的是增量式管理的方式,而 Git 采取了文件系统快照的方式。
  • 权限控制:对团队中参与开发的人员进行权限控制。对团队外开发者贡献的代码进行审核(git独有)
  • 历史记录:查看修改人、修改时间、修改内容、日志信息。 将本地文件恢复到某一个历史状态。
  • 分支管理:允许开发团队在工作过程中多条生产线同时推进任务,进一步提高效率。

git是什么?

Git是目前世界上最先进的分布式版本控制系统。

其简史如下。天才林纳斯。

其工作原理/流程如下:

  • Workspace:工作区
  • Index / Stage:暂存区
  • Repository:仓库区(或本地仓库)
  • Remote:远程仓库

简单地说就是在代码托管中心(比如GitHub)上创建一个远程库。然后可以通过
* push将本地库的档案上传到远程库。如果有别的团队成员加入,给予权限后,他也可以进行push
* clone将远程库的档案下载到本地库
* pull如果远程库的内容更新了,可以通过pull进行版本更新

  • fork B也可以通过fork复制A的远程库档案到自己的远程库,然后B再进行clone和push操作在自己的远程库上更新了档案。
  • pull request mergeB将档案复制到自己的远程库并做了修改后,可以通过pull request向A发起请求,请求A的远程库接受自己的版本更新,如果A通过了审核就可以将B的版本merge到A的远程库了。

Git命令行操作

git安装

通过在终端输入 git --version 可以查看是否安装了git,这里我已经安装过了,未安装的自行谷歌。

通过which git可以看到git的安装地址,我这里是安装在了 /usr/bin/git

本地库初始化

在本地建立一个文件夹作为本地库,我这里是在桌面建立一个Git文件夹,然后在终端中进入Git文件夹的路径,使用git init进行本地仓库初始化。(注意:生成的 .git 目录中存放的是本地库相关文件,不要删除)

设置签名

  • 项目(仓库)级别仅在当前本地库有效
    git config user.name ferry  #设置用户名ferry
    git config user.email 1359453864@qq.com #设置用户邮箱,主要是为了区分开发人员,跟托管中心的账号密码没有任何关系
    
  • 系统用户级别仅在当前登录的操作系统用户有效
    git config --global user.name ferry
    git config --global user.email 1359453864@qq.com
    
  • 仅仅加了一个 --global, 优先级别:项目级别 > 系统级别
  • 这里两种方式都进行配置。(只要创建了git就必须配置用户名和邮箱。配置全局的之后,如果该文件没有用户名和邮箱则会使用全局的)
  • 信息保存位置:/Git/.git/config 文件 (mac下可以通过command + shift + .显示隐藏文件)

SSH 免密登录 Github

通过终端命令创建ssh key。没有创建过的,会要求确认路径和输入密码,我们这使用默认的一路回车就行。

ssh-keygen -t rsa -C "1359453864@qq.com"

成功的话会在~/.ssh文件夹下生成公钥和密钥。通过cd ~/.ssh进去文件夹,使cat id_rsa.pub查看公钥,并复制。

登录GitHub。Settings –> SSH and GPG keys –> New SSH Key。title随便填,key填入刚刚复制的公钥。

终端输入以下命令,可以看到链接成功了。

ssh -T git@github.com 


我刚刚生成ssh为了截图按快了,将我原先的key覆盖掉了…通过这个教程用新的命令解决了问题:解决同一台电脑生成两份或多份ssh密钥、公钥映射两个或多个GitHub账号)

通过这行命令生成新的密钥

ssh-keygen -t rsa -C "1359453864@qq.com" -f ~/.ssh/id_rsa_me_qq

但是在连接的时候ssh -T git@github.com一直没有成功,提示是config文件有格式错误,修改了很多次都没有成功,最后我将config删除后新建一个,就成功了…


提交本地项目到Github

首先在Github上新创建一个repository远程仓库,并填写项目信息。这里我将前几天用于爬取知网文献信息的代码提交上去。

点击Create repository,就创好一个工程了。

clone工程到本地。首先复制ssh地址,这里我就克隆到刚刚新建的Git桌面文件,方便管理。

通过终端,可以看到工程已经被clone下来了。

接着我在Pycharm中新建一个项目,保存的路径为刚刚clone下来的~/desktop/Git/CNKI_Spider文件夹下

// 进入到clone下来的文件路径
cd ~/desktop/Git/CNKI_Spider
//文件添加到仓库(.代表提交所有文件)
git add .
//把文件提交到仓库,-m参数表示说明
git commit -m "First Commit"
//上传到github
git push

终端完整输出如下:

查看GitHub上的项目,已经上传成功,如下图所示:

这只是一个小教程,说明了git的最最基本概念和操作。接下来会总结一些git的基本操作及其意义。学会git对于一个金融科技的学生是必不可少的事情。 更多git的学习推荐看这个系列视频 Git与GitHub基础全套完整版教程(快速上手,一套搞定)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇