美文网首页程序员
Git和GitHub的正确打开姿势

Git和GitHub的正确打开姿势

作者: 闪电的蓝熊猫 | 来源:发表于2018-03-29 16:52 被阅读156次
Git图片

起因

都说做攻城狮是需要积累的,果然不错,积累到一定阶段就会发现自己已经弄了很多东西,但是这些东西都很零散不好管理。然后就想,有什么工具可以帮我管理这些东西呢?这时候,一个以前一直觉得没用的东西就跳入脑海了:GitHub。

没错,GitHub就是用来管理零散的物件的仓库,而Git则是配套的工具。

Git和GitHub的基本概念

在学习一个新工具的时候,我们首先需要了解关于新工具的一些基本概念。这是非常重要的一个步骤,如果连基本概念都不了解,你能用只不过是运气好而已,遇到一点问题就会不知所措。要解决这些问题最根本的就是要靠这些基本概念,也就是我们平常所说的基础。那么,Git和GitHub的基本概念有哪些呢?

Git是什么?

Git是全球最先进的分布式版本控制系统。重点是版本控制系统,前面的都是噱头。

那么什么是版本控制系统呢?

想象一个这样的场景:你正在写一个文件,名叫游戏策划案.docx。写完之后,给老板看,结果老板说要改,你一想,那就改吧,谁让他是老板呢。接着,你的游戏策划案(改).docx完成了,继续给老板过目。

这时候,老板办公室正好有其他人在,就一起看了这份文档,其他人自然也想发挥一下他们的聪明才智,就提出了各种各样的意见,老板一拍桌子,改!你就回去继续改你的策划案了。经过了无数的挣扎和煎熬,你的游戏策划案(改改).docx完成了。

然后,你满怀希望地又走进了老板办公室,结果发现老板办公室又有人了。他们也对这个策划有点看法,于是你就又回去修改了,这时候你发现要写得东西太多,你想让别人帮忙一起弄,然后拷贝了一份游戏策划案(改改)-副本.docx给了他。又经过了一番挣扎,终于把游戏策划案(改改改).docx完成了,这时候同事的游戏策划案(改改改)-副本.docx也完成了,你就纠结了!怎么合并这两份文档呢?

好不容易将文档合并好了,你又满怀希望地去了老板办公室,老板看了你的策划案之后,悠悠的说了一句:“还是之前的策划比较好”。Duang,你就倒地了,上哪去找之前的策划案啊?

示例

这个时候,就需要Git出马了。你可以将所有的修改通过Git提交,保存每一次修改的副本,这样你就可以在任何时候获取到以前改过的版本。更棒的是,它可以让你同事也受益,你不用再拷贝文档给同事让他改,而是从Git仓库中获取文档,改完之后提交,你使用Git扫一眼就看出有什么差别,这样就太省事了。

注意:所有的版本控制系统都只能跟踪文本文件的改动,比如txt文件、网页、程序代码等等,Git也不例外。

GitHub是什么?

GitHub

GitHub是一个仓库。使用Git总是需要一个保存这些文件的地方,这个地方就是仓库。你可以在本地创建一个仓库,也可以使用远程仓库,GitHub就是一个远程仓库。你可以将代码或者文档保存到这个仓库里,别人也可以访问你的仓库,从你的仓库中获取你想要分享的重要内容。同时,其他人修改了仓库中的内容也可以上传(当然需要经过你的同意),这样,你的内容就更完整,更充实了。

Git在Windows上的安装

因为笔者是在Windows下进行开发,所以只介绍Windows下的安装方式。其实很简单,去官网下载安装程序,然后一路next安装完成即可。安装完成后,在某一个目录下面右击查看是否有Git的按钮,如果有,表示已经安装成功:

右键菜单
点击Git Bash Here按钮,打开Shell,我们还有最后一步要设置。在命令行下面输入:
git config --global user.name "Name"
git config --global user.email "email@email.com"

用你的名字和电子邮件地址替换上面的Name和email@email.com。因为Git是分布式版本控制系统,所以每个机器都需要又自己的“门牌号”,name和email就相当于是你机器的门牌号。不用担心有人故意冒充别人的门牌号,这是有办法可以查的。

Git的基本操作

