一个git使用教程

https://:.com/jlord/git-it-electron#what-to-install

一个在线Github的功能教学:https://lab.github.com/


看刚才改变的文件的区别。

git diff:

Add GitHub username to Git

添加你的用户名到你的Git配置: (一次性的,所有仓库都是这个名字)

git config --global user.username <USerNamE>

再核查一下:

git config --global user.username


git remote add origin https://github.com/chentianwei411/hello-world.git

git push -u origin master

把master分支推到远程仓库origin。

-u的意思是设置upstream ❓不明白。

提示:

设置URL给一个远程仓库, 改变一个远程仓库url

git remote set-url <remoteName> <URL>

拉:

git pull <remoteName> <branchName>

推:

git push <remoteName> <branch>

增加一个远程仓库:

git remote add <remoteName> <URL>

本地和远程断开:

git remote remove <name>  #默认远程仓库名字是origin


Fork and Clones

fork到你的GitHub账号,然后clone到你的电脑,你的电脑可以链接2个远程仓库,自己的和fork别人的仓库。

可以从别人的仓库pull变化的代码。也可以push request,请求合并。

  1. fork
  2. git clone <自己的url>
  3. 链接到原始的仓库。别人的那个仓库。git remote add upstream <别人的仓库URL>
originhttps://github.com/chentianwei411/patchwork.git (fetch)
originhttps://github.com/chentianwei411/patchwork.git (push)
upstreamhttps://github.com/jlord/patchwork.git (fetch)
upstreamhttps://github.com/jlord/patchwork.git (push)

Branch

接着上面链接了远程仓库后,master变成了gh-pages❕

输入:

patchwork ⮀ ⭠ gh-pages  git status

On branch gh-pages
Your branch is up-to-date with 'origin/gh-pages'.

Github将自动服务和静态主页网页在branch中,叫做gh-pages。这个免费的服务是GitHub Pages。既然你forked创建了一个网页,它的主要branch是gh-pages,代替了master。

改一个分支的name:

git branch -m <newBranchName>

上传一个变动:

git push origin add-chentianwei411


创建一个pull request

你做了一些改动,push到fork的app创建人,并在它的Github上创建一个pull request。对方会选择是否pull. 当被pull后,在本地可以合并,并删除旧分支,还可以删除远程的旧分支。

git merge <branchName>

git branch -d <dd>

git push <remoteName> --delete <branchName>

Pull form Upstream

最后,因为original 变化了。pull从original upstream

git pull upstream gh-pages

在http://jlord.us/patchwork/ 可以看到我的名字chentianwei411


https://help.github.com/articles/github-glossary/#repository

GitHub术语表Glossary

Blame:

描述一个文件中国年每一行最后的一次变更,包括修改,作者,时间。用于跟踪记录一个功能何时增加的,或者哪次提交导致了一个bug。

Diff

在两个commit中的不同,变化。一般用于描述最后移除提交后,增加或移除的代码。

Fetch

从最新的远程仓库下载变化但没有merging them in。

Issue

是和这个仓库相关的被建议的改进,任务,或者问题。Issue 可以被任何人创建(仅公共仓库), 可以被仓库的合作者管理。每个Issue都包括它自己的讨论论坛,可以被标记和分配给一个user。

Pull request

are proposed changes to a repository submitted by a user。

下拉请求是提议的变化。它由一个使用者提交到一个仓库。被仓库的合作者接受或者拒绝。和Issue一样,Pull request有自己的论坛。

SSH key

在一个在线服务上识别你自己的方法,使用编码的信息。

Upstream

当谈论一个分支或一个fork, 在原始仓库中的主分支常常被认为是upstream上游。因为这里(主分支)是其他变化进入的主要位置。 The branch/fork 你正工作的地方则称为downstream下游。

user

一个个人的GitHub账号。


Git Page

特别的格式要求:

  • _config.yml 是自动生成的关于theme的YAML格式文件
  • 你需要一个文件使用YY-MM-DD-title.md的格式
  • JeKyll使用标记语法。
  • 具体要求都在这里:https://jekyllrb.com/docs/posts/


