Github入门级使用攻略

一 Git介绍

Git在Wikipedia上的定义:它是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具. Git的代码日志是在本地的,可以随时查看。SVN的日志在服务器上的,每次查看日志需要先从服务器上下载下来.

 

二 Git 命令常用命令操作


 git add:

是将当前更改或者新增的文件加入到Git的索引中,一个工程,你只是修改了某个文件,只需要用git commit -am提交就行了,但是如果新增了文件,就要先执行add,再执行commit -am. 比如我在Test工程中新了一个名为test.cpp的文件,就要这样才能完整提交, 


 

 git rm:

从当前的工作空间中和索引中删除文件,例如'git rm app/model/user.rb'. 这个比较简单,就不举例了。

 

 git commit:

提交当前工作空间的修改内容,类似于SVN的commit命令,例如'git commit -m "story #3, add user model"',提交的时候必须用-m来输入一条提交信息

通常是-m和-a一起使用才可以,比如要提交一条更改到本地版本库,用


 

它执行的动作和githubfor windows里(下面会讲到)commit是一样的,如下图:




 git push:

将本地commit的代码更新到远程版本库中,例如'git push origin'就会将本地的代码更新到名为orgin的远程版本库中, 这个动作和github for windows客户端里的同步功能是一样的:



 比如我本地有两个已经commit(上图显示),但是还没同步到服务器的版本库,可以直接git push,就会同步:


然后在客户端就会发现更新状态:



 

git log:

查看历史日志, 这个可以举个例子, 比如,我要clone一个以前的版本到本地进行修改(当然这个一般很少出现), 可以先用这个命令查看有哪些版本:

 

然后git checkout 加上前8位的key.

 

 

带上参数,有更强大的功能,比如想看到具体的修改内容,可以用 git log -p, 下面就是我用这条指令输出的信息,


 可以清楚的看到,我修改的内容就是加了一条messageBox语句.


git log --stat 可以看到哪些文件被改了,就像如下的显示, 



git -log --author可以查看指定作者的提交信息,如下:


git -log --before和--after可以查看指定日期区间的日志信息, 



git revert:

还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',可以先通过git log查询版本号的哈希值。

回到一个指定的版本后,就可以基于这个版本修改,commit和push.

 


 git branch:

对分支的增、删、查等操作,例如'git branch new_branch'会从当前的工作版本创建一个叫做new_branch的新分支,'gitbranch -D new_branch'就会强制删除叫做new_branch的分支,'git branch'就会列出本地所有的分支

 

git checkout:

Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如'git checkout new_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'git checkout app/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚

       

 git tag:

tag主要用于项目开发中的里程碑,比如开发到一定阶段可以单独一个版本作为发布等,它往往代表一个可以固定的完整的版本, 在开发的一些关键时期,使用标签来记录这些关键时刻, 例如发布版本, 有重大修改, 升级的时候, 会使用标签记录这些时刻, 来永久标记项目中的关键历史时刻.


可以将某个具体的版本打上一个标签,这样你就不需要记忆复杂的版本号哈希值了,例如你可以使用 'git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20'来标记这个被你还原的版本,那么以后你想查看该版本时,就可以使用 revert_version标签名,而不是哈希值了. 

也可以在开发的某个阶段,为该阶段打上一个标签,这样查询时比较方便, 



还可以查看现有的标签列表, 当我们把标签名设为版本号时,可以用这个命令方便的查询目前的版本列表, 



我们在执行git push的时候,tag是不会上传到服务器的,比如现在的github,创建tag后git push,在github网页上是看不到tag的,为了共享这些tag,你必须这样:

git push origin --tags

另外,tag和release是共存的,关于如何添加release notes,参考如下链接:

https://github.com/blog/1547-release-your-software


 

三 注册Git账户

 

到github官网,注册一个账户,然后根据向导,会先提示你建立仓库(Repository).在github首页,点击页面右下角“New Repository”. 如下图所示:


起名叫Test.

 

以下几点要注意:

 

一个仓库里只能存放(或叫对应)一个项目

免费用户只能建公共仓库, 也就是说别人都看得到你放上来的源码工程.

 

 

 

四 githubfor windows

 

使用github,如果我们能有一个给力的客户端, 就不用记住那些繁琐的命令, 有时候可以起到事半功倍的作用, Windows下的Git客户端软件有那么几个,Github for Windows,TortoiseGit和SmartGit。

 

Github for WindowsGithub官方出的, 就以这个为例(其实我也只用过这个).有了这个客户端,很多常用的操作基本可以通过图形界面来完成。

 

下载,安装,然后登陆进去.本地git项目与远程的github建立联系是通过SSH Key来完成的, Github for Windows会帮你创建SSH Key,你打开邮件应该会收到邮件帮你创建SSH Key的信息.客户端会让你指定一个storage directory, 我这里是D:\study\github\data, 这个目录就是你以后github项目的工作目录了,从服务器上clone的源码工程会自动下发到这个目录. 我们从服务器上把刚才建立的叫Test的项目仓库clone到本地, 这时在可以看到当前目录下多了一个Test文件夹:

 

然后我们在这个目录下,新建一个叫ddd的mfc对话框工程, 这时可以直接提交了,作为我们的第一次提交.加入一些注释说明,如下图:

 

 

然后”commit to master”, 这样是把工程提交到本地仓库, 这一点也是github比较给力的地方,有个” 本地仓库”的概念, 这样在没有网络的情况下,可以先提交到这里,然后有网络后,把同步到服务器.  同步服务器在右上角的”sync”操作:

 

 

 

这样就完成了一个修改,提交,多次操作之后,客户端上会记录各个版本,如下:

 

服务器上也有类似的记录:

 

 

 

五 如何从github下载开源项目修改,  参与开源项目协同开发

 

随便打开一个开源项目的网址,在网页的右下角可以看到如下图这样的:

 

 

选择clone in desktop,就可以下载源码工程到本地,然后就可以修改,提交,这个步骤前面已经讲过了.通过命令行方式就用clone命令,比如:



六 如何删除一个版本库.

浏览器登陆github, 然后按照图示的步骤:


点击"Test" 版本库,然后在侧边找到settting菜单,




接着在网页的最下面可以找到删除菜单,



七  关于readme

 每个工程的根目录下,最好都有一个readme文件,说细说明你这个工程的作用,开发背景等内容,格式的话网上搜一下很多。


八 补充, 关于分支

 

对开发周期中的单独生命线作单独的修改,这条单独的开发生命线就可以称为Branches即分支。分支经常用于添加新的功能以及产品发布后的bug修复等,这样可以不影响主要的产品开发线以及避免编译错误等。当我们添加的新功能完成后可以将其合并到主干中。

 

许多使用 Git 的开发者都喜欢用这种方式来开展工作,比如仅在 master 分支中保留完全稳定的代码,即已经发布或即将发布的代码。与此同时,他们还有一个名为develop 或 next 的平行分支,专门用于后续的开发,或仅用于稳定性测试.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值