IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    use git

    Xiang Chao (cloudaice@163.com)发表于 2012-02-25 18:57:00
    love 0

    初学git

    想想自己接触git也快一年了。记得当时刚刚接触的时候,一无所知,根本就不知道什么是版本控制系统。 听学长说是很有用的工具,然后也就这样开始接触。记得当时看着官方的help文档,一步一步地操作。 对于我这个大一英语全不及格的人来说,可真是苦不堪言啊。 忙了一整个下午,最终还是一头雾水,也不知道当时整好了没有。根本就分不清git和github的关系。 还看着一堆的英文的东西,哎……往事不堪回首,这样想起来,貌似这一年自己还是收获很多的。 希望下一年能够让自己收说更多的,嘿嘿……

    git和github

    我刚开始的时候,就是搞不懂git和github之间的关系。当时就知道这是个版本控制工具, 到底版本控制工具有什么作用呢,根本就没有什么切实的体会。再加上一堆的英文的文档,惨不忍睹啊。 其实本质上讲,git和github一点关系都没有。就像那些笔记本电脑和京东没有一点关系。git本身是一个程序。 这个程序能够对变动的目录进行跟踪,检出,恢复等等一堆强大的功能。 而我们写代码不就是在一个目录里到处变更文件吗?这样子管理起来就会很麻烦。所以git就很形象的称为版本控制 工具了。不过要说git的起源还是在维护linux内核的时候诞生的,这方面的资料网上有很多。所以git就是一个程序, 在linux下,它就形象的展现成命令行,你就可以在里面输入命令之类的。就这么简单。再来说说github。 它直观的表示就是一个网站,但是不同的是它这个网站有着特别的功能。最主要的功能就是,你可以在它那里托管 你的代码。再加上其它一些辅助功能,使得你能够更好的工作。想github这样的托管的网站有很多:

    sourceforge
    bitbucket
    gitcafe
    code.google

    还有其他一些相似的网站,另外,相对的,版本控制工具也不止git一个,使用比较广泛的还有

    svn
    hg
    cvs

    这些都可以在网上很轻松的搜索到相关资料。

    使用git和github

    讲讲具体使用git和github来维护自己的项目时候要用到的命令和过程

    • 安装git

    这个比较简单。在linux下面,你可以选择编译安装或者是直接使用apt-get来安装。 使用apt-get安装:

    sudo apt-get install git-core git-doc
    

    安装完成之后,输入下面命令检查是否安装成功:

    git --version
    

    查看是否顺利的输出版本号

    使用编译安装 运行下面命令安装编译依赖的软件包

    sudo apt-get built-dep git-core git-doc
    

    下载git源码包并且解压,切换到源码包的目录,执行下面命令:

    make prefix=/usr/local all doc
    sudo make install install-doc
    

    安装完成后可以查看自己的git版本。

    • 使用git 如果只是使用git版本控制工具,那么,你知道在你的项目文件目录下面运行命令

      git init

    就会在该目录下面创建一个版本库了,你会发现在该目录下面多了一个.git的目录。 在这里还是结合github一起讲解。 在github上注册一个帐号。之后主要的一部就是设置公钥和私钥。github采用ssh协议进行代码的传输认证。 其实ssh协议在这里理解很简单,就是你通过一个命令,产生一对公钥和私钥,这两个是有联系的。你把公钥放在 github的网站上,然后私钥留在自己的电脑里面,每次你要和github通信的时候,它就会认证一下是否是管理用户。 使用下面命令可以产生一堆公钥和私钥。

    ssh-keygen
    

    ~/.ssh/id_rsa是私钥,~/.ssh/id_rsa.pub是公钥,你可以用文本编辑器打开公钥文件, 你把公钥文件里面的内容复制到github上的你的账户里的相应位置(专门有这么一个地方)。再执行下面命令, 测试是否成功。

    ssh -T git@github.com
    

    现在你可以在github上面建立一个仓库了。写好你的仓库的名字。然后就是把你的本地仓库代码送到远程里面。 假设你在本地有一个仓库了,执行下面两条命令,这两条命令是告诉远程版本库是谁提交的版本库

    git config --global user.name "yourname"
    git config --global user.email "youremail"
    

    添加远程版本库:

    git remote add origin git@github.com:cloudaice/helloworld.git
    

    其中origin是给远程版本库起的一个名字,这个名字和我们在github上建立的版本库的名字是不相关的, 只是对于我们本地给它起的一个名字。后面表示,版本库的路径,在这里是cloudaice路径下的helloworkd.git 版本库。在这里要重点说一下,github支持三种协议传输,但是只有ssh协议才能够执行push操作, 因此在添加远程版本库的时候最好使用该添加方法,如果对于远程版本库,我们不执行推送的话, 比如是和别人协作的时候,对于管理员的版本库,我们就只需要pull。因此,可以使用另外两种方法

    git remote add origin git://github.com:cloudaice/helloworld
    git remote add origin https://github.com:cloudaice/helloworld
    

    到此就算把本地版本库和远程的联系起来了,下面介绍一些常用命令。
    下面提到的origin默认表示远程版本库的名称,origin/master默认表示远程版本库origin中的master分支

    git add filename
    

    把该目录下的这个文件添加到暂存区;

    git add .
    

    把目录下的所有文件添加到暂存区。在这里你可以通过建立一个.gitignore文件,在里面写如你不想添加到暂存区的 文件的名字。这样即使执行这条命令也不会把那些文件添加到暂存区了。

    git commit -m "infomation"
    

    提交暂存区的内容到版本库,引号里面的为你的本次提交的信息,最好写的清晰明白。

    git push origin master
    

    将本地的版本库推送到远程版本库中,origin是远程版本库的名字,master是远程版本库的分支名称。 当有多个分支的时候,可以采用下面命令

    git push origin localbranch:remotebranch  
    

    localbranch表示本地分支名称,remotebranch表示远程版本库分支名称

    git branch 
    

    查看当前本地分支,其中当前使用的分支会在前面加上*号

    git branch -a  
    

    查看所有分支,包括远程分支

    git branch -r  
    

    显示远程版本库

    git remote -v  
    

    查看所有远程版本库

    git branch branchname  
    

    基于当前分支,创建分支

    git checkout branchname 
    

    检出分支,即转到该分支目录下

    git checkout -b currentbranch newbranch  
    

    基于currentbranch分支创建newbranch分支,并且检出newbranch分支

    git branch -m oldname newname  
    

    分支重命名,oldname 为原来名字,newname为新的名字。

    git merge branchname  
    

    合并分支,把branchname分支合并到当前的分支上面来,一般branchname分支是基于当前分支创立的。 这种合并方法是合并全部的。

    git cherry-pick -n 提交号1
    git cherry-pick -n 提交号2
    .  
    .  
    git cherry-pick -n 提交号m
    

    这样可以任意选择合并哪个提交号,git里面的提交号是由40位的hash码组成一般前七位就足够辨别了。

    git branch -d branchname  
    

    删除分支branchname。

    git status  
    

    查看当前状态

    git fetch origin master  
    

    将远程版本库拖到本地的一个远程版本库中,其实添加一个远程版本库的时候,都会在本地有一个远程版本库的复制。 我们可以通过

    git checkout origin/master  
    

    检出远程版本库,因此fetch命令计时将远程版本库的更新同步到本地的远程版本库


    git pull origin/master  
    

    把远程版本库的更新同步到本地的远程版本库,并且合并与之相对应的本地版本库。相当于下面两条命令的组合:

    git fetch origin master  
    git merge origin/master  
    

    另外:HEAD 关键字指向版本库中的末稍,即为最后一次提交的版本库

    ubuntu下git的可视化工具

    sudo apt-get install gitg
    

    设置git使用代理提交代码

    git config http.proxy http://127.0.0.1:8087/
    git config http.sslVerify false
    git remote add httporigin https://name@github.com/name/reps-name.git
    

    这样子设置之后就可以使用http代理来提交代码了。

    学习git的网站:

    • worldhello

    • 白话git

    • 高校利用git

    • git community book



沪ICP备19023445号-2号
友情链接