github 是最大的开源项目托管平台,是一个网站。但是它不仅仅只能托管开源项目或代码,还能作为我们备份重要资料的平台,更重要的是我们可以通过这个平台来学习和获取别人的代码,避免重复造轮子,还可以多人协同工作。git 的命令行还在学习中,我使用的是 windows 系统,使用 github for windows 就能处理我们日常生活中的大部分备份需求和其它事务处理。

使用 github for windows

一、准备

step 1: 注册 github 账号

打开 github 官网 https://github.com,依次填写用户名、邮箱地址、密码

step 2: 下载和安装 github for windows 客户端

下载客户端 https://git-scm.com/downloads,会先下载一个可执行文件,然后选择可执行文件继续下载,可能下载多次都不成功,毕竟是国外的服务器,不稳定和速度慢是正常的,多试几次就好了。安装完成后在桌面有这样的图标:

二、备份

step 1: 创建新仓库

去 github 官网创建新仓库。github 上每一个人的项目都是一个仓库(repository)。每个人账号下的仓库名不重名就行,即便是和别人的仓库重名了也无所谓。下面以我跑步记录的数据为例说明接下来的步骤。

登录成功后,可以看到我们的用户名:

创建新仓库:

step 2: 启动客户端,登录账号

启动 github for windows 客户端,并登录账号:

保存后,就选择好了项目拥有者和项目提交者。接下来我们可以克隆项目到本地了,在本地借用我们熟悉的编辑工具干活,以便后面备份到 github 网站。

step 3: 克隆项目

将新创建的仓库到本地:

点击"Open in Desktop"将启动客户端,然后我们选择在本地保存的路径,选择好后,就开始克隆了:

克隆好后,在我们选择的路径下将会增加 readme 文件和 .git 文件夹:

step 4: 处理(增删改)本地文件

在本地新增一个文件----跑步详情.xlsx,填写跑步详情,完成后保存。这样一个过程就完成了本地文件的一次修改。

step 5: 将文件提交到暂存区

在工作区完成操作后,我们需要将文件提交到版本库:

在 changes 栏目下,可以看到我们更改的文件,无论是新增、修改、删除都有痕迹可寻。选择需要的文件提交到暂存区。如果发现改错了,后悔提交了,可以执行"Undo"操作,此次提交作废,继续在本地更改文件到满意为止:

step 6: 将文件同步到 github

只有将文件同步到 github 上之后,别人才能看到这个文件,以便于加入修改,fork 仓库提供意见,pull request(拉取请求) 并且 merge(合并)等等。点击"Sync"进行同步。

至此,我们的文件备份工作完成。后面操作最多的便是重复修改和增加文件了,重复备份操作 step 4 - step 6 即可完成。

step 7: 重复备份工作

重复备份工作,为分支叙述做准备。在本地 running 文件夹下新增一个文本文档----跑步术语.txt,如下:

然后提交、同步到 github 上。注意:使用记事本编辑文本文档之后,会出现乱码的问题,我用的 notepad++ 编辑器,选择的是 utf-8 without BOM 格式,这里截图用记事本,是因为这样做截图尺寸更小。

三、分支

1. 创建新分支

假设一个场景,上面的跑步术语我像积累英语单词一样每天都新增几条。但是后面我发现对于配速的解释不够明确,我想要加一些解释性的例子。现在我就可以新建一个分支来加解释说明。创建 example 分支:

在配速术语后增加例子说明:

2. 提交当前分支

提交当前分支,并且将其同步到 github 上。

3. 合并两个分支

合并两个分支有两个方法:

(1). 通过 github 网站来合并(推荐):

这种方法更简单些,也更容易理解。同步 example 分支到 github 网站上后,在网站上可以看到提示"有新增的分支可作比较和拉取需求":

点击"Compare & pull request"去选择 Compare 对象,然后 Create pull request:

如果 base 分支和 compare 分支选择错误了,可手动选择。选择 Create pull request 将 example 分支的内容"拉"到 master 分支中。然后合并分支:

至此我们的分支合并操作完成。可以从 github 网站上看到 master 分支里的内容:

说明合并成功了,那么 example 这个分支也就不需要了,它的任务完成了,可以删除了:

点击"2 branchs"可显示具体分支,并操作分支:

然后"2 branchs"就变成了"1 branch",删除分支成功。

(2). 通过 github for windows 客户端来合并

新建一个分支 example2 来演示通过 github for windows 客户端来合并分支操作。新建分支,修改本地文件,提交,发布等操作同"通过网站操作"相同,客户端的分支将呈现如下:

需要改变当前分支,example2-->master,然后把用于比较的分支变成 example2,master-->example2:

然后点击"Update from example2",从历史记录里可以看到"merge"字样,说明已经合并了:

最后点击"Sync"将合并同步到 github 上。

删除 example2 分支,删除分支也可以在客户端完成:

四、fork

有这样一个场景,别人看到我的跑步术语某一条描述不正确,他想改一下。于是我可以把他加入到贡献者中,我们愉快的合作,但是这样太危险了吧,我们都不认识,他改错了怎么办?我觉得他改之前我们可以交流一下,我也可以检查一下他的更改,再决定要不要采用他的更改。现在就可以用到 fork 了,我的理解 fork = clone + update + sync(commit) + merge(pull request) 。

1. clone

同学 A(lixinjie1992) 登录他的账号,看到了我的跑步术语,觉得好奇,打开一看认为某处需要改一下。于是他 fork 一下,clone 到自己的账户中:

点击 fork,就 clone 了一份仓库到自己的账户下:

如果改动较小,就是纯文本编辑的话,就直接在 github 网站上编辑更快:

2. update

点击要修改的文件,进入文本编辑器修改,然后填写修改说明,再提交:

