github详解

前言

Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多的影响,文章分为两部分,第一部分介绍Git的一些常用命令,其中穿插介绍Git的基本概念和原理,第二篇重点介绍 Git的使用技巧,最后会在Git Hub上创建一个开源项目开启你的Git实战之旅

Git是什么

Git在Wikipedia上的定义:它是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。Git最初被Linus Torvalds开发出来用于管理Linux内核的开发。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖 于网络和中心服务器。

Git的出现减轻了许多开发者和开源项目对于管理分支代码的压力,由于对分支的良好控制,更鼓励开发者对自己感兴趣的项目做出贡献。其实许多开源项目 包括Linux kernel, Samba, X.org Server, Ruby on Rails,都已经过渡到使用Git作为自己的版本控制工具。对于我们这些喜欢写代码的开发者嘛,有两点最大的好处,我们可以在任何地点(在上班的地铁 上)提交自己的代码和查看代码版本;我们可以开许许多多个分支来实践我们的想法,而合并这些分支的开销几乎可以忽略不计。

Git 初始化

现在进入本篇文章真正的主题,介绍一下Git的基本命令和操作,会从Git的版本库的初始化,基本操作
和独有的常用命令三部分着手,让大家能够开始使用Git。

Git通常有两种方式来进行初始化:

git clone: 这是较为简单的一种初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一份,例如'git clone git://github.com/someone/some_project.git some_project'命令就是将
'git://github.com/someone/some_project.git'这个URL地址的远程版 本库完全克隆到本地some_project
目录下面

git init 和 git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用 git init 命令进行初始化,Git以后就会对该目录下的文件进行版本控制,这时候如果你需要将它放到远程服务器上,可以在远程服务器上创建一个目录,并把 可访问的URL记录下来,此时你就可以利用 git remote add 命令来增加一个远程服务器端,例如'git remote add origin git://github.com/someone/another_project.git'这条命令就会增加URL地址为'git: //github.com/someone/another_project.git',名称为origin的远程服务器,以后提交代码的时候只需要使用 origin别名即可

Git 基本命令

 现在我们有了本地和远程的版本库,让我们来试着用用Git的基本命令吧:

   git pull: 从版本库(既可以是远程的也可以是本地的)将代码更新到本地

   git add :将所有改动的文件(新增和有变动的)放在暂存区,由git进行管理

   git rm :从当前的工作空间中和索引中删除文件,例如'git rm app/model/user.rb',移除暂存区

   git commit:提交的时候必须用-m来输入一条提交信息,例如'git commit -m "user zym"',

   git push:将本地commit的代码更新到远程版本库中,例如'git push origin branchname'

   git log:查看历史日志

   git revert:还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert18ff9ff637ce1]0'

Git 独有命令

git branch

对分支的增、删、查等操作,例如 git branch new_branch 会从当前的工作版本创建一个叫做new_branch的新分支,git branch -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 rebase

用下面两幅图解释会比较清楚一些,rebase命令执行后,实际上是将分支点从C移到了G,这样分支也就具有了从C到G的功能 (使历史更加简洁明了)

git reset

回滚到指定的版本号,我们有A-G提交的版本,其中C 的版本号是 bbaf6fb,我们执行了'git reset bbaf6fb'那么结果就只剩下了A-C三个提交的版本

git stash

将当前未提交的工作存入Git工作栈中,时机成熟的时候再应用回来,这里暂时提一下这个命令的用法,后面在技巧篇会重点讲解

git config

新增、更改Git的各种设置,例如:git config branch.master.remote origin 就将master的远程版本库设置为别名叫做origin版本库

git tag

将某个版本打上一个标签,例如:git tag revert_version bbaf6fb50 来标记这个被你还原的版本,那么以后你想查看该版本时,就可以使用 revert_version标签名,而不是哈希值了

Git 其他命令

  git add                   添加文件内容至索引

  git branch                列出、创建或删除分支

  git checkout              检出一个分支或路径到工作区

  git clone                克隆一个版本库到一个新目录

  git  commit              最近一次的提交,--amend修改最近一次提交说明

  git  diff                显示提交之间、提交和工作区之间等的差异  

  git fetch               从另外一个版本库下载对象和引用 

  git init                创建一个空的 Git 版本库或重新初始化一个已存在的版本库

  git log                  显示提交日志 --stat 具体文件的改动

  git reflog           记录丢失的历史

  git merge                合并两个或更多开发历史,--squash 把分支所有提交合并成一个提交

  git mv                  移动或重命名一个文件、目录或符号链接

  git pull               获取并合并另外的版本库或一个本地分支(相当于git fetch和git merge)

  git push                 更新远程引用和相关的对象  

  git rebase             本地提交转移至更新后的上游分支中

  git reset                  重置当前HEAD到指定状态

  git rm                      从工作区和索引中删除文件

  git show                  显示各种类型的对象

  git status                  显示工作区状态

  git tag                        创建、列出、删除或校验一个GPG签名的 tag 对象

git分支命令

git branch name                       创建分支

git checkout name                     切换分支

git branch                            查看当前分支情况,当前分支前有*号

git add readme.txt                    提交到暂存区

git commit -m “ym shangchuan”         提交到git版本仓库

git checkout master                   我们在提交文件后再切回master分支

你可能感兴趣的:(github详解)