设置好后,我们来熟悉一下基本操作。最常用的操作有:

  • 初始化仓库
  • 添加文件
  • 提交修改
  • 状态查询
  • 文件比较
  • 日志查看
  • 版本回滚
  • 删除文件
初始化仓库

随便在哪个目录下创建一个文件夹,取名为repository,表示仓库。当然你可以随便取什么名字,只要不取中文名就可以(路径中也不能有中文)。

在repository文件夹下启动Git命令行,输入下面的命令:

git init

当看到有如下的输出的时候,仓库就初始化好了:


初始化仓库

打开repository文件夹,发现文件夹下面有一个.git的隐藏文件夹:


初始化仓库完毕
添加文件与提交修改

在repository目录下新建一个readme.txt文件,输入两行文字:

Git is a very useful tool.
GitHub is a very wonderful repository.

我们只需要简单的两步就可以将readme.txt文件纳入Git的管辖下。第一步:将文件添加到仓库。第二步:提交文件到仓库。转换成Git命令就是:

git add readme.txt
git commit -m "Add readme file"

解释一下'git commit'命令,-m参数后面输入的是本次提交的说明,比如"Add readme file"这种。说明必须是有意义的,说明本次提交了哪些内容,做了什么修改,这样别人不用看你的文件光看说明就可以知道你做了什么,便于协作。

添加文件与提交修改
提醒:每次提交都必须有有意义的说明,否则时间长了就会找不到文件!!!
状态查看

继续修改文件,添加一行I use git to control my files.。这时候,有一个快递来了,你去收了个快递,回来之后忘记了这个文件有没有提交怎么办?哼哼,别急,有方法。在Shell中输入git status就可以看到了:

git status效果
Git提示,有一个文件修改了但是没有提交,修改的文件是readme.txt。
文件比较

一个激灵,你忘了修改了什么东西,于是使用另一个命令来比较文件:

git diff readme.txt

git就提示了你有什么东西修改了:

git diff提示
确定无误之后,你使用git add和'git commit'命令上传了文件。为了确定上传成功,你又使用了'git status'命令查看状态,发现上传成功了。
日志查看与版本回滚

某天夜里,你加班到很晚,心里非常烦躁,咒骂着老板没人性,在文档里写下了My boss is so stupid并且提交了。第二天,你清醒了,那个着急啊,写了老板坏话还提交了,要是被老板看到了这不得翻了天吗。可是你忘了提交的版本号,这可怎么办?赶紧查git手册,所幸发现了一条命令可以查看日志,于是你兴高采烈的输入了git log:

git log
终于抓到了罪魁祸首,就是那个'my boss is stupid'的版本。这下你就放心了,志得意满的输入了回滚命令'git reset --hard HEAD^'
git reset
Git提示你已经回到了7123466版本,你松了一大口气,因为这版本号是上一个版本的版本号。赶紧上传覆盖,以免其他人看到。

HEAD^ 表示上一个版本,HEAD^ ^ 表示上上一个版本,HEAD^ ^ ^
嘛,相信你不会想这么用。我们可以直接用版本号来替代,版本号不用输完整,只需要前几位让Git能准确找到版本就可以了。比如,上面的命令可以换成git reset --hard 7123466,一样可以达到目的。

小提示:如果git log出来的日志太多,你已经查到想要的版本,可以按q键退出日志查看命令,注意不能用ctrl+c,会无法继续输入命令,切记切记!

删除文件

时光荏苒,你发现readme文件没有用了,这时候你就想将它从仓库中删除,于是,你输入了'git rm readme.txt'命令:


git rm效果

Git提示,你已经把readme文件删掉了,你长长的呼出一口气,事情总算是完结了。

分支

代码管理中,最常用的就是分支功能。在开发版本上打一个分支用于修复BUG,修复之后把分支合并到开发版本中,这几乎是工作的常态。
要查看当前的分支状况,我们需要用到的命令是git branch


可以看到,当前我的版本中有两个分支,master和test。其中,test显示为绿色字,并且前面还有一个*号,说明我们当前所操作的就是这个test分支。要切换分支也很容易,使用命令git checkout 分支名就可以了:

如果你想创建一个新分支,可以使用git checkout -b 分支名

