学习笔记-github入门与实践

来源:互联网 发布:linux 发送at指令 编辑:程序博客网 时间:2024/05/02 06:12

一.什么是git,github?

GitHub 与Git 是完全不同的两个东西。在Git中,开发者将源代码存入名叫“Git 仓库”的资料库中并加以使用。而GitHub 则是在网络上提供Git 仓库的一项服务。也就是说,GitHub 上公开的软件源代码全都由Git 进行管理。

 

Pull Request 是指开发者在本地对源代码进行更改后,向GitHub中托管的Git 仓库请求合并的功能。

 

温馨提示:请安装最新的git软件。(这个很重要啊!)

二.部分git命令学习

1.      设置SSH Key:$  ssh-keygen  -t  rsa  -C "your_email@example.com"

2.      查看id_rsa.pub : $  cat  ~/.ssh/id_rsa.pub (里面有公钥)

3.      与GitHub通信:$  ssh  -T  git@github.com (然后会提示你输入密码:这时候输入你在创建公钥和私钥时的密码)

4.      clone已有的仓库:$  git  clone git@github.com:zhujianing/Hello-World.git(后面的链接是仓库的URL地址)

执行git clone命令后我们会默认处于master 分支下,同时系统会自动将origin 设置成该远程仓库的标识符。

5.      $  git  status  查看仓库的状态

6.      通过git add命令将文件加入暂存区:$  git  add  hello_world.php

7.      通过git commit命令提交历史记录:$  git  commit -m  "Add hello world script by php" 后面引号的部分是提交信息,是对这个提交的概述。可以将当前暂存区中的文件实际保存到仓库的历史记录中。通过这些记录,我们就可以在工作树中复原文件。向本地的分支提交更改

1)        $ git commit -am "Add feature-C" 连续执行 git add 和 git commit

2)        $ git commit –amend 修改上一条提交信息,可以使用git commit --amend命令。

3)         

8.      通过git log命令查看提交日志:$ git log 

1)        --pretty=short:如果只想让程序显示第一行简述信息,可以在git log命令后加上--pretty=short。这样一来开发人员就能够更轻松地把握多个提交。

2)        $ git  log  README.md:显示指定目录、文件的日志。只要在git log命令后加上目录名,便会只显示该目录下的日志。如果加的是文件名,就会只显示与该文件相关的日志。

3)        $ git log –p  如果想查看提交所带来的改动,可以加上-p参数,文件的前后差别就会显示在提交信息之后。

4)        $ git log -p README.md 只查看README.md 文件的提交日志以及提交前后的差别。

5)        git log --graph——以图表形式查看分支,用图表形式输出提交日志。

9.      执行push,GitHub 上的仓库就会被更新:$  git  push (如果没有更新该仓库的权限就更新失败)

1)        $ git push –u  origin  master推送至远程仓库

像这样执行git push命令,当前分支的内容就会被推送给远程仓库 originmaster 分支。-u参数可以在推送的同时,将origin仓库的master 分支设置为本地仓库当前分支的upstream(上游)。添加了这个参数,将来运行git pull命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从originmaster 分支获取内容,省去了另外添加参数的麻烦。

10.  新建一个目录 $ mkdir git-tutorial

11.  初始化一个仓库(要使用Git进行版本管理,必须先初始化仓库):  $ git init

注意:先进入到新建的目录中,再进行初始化。如果初始化成功,执行了git init命令的目录下就会生成.git 目录。这个.git 目录里存储着管理当前目录内容所需的仓库数据。)

12.  新建一个文件 $ touch README.md

1)        $ git diff:查看工作树和暂存区的差别

2)        $ git diff HEAD  查看工作树与最新提交的差别,请执行以上命令。不妨养成这样一个好习惯:在执行git commit命令之前先执行git diff HEAD命令,查看本次提交与上次提交之间有什么差别,等确认完毕后再进行提交。这里的HEAD 是指向当前分支中最新一次提交的指针。

13.  $ git branch:git branch命令可以将分支名列表显示,同时可以确认当前所在分支。左侧标有“*”(星号),表示这是当前所在的分支。

1)        $ git branch –a  用git branch -a命令查看当前分支的相关信息。添加-a参数可以同时显示本地仓库和远程仓库的分支信息。

2)        $ git branch -D pr1 删除分支pr1

14.  $ git checkout -b——创建、切换分支,$git checkout -b feature-A 表示,创建名为feature-A 的分支。

feature-A 分支的更改不会影响到master分支,这正是在开发中创建分支的优点。只要创建多个分支,就可以在不互相影响的情况下同时进行多个功能的开发。

1)      $ git branch feature-A  创建feature-A分支

2)      $ git checkout feature-A  将当前分支切换为feature-A分支

3)        连续执行1和2 有 和15条规则 有同样的效果

4)      $ git checkout -  切换回上一个分支

