在公司一直用的SVN做版本管理,倒也没什么问题。最近想自己在家写点东西,上班的时候又想偷偷地写。代码经常在两个地方同步,很是辛苦。反正写的只是一些用来学习测试的代码,干脆放到github上。

  1.登录https://github.com/注册一个帐号。

  2.到http://git-scm.com/download/下一个客户端,我的是ubuntu,到软件中心搜索一个git就好。下面也是以ubuntu为例来说明步骤。

  3.登录自己的github帐号,边看帮助边配置。

点击help,再点set up git。

在终端输入上面两个命令,设置你的用户名和邮箱地址。这是全局设置,以后的操作都会使用这一帐户。

  4.认证github帐号。上面我们只设置了帐号,肯定还要密码才能操作的。github的认证有两种,https和ssh。对于https,什么都不用做,但每次都要输入用户名和密码(或者是我不知道什么设置),麻烦。下面先说ssh认证。github的ssh要求用key来认证的。需要先在本地生成公钥。

  

在终端输入ssh-keygen -t rsa -C "注册邮箱地址",会提示你输入文件路径,linux下一般是 用户名/.ssh/git,文件名随意写,但小心把你其他ssh key覆盖了。如果你只输入文件名,则会在当前目录下生成密钥,然后再拷到 用户名/.ssh下,否则ssh找不到密钥,登录失败。输入文件名后会提示输入passphrase,我也不知道是什么东西,两次直接为空。然后就密钥就出来了。cat一下公钥(带.pub后缀那个),得到一串以ssh_rsa开头的字符,复制。

然后在github自己的帐户上点击设置(右上角那个齿轮),再点击SSH,Add SSH key.随便起一个名字,然后把刚刚复制的公钥粘贴上去,确定。