现在你在分支上做了一半的工作,想把它推送到远程仓库,你可以使用这个命令:

git push origin 分支名:分支名

比如:



分支如愿的推送到远程仓库。

当你在新分支上的工作完成,想将新分支的内容合并到老分支上时,首先必须要切换到老分支上,然后使用git merge 新分支名来合并:


这里合并没有什么问题,非常顺利。当然也有不顺利的时候,这时候你就要处理冲突了,有时候冲突解决起来是个非常麻烦的事情。所以,最好的方式就是解决完一个问题就合并一次,这样,在多人协作的时候效率会高点。

末了,新分支也没啥用了,删掉吧:


删除之前要注意,你不能删除正在操作的分支。也就是说,如果你想要删除newtest分支,你必须先切换到别的分支上(例如master),然后再调用 git branch -d newtest来删除newtest分支。删除完之后检查一下,确保分支确实被删除了。
剩下的是一些随着时间流逝,慢慢才会用到的命令
命令 注释
git add . 添加所有未纳入仓库管理的文件
git checkout . 丢弃所有修改,将文件恢复到之前的干净状态
git tag 用于给代码打上标签,标记当前代码的状态是什么。常见的形式如:git tag -a v0.0 -m "注释"。表示当前代码版本号为0.0,并且可以加上注释来说明这个版本是做什么用的(在封板的时候极为有用)

GitHub的基本操作

首先,到官网去注册一个账号,根据它的提示一步步来就可以。

GitHub注册页面

完成注册后就登录,在界面上点击右侧的“start a project”或者右上角的“+”号选择“new repository”


登录进去之后的界面
创建repository界面

给你的仓库取一个响亮的名字,比如大名鼎鼎的Hello World,填上描述,选择Public托管方式(事实上你也没法选Private,因为Private是要保护费的),然后点击左下角的“Create repository”按钮就成功创建了一个仓库。

完了,GitHub的准备工作就完成了。

Git与GitHub的交互

为了使本地的Git和远程的GitHub能相互识别,我们需要让双方都保存一份凭据。

创建凭据(SSH Key)

打开Git Bash,输入下面的命令

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

一路回车,不需要设置其他的东西,完成之后再用户主目录里找到一个.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是凭据(SSH Key),id_rsa里存放的是私钥,id_rsa.pub里存放的是公钥。打开id_rsa.pub,复制其中的内容。

设置GitHub账户中的SSH Key

点击头像旁的小下三角按钮,在弹出的菜单中选择Settings。在左侧的Personal settings里选择“SSH and GPG keys”。点击SSH keys右侧的New SSH key按钮:


设置界面

将复制的公钥拷贝到Key下方的编辑框里,设置一个合适的Title(比如Company),点击Add SSH key。我们的凭据就设置好了。

从远程库中克隆

上一步我们创建了一个Hello World仓库,怎么把它down到本地呢,很简单,使用git clone命令就可以了。

git clone
clone的路径可以点击项目中的“Clone and download”按钮找到:
路径
点击图中框起来的按钮,你就可以找到SSH路径了。

down下来之后,你就可以使用上面的命令来操作本地库了。操作完成后,使用git push就可以将本地仓库中的内容推送到GitHub中:

git push命令

如果你网页上对文件做了改动,那也没什么关系,在对应的目录中使用'git pull'就可以把最新的文件down下来了:


git pull命令

怎么样,是不是非常简单?对攻城狮来说简直就是天大的福音,顿时被一股巨大的幸福感包围!

用命令行不方便?不要紧,我们有图形界面!

.net Framework 4.7.2 离线安装包
sourcetree安装包
安装完成之后的配置
绕过注册的方式
https://blog.csdn.net/mjg0101001/article/details/78653994
添加ssa密钥的方式

小结

经过上面的学习,相信你已经可以使用Git和GitHub了。当然,这只是初步的使用,我们学习的目的就是为了使用,所以在文章中没有涉及到任何复杂的东西(甚至连绕个弯的东西都没有),只要能开始使用,剩下的一切都好说。

参考资料

Git教程:非常好的git教程
GitHub指导:官网的东西不可不看

相关文章

网友评论

    本文标题:Git和GitHub的正确打开姿势

    本文链接:https://www.haomeiwen.com/subject/tvpycftx.html