使用Git管理GitHub上的项目

                     图片太多,如果打不开,见本人另一个博客:http://1.johnhome.sinaapp.com/?p=286    
 
  
 Git是一个开源的分布式版本控制系统,可有效、高速的处理 从很小到非常大的项目版本管理。最初由Linus Torvalds编写,用作Linux内核代码的管理。Github是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。
以下是经过本人实践后的相关步骤:
       1. 在Github上按向导 创建账号。如果你是学生,并且已有 Github 账号,那可以去申请微型方案Micro Plan。私有仓库可用来托管个人的课程项目、论文或和学位相关的研究。如果学生需要用于团队的私有仓库,同样可以申请。 如果你是教师,或者是学生组织的赞助商,可以申请组织账号。注册入口  https://github.com/edu,通过邮件进行确认,因此请选用与edu相关的邮箱。
  2. 下载安装Git
  下载地址:https://code.google.com/p/msysgit/
  安装很简单,一直默认即可。
  3 .登陆GitHbu后按照向导 创建一个新的仓库(New repository), 命名为 UEFIMalAnalysis,创建成功后如下图:
  
        注意创建后不要根据提示生成readme文件,否则会自动生成 origin,影响下边的 9.1步 名为origin的remote url添加操作。
  4. 创建RSA公钥、私钥签名对,用于github与代码提交者相互认证。
  运行
  

ssh -keygen  -‘邮箱地址’  -t rsa

如下图所示(我自己之前已生成,此处以网上截图展示):

 5. XP中生成的密匙在C:\Documents and Settings\用户名\.ssh目录下,文件id_rsa中的是私钥内容,这里需要打开 公钥文件id_rsa.pub,复制,其内容以“ssh-rsa”开头,以 输入的邮件为结尾:
  6. 在Github中点击“Account Settings”进入到设置界面,选择“SSH Public Keys”,然后点击”add an ssh key“,
将刚才复制的密匙内容粘贴到对应的框中:  
 
7. 密钥对匹配性检查与不匹配时的解决方案。
 7.1 用命令来密钥对是否设置成功
 ssh  -T git@github.com

如截图所示:

  使用
 ssh  -vT git@github.com