再现测试一下密钥是否可用,在终端输入ssh -T git@github.com,如果出现最后一行,则OK。

  5.所有设置都OK,现在需要建立一个仓库了。在自己的帐号上建立一个test_git仓库(不懂看教程了https://help.github.com/articles/create-a-repo/),反正什么都是空的也可以。

  6.在自己的电脑上建立一个目录为工作目录test。然后转到终端

cd test             #进入工作目录
git init #在当前目录下创建.git目录,表明这是一个工作目录
echo "*.o" >.gitignore #告诉git所有.o文件都不进行版本管理
echo "build" >> .gitignore #告诉git build目录不进行版本管理
echo "*~" >> .gitignore #~结束的文件是gedit之类的备份文件,不进行版本管理
git add -A #添加当前目录下的所有文件(.gitignore排除的不算)
git commit -m "hello git" #记录本次提交的log
git remote add test git@github.com:test_user/test_git.git #把用户test_user的仓库test_git在本地重新指定一个名字为test
git push test master #提交test到服务器master分支

其中,git remote add只起一个重命名的作用,如果你不觉得git@github.com:test_user/test_git.git名字长,那么不用这行,每次git push git@github.com:test_user/test_git.git master也是可以的。master是分支,不是很懂,不知道跟SVN的分支是否一样。

git@github.com:test_user/test_git.git是SSH的用法,意思是用帐户git(注意不是你的用户,git不给用户提供shell,“but GitHub does not provide shell access”)登录服务器github.com,登录目录为test_user/test_git.git。test_user才是你的用户名。

  7.如果用的是https认证方式,则把git@github.com:test_user/test_git.git改为https://github.com/test_user/test_git.git,然后你push的时候会提示你输入用户名和密码,其他都是一样的。

  8.如果出现

ERROR: Repository not found.
fatal: Could not read from remote repository. Please make sure you have the correct access rights
and the repository exists.

这样的错误,则是你未在github上先建立仓库,或仓库名错误。或者你的SSH登录失败。

  8.在Qt creator上使用git。Qt creator支持git的。在你做完上面的步骤后,Qt creator如果你的工程在git的工作目录内(即工作根目录一有.git文件夹,没有请按上面的步骤创建),Qt creator会在打开工程时自动识别到该工程受git版本控制,在工具里会多出一个Git选项。其他diff、commit等功能都正常。但尝试pull、push这些对远程服务器的操作时,则报:

fatal: 没有配置推送目标。
或通过命令行指定URL,或用下面命令配置一个远程版本库 git remote add <name> <url> 然后使用该远程版本库名执行推送 git push <name> The command "/usr/bin/git" terminated with exit code . : Executing in /home/xzc/code/game_server: /usr/bin/gitk -- LOGEngine/main.cpp
无法启动"/usr/bin/gitk".
无法启动"gitk".

嗯,这个错误我懂,就是Qt creator只调了一个指令git push,没有指定name和branch。于是,我赶紧到工具--选项--版本控制里面找参数。尼玛,百度了几个小时,找了半天,没有看到哪里可以在push、pull指令上加参数的地方。后来看到 无法启动"/usr/bin/gitk" ,我又不知道gitk是个什么东西,觉得Qt creator在失败后要启动它,想必是在这个软件上设置。于是sudo apt-get install gitk,没想到,什么鸟关系都没有。

  后来,在http://www.cnblogs.com/leaven/archive/2010/10/01/1839751.html终于找到相关的做法。在工作目录的.git/config下加

[branch "master"]
remote = test
merge = refs/heads/master

于是,在当前目录下,就可以直接使用git pull、git ush指令直接进行操作,不用再指定name和branch之类的。那Qt creator也能正常使用。其函数在http://862123204-qq-com.iteye.com/blog/1683315上有人解释为:

. 先把git的东西fetch到你本地然后merge后再push

$ git fetch

$ git merge

这2句命令等价于

$ git pull 

可是,这时候又出现了如下的问题:

上面出现的 [branch "master"]是需要明确(.git/config)如下的内容

[branch "master"]

    remote = origin

    merge = refs/heads/master

这等于告诉git2件事:

,当你处于master branch, 默认的remote就是origin。

,当你在master branch上使用git pull时,没有指定remote和branch,那么git就会采用默认的remote(也就是origin)来merge在master branch上所有的改变

如果不想或者不会编辑config文件的话,可以在bush上输入如下命令行:

$ git config branch.master.remote origin 

$ git config branch.master.merge refs/heads/master 

之后再重新git pull下。最后git push你的代码吧。

2014/10/20

  以重新看了一下,现在发现要实现git pull、git push这样带branch的操作,则需要设置trace信息。

git branch --set-upstream-to=test/master

上面用config的方式也可以,但那是直接设置.git/config文件,也算一种方式吧

初学github的更多相关文章

  1. GitHub Or Subversion

    上一次转载了介绍GitHub的博文点我,我想对于初学GitHub的同学们还是有不清楚的地方,毕竟有些概念的理解比较费力.我觉得作为一个对于配置库技术已经有一定基础的同学们,要学习GitHub,最快以及 ...

  2. Windows下解决github push failed (remote: Permission to userA/XXXX.git denied to userB.) 上传gitHub失败报错

    Windows环境下解决 github push failed (remote: Permission to userA/XXXX.git denied to userB.) · 初学GitHub的朋 ...

  3. GitHub----初学习(一)

    刚开始学习GitHub,在这借鉴一下别人的总结,http://youngxhui.github.io/2016/05/03/GitHub-for-Windows%E4%BD%BF%E7%94%A8%E ...

  4. Git for Windows 工具的使用(一)

    如果你还不知道什么是Git,只知道GitHub,但是还不会用,我想这个教程会帮助你. 前言 鉴于网上目前的教材都太落后,GitHub for Windows已经更新了多个版本,好多界面都发生了变化,所 ...

  5. 搜刮一些开源项目的APP

    iOS完整App资源收集 <iOS完整app资源收集>  <GitHub 上有哪些完整的 iOS-App 源码值得参考?> <GitHub 上有哪些完整的 iOS-App ...

  6. 初学git:用git bash往github push代码

    对于我来说,最开始使用github主要是为了使用它的pages功能展示demo.其实这些都是用Github for Windows push上去的,图形化界面的客户端使用确实简单,但是逼格不够,好吧其 ...

  7. github 自学文档 希望可以给初学的人一些帮助

    一 .git的安装 windows下面的安装:https://git-for-windows.github.io  从这里下载完全无脑安装. 安装完成后,在开始菜单里找到"Git" ...

  8. 初学Git和Github

    一开始看到老师的作业,出于好奇打开看了一下教程链接,一脸懵逼.What is this???然后慢慢了解,自己百度琢磨这个陌生的git,Git是一款免费.开源的分布式版本控制系统.Github是一个代 ...

  9. Github上安卓榜排名第2的程序员教你如何学习【转载,侵删】

    来自:峰瑞资本(微信号:freesvc)文章作者:代码家(微信 ID:daimajia_share) 软件早已吞噬整个世界,程序员是关键角色.过去 40 年中,许多伟大的公司都由程序员缔造,比如比尔· ...

随机推荐

  1. AllocConsole

    #include<iostream> using namespace std; AllocConsole(); freopen("CONIN$", "r+t& ...

  2. NSTimer 详细设置

    NSTimer 详细设置1:http://blog.csdn.net/davidsph/article/details/7899483 NSTimer 详细设置2:http://blog.csdn.n ...

  3. Cocos2d-x学习笔记(3)

    Cocos2d-x有一个包括全部其它头文件的cocos2d.h,仅仅要在使用时包括这个头文件,就能够使用引擎的全部功能.Cocos2d-x的类都放置于cocos2d的命名空间下,如引擎下的" ...

  4. [RxJS] Logging a Stream with do()

    To help understand your stream, you’ll almost always want to log out some the intermediate values to ...

  5. Ubuntu 14.04根据系统,休眠后不能启动要解决的问题

    简介: 提升Ubuntu制度14.04之后,当系统进入休眠,我们不能再次启动,直接崩溃,凡出了问题? 1.   问题纳入 Ubuntu升级系统14.04之后.通过系统的Power设置休眠时间,在系统进 ...

  6. WebSphere配置数据库连接池

    通过WebSphere配置数据库连接池一共需要三项:     1.配置连接驱动,在这里叫:JDBC提供程序;    2.配置数据库连接池,在这里叫:配置数据源;  3.配置数据库登录帐号,密码,在这里 ...

  7. CSS3 之 box-shadow

    1. css3 box-shadow CSS3的box-shadow属性可以让我们轻松实现图层阴影效果 box-shadow:  inset(可选 默认没有) x-offset    y-offset ...

  8. Material 字体样式与排版

    Material 字体样式与排版 Google Material 设计规范文档 Style– Typography 字号 再好的布局也会被过多的字号和样式会毁掉.要规定好在这个布局上合适的 字号集合 ...

  9. Linux 下安装oracle数据库

    原文出处       http://www.linuxidc.com/Linux/2015-02/113222.html 需要安装Oracle DataGuard,所以先要安装单台Oracle11g, ...

  10. MS-DOS命令列表

    以下是微软的DOS操作系统(MS-DOS)的DOS命令列表.其它DOS的命令和用法可能类似. 后期版本的 DOS 可以通过help命令来得到命令与参数列表,通过help <命令>或者< ...