https://lab.github.com/courses/managing-merge-conflicts

学习merge conflicts的解决方法

可以在github.com user interface上解决,也可以在command line或其他本地的tools上解决。

How merge conflicts happen

版本控制让你制造不断增加的代码或文件,保存到历史记录中。 Git操作就像一个线性账单。

在GitHub Flow中,首先,基于base branch创建新的分支。然后,你会增加多个提交commit,这些提交只存在于你新建的当前分支中。最后, 你打开一个pull request提议,让你增加的commit合并到base branch中去,合并这个分支并删除这个分支。

版本冲突就发生在当base branch 被某人改变了,而你使用的是没变之前的base branch。这通常发生在你合并分支之前,已经有他人把他们的分支merge到了base branch.


解决一个简单的冲突:

2个user在一个repository中工作,他们都创建了分支,都在改同一个文件后,打开了pull requests。一个人的请求被merge到master分支,这不会发生问题,但另一个人的pull request则会被拒绝,显示conflict.

  1. 点击“Resolve conflicts”按钮,位于页面底部的“This branch has conflicts that must be resolved”框。
  2. 进入新页面,看到红色高亮的部分: <<<<<< update-config和>>>>>>>>master
  3. 删除主分支上的不同代码,位于========下面,>>>>>>master上面的代码。
  4. 然后,移除merge conflict markers。
    <<<<<<< update-config
    =======
    >>>>>>> master
  5. 点击右上角的“Mark as resolved”,会出现 ✅Resolved all conflicts
  6. 并原位置出现Commit merge 按钮,点击它。回到Conversation讨论版。

⚠️,有时,解决一个合并冲突的最好办法是增加两个分支之外的内容代码,甚至联合所有来自不同分支的变化代码。因此Git需要人为的检查代码并作出适当的调整。

提交合并后发生了什么?

在一个新的merge commit记录中储存这个冲突的解决办法。这样你和你的团队可以继续工作。

另类的解决冲突的办法:

为了解决一个冲突, GitHub可以使用一个叫做reverse merge的办法。即:把master合并到update-config分支上。而不是把冲突分支合并到master上。

这种方法可以让你在分支上测试这个代码,保证✅后,再合并到master。尤其是在master已经处于产品阶段,必须让它无bug的情况。


Resolve conflicts in the Advanced Conflicts pull request

  • 总共2个文件,三个冲突。
  • 其中,一个文件中有2处冲突。
  • 合并冲突标记残余,例如<<<<<。如果你的colleagues在本地解决了合并冲突,但忘记移除标记。

方法和上一节一样。


More complicated merge conflicts:

需要在command line上解决。你可能遇到:

  • 修改一个已经删除的文件,在另一个分支上。
  • 两个分支上,明显的文件改变,以至于Git对待它们为不同的文件。
  • GUI resolution tools 图形界面工具。