3. commit

4. pull request拉取一次请求:

与上一次改变前作比较:

Create pull request,等待仓库拥有者回复:

过了一段时间,同学 B 发现了 pull request 这里有一条消息:

点击查看,然后点击改变的文件,可选择合并且给同学 A 留言感谢他,或者不合并且给他留言指明不合并理由:

最后"confirm merge"确认合并。

如果是改动比较大的话,就需要将项目 clone 到自己的电脑里,在工作区修改好后 commit(提交),sync(同步),然后(pull request)。剩余步骤与上面类似。

五、多人协同工作

将其他人的账户添加进 collaborators,就可以进行协作了。以同学 B(lxj1765990267) 的 running 为例,添加同学 A(lixinjie1992),用来多人协作工作:

running-->contributor-->settings-->collaborators:

添加进 collaborators 后,最大的区别就是,不用再经过同学 B 同意了,同学 A 就可以直接参与修改 running 和 merge 工作。

github 和 github for windows 学习使用总结的更多相关文章

  1. Github和Github for windows的使用简介

    很多程序员都把自己开发的代码放到Github上,方便自己管理也有利于别人查阅.所以这两天我也捣鼓了一下这个东西,现在把怎么使用Github和Github for windows简单的总结一下. 1.现 ...

  2. caffe windows 学习第一步:编译和安装(vs2012+win 64)

    没有GPU,没有linux, 只好装caffe的windows版本了. 我的系统是win10(64位),vs 2012版本,其它什么都没有装,因此会需要一切的依赖库. 其实操作系统只要是64位就行了, ...

  3. mac上将代码上传到github以及github对100M以上文件限制上传的处理(lfs)。

    前言 有时我们会写一些小程序来学习新的知识,但是完事之后过一段时间可能会忘记,最好的办法就是找到原来的代码看一看.现在可以将代码免费托管到一些网站上,其中最著名的非github莫属了, 今天就把这个过 ...

  4. window下配置SSH连接GitHub、GitHub配置ssh key(转)

    转自:http://jingyan.baidu.com/article/a65957f4e91ccf24e77f9b11.html 此经验分两部分: 第一部分介绍:在windows下通过msysGit ...

  5. window下配置SSH连接GitHub、GitHub配置ssh key

    window下配置SSH连接GitHub.GitHub配置ssh key   此经验分两部分: 第一部分介绍:在windows下通过msysGit(Git for windows.Git Bash)配 ...

  6. Mac下GitHub以及GitHub Desktop使用实战

    Hub是一个面向开源及私有软件项目的托管平台.开源代码库以及版本控制系统,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub.通常在Windows下使用GitHub的教程是非常多的, ...

  7. 敬爱的GitHub” —— 致GitHub的一封地下信   英文原文:"Dear GitHub…" An Open Letter to GitHub

    敬爱的GitHub” —— 致GitHub的一封地下信 英文原文:"Dear GitHub…" An Open Letter to GitHub 最近,一个由开源名目(包含一些最盛 ...

  8. caffe windows学习:第一个测试程序

    caffe windows编译成功后,就可以开始进行测试了.如果还没有编译成功的,请参考:caffe windows 学习第一步:编译和安装(vs2012+win 64) 一般第一个测试都是建议对手写 ...

  9. 【Markdown】Writing on Github - 在GitHub上写作

    Writing on GitHub https://github.com/shalliestera/Writing-on-GitHub-Chinese-Translation Markdown 基本语 ...

  10. GitHub Actions & GitHub Secrets

    GitHub Actions & GitHub Secrets tokens & private variable GitHub Secrets https://github.com/ ...

随机推荐

  1. 异步编程系列第02章 你有什么理由使用Async异步编程

    p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...

  2. Entity Framework 数据库先行、模型先行、代码先行

    数据库先行(Database First):基于已存在的数据库,利用某些工具(如Vs提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修改这些自动生成的代码及匹配文件. 模型先 ...

  3. Git避免输入用户名和密码

    1. 在系统盘/用户/用户名目录下新建名为 _netrc 的文件: 2. 修改 _netrc 文件内容为“  machine git.mangning.comlogin xxxpassword xxx ...

  4. 扩展lamda表达中distinct按照字段去除重复

    首先,我们定义一个Student类来测试. public class Student { public int ID { get; set; } public string Name { get; s ...

  5. es6 中增强的对象字面量

    http://www.cnblogs.com/Wayou/p/es6_new_features.html 对象字面量被增强了,写法更加简洁与灵活,同时在定义对象的时候能够做的事情更多了.具体表现在: ...

  6. placeholder的样式设置

    在input框中有时想将输入的字和placeholder设为不同的颜色或其它效果,这时就可以用以下代码来对placeholder进行样式设置了. ::-webkit-input-placeholder ...

  7. Intellij IDEA 导入 eclipese项目之后,中文注释乱码解决方案

    首先,看导入后整个IJ界面: 可以看到注释是乱码,要解决问题就跟我开始做吧,看右下角有个"UTF-8",点一下选择"GBk",选择"Reload&qu ...

  8. PHP 命名空间(namespace)

    PHP 命名空间(namespace) PHP 命名空间(namespace)是在PHP 5.3中加入的,如果你学过C#和Java,那命名空间就不算什么新事物. 不过在PHP当中还是有着相当重要的意义 ...

  9. linux lin命令

    ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln –s 源文件 目标文件. 当我们需要在不同的目录,用到相同的 ...

  10. Hibernate @OneToMany等注解设置查询过滤条件等

    1.如实体PdOrg对象中有users对象,数据库user表有字段DEL_FLAG(0:删除:1:未删除): private List<User> users= new ArrayList ...