5)  $ git checkout -b feature-Dorigin/feature-D  origin为远程仓库的标识符,该语句表示在本地获取远程的feature-D分支,(即将feature-D分支复制到本地,名字也设为feature-D)

6)       

15.  git merge——合并分支  $ git merge --no-ff feature-A 合并feature-A 分支。为了在历史记录中明确记录下本次分支合并,我们需要创建合并提交。因此,在合并时加上--no-ff参数。合并时往往出现冲突,冲突解决后,执行gitadd命令与git commit命令

16.  $ git reset --hard  回溯历史版本

$ git reset --hard fd0cbf0d4a25f747230694d95cac1be72d33441d后面的数字是哈希值只有后面部分也可以。

17.  $ git reflog  查看当前仓库执行过的操作的日志 (即查看操作的历史记录)。gitlog命令只能查看以当前状态为终点的历史日志。

18.  $ git rebase -i HEAD~2  更改历史  将pick 改为 fixup

19.  $ git  remote add  origin  git@github.com:zhujianing/git-tutorial.git 设置本仓库的远程仓库。按照上述格式执行gitremote add命令之后,Git 会默认将git@github.com:zhujianing/git-tutorial.git远程仓库的名称设置为origin(标识符)。

我想origin的作用就是取别名吧,方便以后使用,不用输入长长的地址,直接使用别名。

20.  获取最新的远程仓库分支:$ git pull origin feature-D  获取远程仓库origin的最新分支feature-D,(即用最新分支更新本地分支)

如果两人同时修改了同一部分的源代码,push 时就很容易发生冲突。所以多名开发者在同一个分支中进行作业时,为减少冲突情况的发生,建议更频繁地进行push 和pull 操作。

21.  $ git remote add upstreamgit://github.com/octocat/Spoon-Knife.git 给原仓库设置名称,将其作为远程仓库

22.  $ git fetch upstream   从远程仓库实际获取(fetch)最新源代码,与自己仓库的分支进行合并。要让仓库维持最新状态,只需要重复这一工作即可。

$ git merge upstream/master 将已经fetch 完毕的“PR 发送者/master”的修改内容与当前分支进行合并。

23.   

三.其他

1.      pullrequest 流程(没有编辑权限的做法)

1)        fock 别人的仓库到自己的github上

2)        确认分支  $ git branch –a

3)        将自己github上的仓库clone到本机上

$ git clone git@github.com:zhujianing/first-pr.git

4)        创建一个特性分支(创建特性分支是一个好习惯)$ git checkout -b work gh-pages

创建一个名为work 的分支,用来发送PullRequest。这个work分支就是这次的特性分支。

5)        在特性分支上做修改

6)        修改完以后,为特性分支创建远程分支。$ git push origin work (work为远程仓库的分支)

7)        在github上查看push后的仓库,发送pull request,点击create pull request

2.       推送至远程仓库

1)        在github上创建一个仓库

2)        添加一个远程仓库$ git remote add origin git@github.com:zhujianning/git-tutorial.git

3)        git push——推送至远程仓库   $ gitpush -u origin master

4)        【推送至master 以外的分支 ,

1. 首先在本地创建一个分支$ gitcheckout -b feature-D

2. 将它push给远程分支$ gitpush -u origin feature-D 】

3.       从远程仓库获取

1)        git clone——获取远程仓库 $git clone git@github.com:zhujianing/git-tutorial.git

同时系统会自动将origin 设置成该远程仓库的标识符。这样只能获取master分支。

2)        获取远程的其他分支$ git checkout  -b  feature-D  origin/feature-D

3)        推送feature-D 分支$ git push

4.       获取最新的远程仓库分支    $ git pull origin feature-D

5.       查看差别

1)   查看分支间的差别

https://github.com/rails/rails/compare/4-0-stable...3-2-stable 

2)   查看与几天前的差别,查看master 分支在最近7 天内的差别,可以像下面这样将时间加入URL。

https://github.com/rails/rails/compare/master@{7.day.ago}...master

3)   查看与指定日期之间的差别,想查看master 分支2013 年1 月1 日与现在的区别,可以将日期加入URL

https://github.com/rails/rails/compare/master@{2013-01-01}...master

6.      https://github.com/用户名/仓库名

7.      默认情况下系统会将空格的不同也高亮显示,所以在空格有改动的情况下会难以阅读。这时只要在URL 的末尾添加“?w=1”就可以不显示空格的差别。

8.      在GitHub 上,我们可以尽早创建Pull Request,从审查中获得反馈,让大家在设计与实现方面思路一致,借此逐渐提高代码质量。这个方法在团队开发大型项目时尤其有效,已将GitHub 运用到实际开发中的团队请务必试一试。

9.      将原仓库设置为远程仓库,从该仓库获取(fetch)数据与本地仓库进行合并(merge),让本地仓库的源代码保持最新状态

四.hub 命令

hub 命令将通常的git 命令进行封装并增加几项功能,就可以调用GitHub 的API 发送命令。

0 0