github使用

一。fork项目以及保持同步


1,首先fork 别人的一个项目:

fork

2,在自己的账户下找到刚才的项目,复制自己项目地址

github 指针HEAD

3,clone到本地:

git clone


4,如果项目有依赖包,还要安装依赖包。一般 bower install 即可(有bower.json文件时)。

5,fork 之后保持同步(windows环境)

    (1)git remote -v  ;

这个命令用于查看所有远程库(remote repo)的远程url, 如果只输入git remote就是列出所有远程库。

origin 自己github上的项目

(2)发现没有原作者的项目地址,git命令: 

git remote add upstream  原作者项目url;

git remote add upstream

这个命令用于添加原作者remote repo(远程库), 该操作只需操作一次即可 这个时候输入git remote -v,会得到结果:

(3)可以用git status命令查看当前改动;

(4)保持同步:

git fetch('拿来、取来') upstream('上游、上行') 

git fetch upstream

git checkout('检验、检出') master

git checkout master

接下来就是合并这两个分支,将原作者项目的修改同步到自己这里(注意还是指本地项目,不是自己Github空间里的项目)。

git merge upstream/master

本地同步完成后,同步到自己的github上:

git push origin(‘起源、原点’) master

至此, origin的master branch已经于原作者项目同步了。

username and  password
up-to-date

保持同步的小结:

保持同步可以用四个命令,按顺序是:
git checkout master ,  git fetch upstream, git rebase,  git push。


NOTE:


更新working branch(当前工作的branch)


。之所以需要这么做, 是因为, 假设你开发花了三天时间. 而三天之内upstream上面更新过. 然后, 如果你在这个时候提交PR, 理论上是不能merge的. Git会报错, 因为它发现你开始工作的节点与upstream当前的HEAD指针不同了.

。当然, 如果这三天upstream上没有任何更新, 你的PR就可以随时merge, 因为你的代码是基于未改动的upstream master写的, 所以不会出现conflicts

。更新working branch, 相当于: 把upstream master上的改动应用到当前的working branch. 结果就是, 可以假装你的working branch是基于改动后的upstream master写的

。git checkout master, 然后git fetch upstream, 然后git merge 或git rebase

     ..首先切换到master branch (origin的master branch)是获取upstream上面所有的更新, 并获取HEAD指针。
     ..理论上, git merge和git rebase 此时 都可以更新origin的master branch. 强烈推荐使用git rebase master. 原因见下文

。git checkout [workingBranch], 然后git merge master或git rebase master

     ..这两个命令都是把master branch(当然, 是origin上的master branch)更新的内容应用到working branch上面.
     ..区别在于, 使用git merge, 会让你当前在working branch上面已经做的更改与upstream master的更改在timeline上出现分支. 而使用rebase, 会把你的更改加到upstream master更改的后面, 结果是整体时间轴呈线性的, 没有分岔。
     ..也可以使用git rebase -i master来实现交互式rebase, 这一步骤一般是在提交PR之前做, 允许用户squash commit (合并commit,把之前的几次commit合为一个)
     ..如果自己当前的branch有过改动也没关系, 在rebase的过程中, 会让你处理conflicts, 处理好之后用git add [files]提交改动后的特定文件或者用git add .提交全部文件,即可完成rebase

至此, origin上的working branch已经与原作者没有冲突, 可以随时merge。


关于push


。首先配置一下全局环境, git config --global push.default simple

。第一次push到some branch的时候用一次git push -u origin [someBranch] (效果等同于git push --set-upstream origin [someBranch]). 以后再要push到这个branch只需要git push就可以了, 前提是, 你在这个branch上.


关于branch


。本地删除branch是git branch -d xxx.
       ..如果有未提交的内容, 想强行删除branch, 就是git branch -D xxx. 谨慎使用, 这样会让你的未提交内容丢失

。如果想在Github里删除名为dev的branch, 命令是git push origin :dev


Commit


。git commit是把当前的改动放到Staging area(一个缓冲区)

。记得使用git commit -m "[commitMessage]"

Commit Message的写法:

      。基本格式: 类型: [主题]

       。类型分为如下几种:

feat: Feature的缩写, 新的功能或特性

fix: bug的修复

docs: 文件修改, 比如修改应用了ngDoc的项目的ngDoc内容

style: 格式修改. 比如改变缩进, 空格, 删除多余的空行, 补上漏掉的分号. 总之, 就是不影响代码含义和功能的修改

refractor: 代码重构. 一些不算修复bug也没有加入新功能的代码修改

perf: Performance的缩写, 提升代码性能

test: 测试文件的修改

chore: 其他的小改动. 一般为仅仅一两行的改动, 或者连续几次提交的小改动属于这种

       。作用域:

这个参数用来描述这次改动发生的位置.
比如更改了css文件, 就可以把"css"放在这里. 比如更改了JS文件, 可以把"js"放在这里
对于多个作用域, 可以用逗号分隔. 比如"html, png"

       。主题:

简略描述改动了什么
用英文写, 用现在时, 不要用过去时. 最开头不需要大写
中间可以有逗号, 但结尾不要有句号
细节写在PR的详细内容里, 不需要写在这里

       。示例

改动1: 在JS文件里修复了一个可能会使HTML不显示结果的bug
git commit -m "fix(js) fix a bug that may cause rendering issue of HTML"

改动2: 在HTML里面加入了处理浏览器兼容性的代码
git commit -m "feat(html) add code for browser compatibility"

改动3: 优化了AngularJS名为mainSvc的Service异步发送HTTP request性能
git commit -m "perf($service) enhance async perf of mainSvc sending HTTP request"

Pull Request

标题采用默认设置即可. 默认为commit (或squash之后commit) 的commit message。详细内容栏:

在第一行加上引号内的内容, "- [ ] LGTM". 别人review你的代码之后就在这儿给你打个勾, lgtm是look good to me的缩写.

Review别人代码的时候, 如果觉得没问题, 打钩之后在底下评论"LGTM"

支持Markdown和Emoji

查看别人的PR

review别人PR的时候, 建议下载到本地, 查看后再确定是否通过

项目路径中找到.git/config, 在upstream底下加上: fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*

配置好之后, git fetch upstream

在github上找到你想要review的PR的编号, 如果是3, 就在本地, git checkout pr/3, 然后就可以看到改动之后的代码了

Log与Reflog

git log用来查询repo的版本变动情况. 如果有需要的话, 可以通过commit ref来恢复

建议使用git log --oneline --decorate --graph作为查询命令

git reflog用来查询本地的操作历史. 确切一点说, 是查询HEAD的变化情况. 每一次HEAD变动, 都会记录在reflog里


二。Creating Project Pages manually

原文:https://help.github.com/articles/creating-project-pages-manually/#make-a-fresh-clone

1,Make a fresh clone

$ git clone github.com/user/repository.git     (# clone our repository)

git clone 

2,Create a gh-pages branch

$ cd repository

$ git checkout --orphan('孤儿‘) gh-pages 
(# Creates our branch, without any parents (it's an orphan!))
(Switched to a new branch 'gh-pages')

$ git rm -rf .  
(# Remove all files from the old working tree)
(rm '.gitignore'  ···)

git checkout --orphan gh-pages
git rm -rf .

3,Add content and push

Now you have an empty working directory. You can create some content in this branch and push it to GitHub. For example:

$ echo "My Page">index.html

$ git add index.html

$ git commit -a -m "First pages commit"

$ git push origin gh-pages

4,Load your new GitHub Pages site

After your push to thegh-pagesbranch, your Project Pages site will be available at 'http(s)://<username>.github.io/<projectname>' .

二(续)Creating Pages with the automatic generator

https://help.github.com/articles/creating-pages-with-the-automatic-generator/


三。github提供的提示


1,create a new repository on the command line

echo "# git-testing" >> README.md
git initgit add README.md
git commit -m "first commit"
git remote add origin https://github.com/kingrychen/git-testing.git(示例)
git push -u origin master

2,push an existing repository from the command line

git remote add origin https://github.com/kingrychen/git-testing.gitgit
push -u origin master

3,import code from another repository

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容