可以得到更详细的验证提示,可以看到ssh如何使用本地的密钥文件进行匹配,具体将在下边的 截图中展示。

  7.2 密钥不匹配的症状与解决方案:
  注意如果进行了多次的key生成,或者安装了GitHub提供的windows setup( http://windows.github.com/help.html),可能导致 ssh 加进来的key不正确(windows setup 会使用github_rsa而不是id_rsa),进而导致密钥匹配失败,如下图所示:
        提示 “Permission denied (publickey).”,即公钥不对导致连接被拒绝,这是由于之前添加到gitbub中的公钥(使用id_isa.pub)与这次ssh验证时,使用的私钥文件(github_isa)不匹配,戓在ssh默认搜索的位置找不到私钥文件。
  解决方案一:
  安装了windows gitbubsetup后,运行 提供的 Git Shell (一般在桌面生成图标),查看当前ssh导入的密钥文件列表
git shell  >ssh -add  -l

  发现对应的私钥文件未被加入,需要手动添加私钥文件,运行 ssh-add 命令,导入私钥文件,注意私钥文件完整路径名外要加双引号:
ssh -add  “path to the private key file”
  之后再在Git Shell中运行

ssh  -T git@github.com

验证通过。

  解决方案二:
  把私钥文件id_rsa 文件放到git安装目录的.ssh文件夹下,位置一般是C:\Program Files\Git\.ssh。这样,ssh验证密钥时,自动在git下搜寻,但这需要把“C:\msysgit\msysgit\bin”加入系统的 path中。
  解决方案三:
未安装windows githubsetup的,直接在cmd中处理。首先输入
ssh -add  -l

会提示

“ssh -add  -: Could  not open a connection to your authentication agent”

这也是路径错误导致的。

  这需要按如下处理:
pushd path -to -Git /bin

(pat-to-Git即第2步安装msysgit的主目录,例如,cd C:\msysgit\msysgit\bin)

继续执行命令:
 

 bash
exec ssh -agent bash
ssh -add path /to /.ssh /id_rsa
ssh  -vT git@github.com

运行截图如下:

  但这种方法的缺点是要求每次验证时都要执行上述5条命令。
  7.全局用户名与邮箱设置
      打开Git的命令行Git bash,输入如下命令来提供身份标示,主要是申请github时的用户名和邮箱,github每次commit都需要这两个信息:
git config  global user.name  “myname”
git confi  global user.email   “myid@email.com
  8.本地代码仓库创建与本地索引更新
  8.1  在计算机中创建本地代码仓库目录,或者使用已有的项目,这里使用F:\QtSpace\UEFIMalAnalysis项目。通过 pushd  进入到 F:\QtSpace\UEFIMalAnalysis目录中,然后使用git init来初始化当前目录,该目录中会生成一个.git的隐藏目录:
  手动编辑主目录中的readme.txt文件,文件中写入相关说明,然后用git add 命令以及git commit命令将其添加到本地仓库中,这只是在本地索引中的更新:
 git add readme.txt
git commit  -“readmet commit”
  9.本地仓库的代码推送到Github
  9.1 在git bash中, 添加远程git位置,有几种方式:
  第一种,使用ssh命令:
git remote add origin git@github.com :yourName /yourRepo.git

后面的yourName和yourRepo表示你在github的用户名,以及之前第3步新建的仓库,加完之后进入~\.git,打开config,这里会多出一个remote “origin”内容,这就是刚才添加的远程地址:

  
  第二种,直接在~\.git\config中添加,参见上图,关键是url。
  第三种,使用http命令
git remote set -url orgin https : / /github.com /jiangzhw /UEFIMalAnalysis.git

上述中的 origin只是个名称,可以取其它名字,但在push时要使用相应名字。

9.2  文件忽略设置:在推送到github时有些文件不需要上传,可通过文件忽略设置,一般是使用exclude和gitignore文件。
  9.2.1 采用 exclude文件设置:本地仓库的文件全局忽略规则在 .git/info/exclude 文件中添加。这些忽略的文件不会提交到共享库中,因而不会被协作者所共享。
其内容可以是:
  # git ls-files –others –exclude-from=.git/info/exclude
# Lines that start with ‘#’ are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
*.[oa]
*.obj
*.tmp
*.bak
#*~

exclude可被TortoiseGit识别。

  9.2.2 采用 .gitignore设置
  .gitignore顾名思义就是告诉git需要忽略的文件。一般写完代码后会执行编译、调试等操作,这期间会产生很多中间文件和可执行文件,这些不需要git来管理的,如果用git add -A来添加的话会把他们都加进去,而手动一个个添加的话也太麻烦了。这时就需要.gitignore了。比如一般c#的项目可这样写:
 bin
*.suo
obj

bin和obj是编译目录,里面都不是源代码,忽略;suo文件是vs2010的配置文件,不需要。这样你在git status的时候就只会看到源代码文件了,就可以放心的git add -A了。

  9.2 代码推送到github
  修改完代码后,使用git status可以查看文件的差别,使用git add 添加要commit的文件,也可以用git add -i来智能添加文件。之后git commit提交本次修改,git push上传到github。
  git status
git add  -A
git commit
git push origin master
强烈推荐使用 TortoiseGit(https://code.google.com/p/tortoisegit/)进行图形化的commit的文件选择,并push:
  
  
  也可以在TorsoiseGit中设置远程url:
  
  10. 刷新自己Github中的项目页面,如下所示, 选择的本地所有文件均已上传到github.
  
   附其它技巧:
1.如果安装了msysgit,又安装了cygwin, 后者也内置git,需要在windows的环境变量中把msysgit的bin目录提前:
  
  2. 在github上删除一个repository
  2.1 :首先点击进入你要删除的repository,如下图,点击 Settings  
  2.2 :将网页拉到下方,找到Delete this repository 按钮,点击。
  
  2.3 :在弹出的对话框中输入你的repository的名字,
  
  然后点击下方的按钮
完成删除。
***********************************Split**************************************
使用TortoiseGit管理GitHub
先右键本地项目代码文件夹,create rep…,之后记得修改.git/info下的exclude文件,去除不要上传的文件,之后再右键项目文件夹,Commit,注意第一次时不要选amend last …,选择要提交的文件,并注释,之后再右键项目文件夹,TortoiseGit->push,在Destination的 manage中填入在github上建立的对应项目信息。


本文基于  署名 2.5 中国大陆  许可协议发布,欢迎转载、演绎,但是必须保留本文的署名  John 并包含本文链接。
 
 
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值