如何在UBUNTU下使用github

1.安装

 sudo apt-get install git-core openssh-server openssh-client

 $ sudo apt-get install git-core git-gui git-doc
 
如果需要在push到网上
 
一、github帐号的申请
 
如果只是需要将github上感兴趣的代码拷贝到本地,自己进行修改使用,而不打算共享发布的话,其实不申请帐号也没有关系,只需要git clone 代码到本地就可以了。本文对这种方法不做讨论,毕竟使用github 就是为了开源的目的。
 
首先去 github.com上注册一个帐号,具体的注册流程就不赘述了。
 
二、在本地建立一个文件夹,然后做一些全局变量的初始化
 

git config --global user.name ="用户名或者用户ID"

 git config --global user.email ="邮箱"
 
这两个选项会在以后的使用过程中自动添加到代码中。
 
三、创建验证用的公钥
 
这个是比较复杂和困扰大多数人的地方,因为 git是通过 ssh的方式访问资源库的,所以需要在本地创建验证用的文件。
 

使用命令:ssh-keygen -C 'youemail [email protected]' -t rsa
 
会在用户目录 ~/.ssh/下建立相应的密钥文件
 
可以使用 ssh [email protected] 命令来测试链接是否畅通
 
四、上传公钥
 
在 github.com 的界面中选择右上角的 AccountSettings,然后选择 SSHPublic Keys ,选择新加。
 
Title 可以随便命名,Key的内容拷贝自 ~/.ssh/id_rsa.pub中的内容,完成后,可以再使用 ssh-v [email protected] 进行测试。看到下面的信息表示验证成功。
 


进行到这里,我们也可以利用github来管理我们的项目和参与开源工作了,大体上使用git分为三种方式。
 
管理自己的项目
 
这种情况是自己在本地有一些代码,需要利用github 来管理自己的项目,可以按照下面的步骤进行。
 
1、建立仓库
 
在需要建立项目的文件夹中,使用 gitinit 进行仓库的建立。完成后,可以看到文件家中多了一个.git 隐藏目录。
 
2、添加文件
 
使用 git add . 来进行初始文件的添加。这里. 表示将文件夹下所有的文件都添加进去,我们也可以指定文件进行添加。
 
3、提交文件
 
使用 git -m commit -m'comment' 提交,可以将编辑的内容进行提交。
 
通过 git show 可以看到项目的一些状态。
 
这是代码已经在本地管理了,但是本地管理完全体现不出git的优势。
 
利用github托管自己的项目
 
1、如果需要将自己的项目托管在github.com上,首先需要创建项目。在Dashboard 中选择 CreateNew Repository,填入相关信息后,项目就创建成功了。
 
2、之后,会有一个如何上传的提示,如下图已经很详细了。
 


Fork别人的项目
 
前面提到过,如果只是下载使用别人的代码,通过git clone就可以了,当然clone的前提是项目必须是public的,私有的项目是没办法的。如果需要参与,可以通过fork,然后合并的方式。
 
1、首先需要去自己感兴趣的项目中进行Fork,fork出自己的一份分支来。fork之后,一般可以看到一个ssh访问的地址。例如:[email protected]:cocowool/userguide.git
 
2、复制代码
 
使用 git [email protected]:cocowool/userguide.git userguide 可以将代码复制到本地的userguide 文件夹中
 
3、进行自己的修改,完成后请求原作者合并
 
2.修改用户信息
 

$ git config --global user.name "John Doe"

 $ git config --global user.email [email protected]
 
3.查看配置信息
 

$ git config –list
 
4.相关命令
 

git init

 git add .

 git commit
 
git diff -cached 要看已经暂存起来的文件和上次提交时的快照之间的差异
 
git diff 此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有
 
暂存起来的变化内容。
 

git status

 git log -p
 
$ git commit –amend 想要撤消刚才的提交操作,可以使用 --amend 选项重新提交
 
git reset HEAD benchmarks.rb 取消暂存 benchmarks.rb 文件
 
$ git checkout – benchmarks.rb 抛弃文件修改的命令
 
$ git remote 要查看当前配置有哪些远程仓库,可以用 git remote 命令,它会列出每个远程库的简短名字。
 
$ git remote add pb git://github.com/paulboone/ticgit.git 添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用
 
$ git remote -v 列出多个远程仓库
 
$ git fetch [remote-name] 从远程仓库抓取数据到本地
 
git pull 从原始克隆的远端仓库中抓取数据后,合并到工作目录中当前分支
 
git push [remote-name] [branch-name] 将本地仓库中的数据推送到远程仓库
 
git remote show [remote-name] 查看某个远程仓库的详细信息
 
$ git tag 列显已有的标签
 
$ git push origin –tags 如果要一次推送所有(本地新增的)标签上去,可以使用 --tags 选项:
 
git branch -d experimental 如果使用大写的-D 的话,则表示“不论如何都删除分支”,-D 当然使用在“分支被证明失败”的情况下喽。
 
5.上面的命令有点乱,以下是某位网友整理的(《看日记学 git 》系列):
 
(1)获得帮助可以使用类似 man git-****的命令格式:
 
想获得关于 commit 命令的帮助,则 man git-commit
 
想获得关于 pull 命令的帮助,则 man git-pull
 
想获得关于 merge 命令的帮助,则 man git-merge
 
以此类推
 
(2)任何人在使用 git 之前,都要提交简单的个人信息,以便 git 区分不同的提交者身份。
 

#git config –global user.name “your name”

#git config –global user.email [email protected]
 
(3)想新开启一个项目,应该先建立一个目录,例如名为 myproject,然后所有的项目开发内容都在此目录下进行。
 
#cd myproject
 
#git init
 
#git add .
 
#git commit //这个步骤会自动进入编辑状态,要求提交者输入有关本次提交的“开发信息”
 
至此,一个新项目就诞生了,第一个开发信息(开发日志)也随之诞生。
 
(4)如果改进了项目源代码,并且到了开发者认为“应该再次记录开发信息”的时候,则提交“工作成果”。
 
#git commit -a
 
//这是一个偷懒的命令,相当于 git add .; git commit;
 
但是,此处有一点应该注意,那就是 git commit -a 无法把新增文件或文件夹加入进来,所以,如果你新增了文件或文
 
件夹,那么就要老老实实的先 git add .,再 git commit 喽。[此处非常感谢 freeren 的提醒]
 
(5)想检查到目前为止对源码都做了哪些修改(相对于本次工作刚开始之时):
 
#git diff //这个命令只在 git add 之前使用有效。如果已经 add 了,那么此命令输出为空
 
#git diff –cached //这个命令在 git add 之后在 git commit 之前有效。
 
#git status //这个命令在 git commit 之前有效,表示都有哪些文件发生了改动
 
(6)想查看自项目开启到现在的所有开发日志
 
#git log
 
#git log -p //会输出非常详细的日志内容,包括了每次都做了哪些源码的修改
 
(7)开启一个试验分支(experimental),如果分支开发成功则合并到主分支(master),否则放弃该试验分支。
 
#git branch experimental //创建一个试验分支,名称叫 experimental
 
#git branch //显示当前都有哪些分支,其中标注*为当前所在分支
 
#git checkout experimental //转移到 experimental 分支
 
(省略数小时在此分支上的开发过程)...
 
如果分支开发成功:
 
#git commit -a //在 experimental 分支改进完代码之后用 commit 在此分支中进行提交
 
#git checkout master //转移回 master 分支




 

你可能感兴趣的:(linux)