git-it 教程,一些git知识点。/ 如何解决merge conflict/ 如何使用Github Pages./Git术语表的更多相关文章

  1. 痞子衡嵌入式:第一本Git命令教程(0)- 索引

    大家好,我是痞子衡,是正经搞技术的痞子.本系列痞子衡给大家讲的是Git命令汇编,共12篇文章,循序渐进地介绍Git操作的完整过程. 在开始Git课程之前,需要先跟大家普及2个重要概念(四度空间.四种状 ...

  2. git 入门教程之紧急修复

    和往常一样,每个人团队开发者都在自己的本地分支上进行日常工作,相互独立又相互联系,一直以来相安无事,可是某天下午,上级领导突然急冲冲的打电话告诉你线上出bug了,需要你紧急修复,下班之前必须解决! 我 ...

  3. git 入门教程之撤销更改

    撤销更改 相信你已经了解了 git 的基本概念,也清楚了工作区,暂存区和版本库的关系,现在让我们用所学的知识继解决实际问题吧! 背景 正常看得见的目录是我们最为熟悉的工作区,在工作中不可能总是100% ...

  4. [转载] Ubuntu 12.04下安装git,SSH及出现的Permission denied解决办法

    如何安装ssh http://os.51cto.com/art/201109/291634.htm 仅需要阅读至成功开启ssh服务即可 http://www.linuxidc.com/Linux/20 ...

  5. 解决冲突-git入门教程

    人生不如意之事十之八九,合并分支往往也不是一帆风顺的. 准备新的feature1分支,继续我们的新分支开发: $ git checkout -b feature1 Switched to a new ...

  6. git使用教程指南

    前言  Git是一个开源的分布式版本控制系统.其核心就在于版本控制.  在实际编码过程中,我们往往会忘记上次对文件的修改内容.若是刚刚修改的还好说,撤销操作即可.但若这是你昨天做的修改并关闭了IDE呢 ...

  7. Git使用教程【转】

    Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是 ...

  8. Git版本控制教程

    Git 版本控制入门 不了解Git请查看权威Git书籍 ProGit(中文版). 一份很好的 Git 入门教程,点击这里查看. Git客户端下载地址: 官方Git - TortoiseGit - So ...

  9. git详细教程

    Table of Contents 1 Git详细教程 1.1 Git简介 1.1.1 Git是何方神圣? 1.1.2 重要的术语 1.1.3 索引 1.2 Git安装 1.3 Git配置 1.3.1 ...

随机推荐

  1. __FILE__ 与 $_SERVER['SCRIPT_FILENAME']的区别

    二者都表明了本文件的绝对路径,区别在于,$_SERVER['SCRIPT_FILENAME']指向当前执行脚本的绝对路径:__FILE__指向当前文件的绝对路径:也就是写在哪个文件里就是哪里. 例子: ...

  2. Oracle HA 之ADVM和ACFS

    --ADVM ADVM主要是为了使除了数据库之外的第三方应用程序也可以使用asm存储,这样不限于使asm局限于自家的数据库领域.要想使用ADVM首先必须安装grid,已经创建好了asm磁盘,asm磁盘 ...

  3. Django - rest - framework - 上

    一.快速实例 http://www.django-rest-framework.org/tutorial/quickstart/#quickstart http://www.cnblogs.com/y ...

  4. mysql 数据操作 单表查询 group by 分组 目录

    mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...

  5. mysql 数据操作 单表查询 使用正则表达式查询

    SELECT * FROM employee WHERE name REGEXP '^ale'; SELECT * FROM employee WHERE name REGEXP 'on$'; SEL ...

  6. mysql 数据操作 单表查询 where约束 between and or

    WHERE约束 where字句中可以使用: 比较运算符:>< >=  <=  != between 80 and 100 值在80到100之间   >=80  <= ...

  7. centos linux系统日常管理复习 CPU物理数逻辑核数,iftop ,iotop ,sar ,ps,netstat ,一网卡多IP,mii-tool 连接,ethtool速率,一个网卡配置多个IP,mii-tool 连接,ethtool速率 ,crontab备份, 第十八节课

    centos linux系统日常管理复习 物理CPU和每颗CPU的逻辑核数,uptime ,w,vmstat,iftop ,iotop ,sar ,ps,netstat ,一个网卡配置多个IP,mii ...

  8. centos shell基础 alias 变量单引号 双引号 history 错误重定向 2>&1 jobs 环境变量 .bash_history source配置文件 nohup & 后台运行 cut,sort,wc ,uniq ,tee ,tr ,split, paste cat> 2.txt <<EOF 通配符 glob模式 发邮件命令mail 2015-4-8 第十二节课

    centos shell基础知识 alias  变量单引号 双引号   history 错误重定向 2>&1  jobs  环境变量 .bash_history  source配置文件 ...

  9. nodejs通过代理(proxy)发送http请求(request)

    有可能有这样的需求,需要node作为web服务器通过另外一台http/https代理服务器发http或者https请求,废话不多说直接上代码大家都懂的: var http = require('htt ...

  10. web项目读取classpath路径下面的文件

    首先分两大类按web容器分类 一种是普通的web项目,像用Tomcat容器,特点是压缩包随着容器的启动会解压缩成一个文件夹,项目访问的时候,实际是去访问文件夹,而不是jar或者war包. 这种的无论你 ...