Git 简明教程

标签: git 明教 | 发表时间:2011-07-01 02:37 | 作者:(author unknown) satoru
出处:http://simple-is-better.com/

概念

Git 是一款强大的分布式版本控制系统.在他的官网可以找到已经有很多著名的项目正在使用. 何为分布式?

Like most other modern version control systems, Git gives each developer a local copy of the entire development history, and changes are copied from one such repository to another. These changes are imported as additional development branches, and can be merged in the same way as a locally developed branch. Repositories can be easily accessed via the efficient Git protocol (optionally wrapped in ssh for authentication and security) or simply using HTTP - you can publish your repository anywhere without any special webserver configuration required.

Git 非常快.因为在commit时,都保存的是文件快照而不是diff,用空间换时间.所幸如今存储十分廉价.不过也有不好的一点,在clone一个远程仓库的时候非常的慢(GitHub在墙外受限,仓库比较大).

一般处理

初始化:

$ git init 

这样就会在当前目录创建版本库.

常用指令:

添加文件

$ git add FILENAME

删除文件索引,并且删除文件.

$ git rm FILENAME

重命名.

$ git mv OLDFILENAME NEWFILENAME

提交更新,全部.

$ git commit -a

查看日志.

$ git log

查看指定版本日志.

$ git show xxxxx

切换分支.

$ git checkout BRANCHNAME

创建新的分支.

$ git branch BRANCHNAME

当然,有的时候我们需要在修改到一般了突然想到一个不确定可行的情况,于是我们可以就近创建一个分支,转移所有目前修改到此分支中.对原分支没有任何影响.

$ git checkout -b BRANCHNAME

实验完毕,发现可行提交后,直接返回主分支中进行合并.

$ git commit -a $ git checkout master $ git merge BRANCHNAME

分支合并,切换到需要合并的分支中,然后执行merge就能够合并.

$ git merge TARGETBRANCH

更多时候我们需要远程操作.除了直接clone出来一个完整的仓库,需要追加更新.

$ git fetch git://xxxx.xxxx master:LOCALBRANCH

将远程仓库中的分支fetch到本临时分支后(例子中为origin:master),如果指定了分支,则会保存到指定分支中去(例子中为LOCALBRANCH).然后进行代码审核,最后再merge到主分支中去.

当然,也有的时候我们对远程仓库中的代码有绝对信心,或者仅仅只是你一个人在维护,那么就可以直接获取并且合并.

$ git pull git://xxx.xxxx master

历史维护

你可以简单的使用log获得仓库中的日志信息.

$ git log

当然你也可以只查看最近的几个信息,以及其他更多可选的参数查看日志.(git help log会对你有很大的帮助)

Git的版本并不是像Svn中那样的递增序列,而全部都是Hash散列.也就是说你不能去拿r14版,而是给出指定版本的Hash Code进行匹配.这也是由于分布式协作管理引起的.好在Git对这种版本处理进行了许多优化,可以只输入指定版本的前五位就能确定版本.

$ git show xxxxx

想恢复到某一个提交版本中.

$ git reset --hard SHA1_HASH

这样之前的所有提交都没了. 当然,你可能仅仅只是为了切换到前面某个版本.并且不希望影响现在记录.

$ git checkout SHA1_HASH

他们二者(resetcheckout)之间的区别是: - reset : 跳转到指定版本.并且删除该版本后的所有提交. - checkou : 相当于checkout出某个特定的版本并且切换到指定的分支.

还原.

$ git revert SHA1_HASH

更多资源.

Git魔法 Pro Git

# 来源:Bana


在微博上关注: 新浪, 腾讯   投稿

最新招聘

更多>>

相关 [git 明教] 推荐:

Git 简明教程

- satoru - python.cn(jobs, news)
Git 是一款强大的分布式版本控制系统.在他的官网可以找到已经有很多著名的项目正在使用. Like most other modern version control systems, Git gives each developer a local copy of the entire development history, and changes are copied from one such repository to another.

Git基础

- Wolf - 潘魏增
上个月末在公司内部作了一次《Git基础》的主题分享. 这里把分享内容公布出来,希望对一些朋友有用. 如果之前没有接触过Git,wikipedia上面已经有非常好的介绍. pdf格式:http://panweizeng.com/download/git-basics-meituan.pdf. keynote格式:http://panweizeng.com/download/git-basics-meituan.key.

Git-rebase 小筆記

- lepture - YORKXIN×YORKXIN
最近剛好有個機會整理很亂的 Git commit tree,終於搞懂了 rebase 的用法,筆記一下. 大家都知道 Git 有個特色就是 branch 開很大開不用錢,但很多 branches 各自開發,總要在適當時機 merge 進去 master. 看過很多 git 操作指南都告訴我們,可以妥善利用 rebase 來整理看似很亂或是中途可能不小心手滑 commit 錯的 commits ,甚至可以讓 merge 產生的線看起來比較簡單,不會有跨好幾十個 commits 的線.

git架构图解

- - CSDN博客研发管理推荐文章
  最近又遇到Git了,发现网络上Git的资料确实不咋滴,难懂不全面. 至于Git是什么我就不多说了,相比svn上手确实更难. 与svn集中版本库相比较,Git被称作分布式版本库,在分布式的版本库中任何一个库都可以作为中心库看待. 如果说svn是颗树,那么Git就像一张网. Svn在每个目录都有一个.svn文件夹存放信息,而git只在根目录才有,这就决定了svn可以单独拉取某个子目录或者某个文件,而git需要全部拉取.

一些 Git 設定偏好

- dylan - ihower { blogging }
讓 command line 指令列顯示目前處在哪一個 Git Brnach,最早是在 RGBA 看到這一招,非常方便. 請修改家目錄的 ~/.bashrc 或 ~/.bash_profile 檔案:. 記得打開 Git 的 color 設定,這樣 Git 指令的輸出結果才會加上顏色,像是 git status 等:.

Git和Mercurial(Hg)的分析

- gOODiDEA - 译言-电脑/网络/数码科技
来源Analysis of Git and Mercurial. 原文地址:http://code.google.com/p/support/wiki/DVCSAnalysis. (译者注:Mercurial以下简称Hg). 注:这篇分析完成于2008年夏季,当时我们正第一次为Google Code支持DVCS而作的研究工作.

GoogleCode 的 git 使用小记

- Fstone - Gracecode.com
早先就知道 GoogleCode 支持 git,不过一直没时间体验. 近期实在受不了频繁的 svn commit 加上公司的联通网络访问 GoogleCode 实在是慢得让人无法忍受,于是咬咬牙想把 GoogleCode 中那陈年的代码迁移到 git 控制中. 总得来讲,设置 GoogleCode 项目中新的版本控制方案并不复杂,只需要在管理中点击需要的版本控制系统就行.

理解Git工作流

- joyoner - FeedzShare
来自: 黑客志 - FeedzShare  . 发布时间:2011年08月04日,  已有 2 人推荐. 如果你不了解Git背后的设计初衷,那么你正处在危险境地,当然有很多参数可以强迫Git按照你的意愿行事,但这并不是Git被设计的工作方式,这就好比你可以把改锥当锤子使用,并且它也可以完成工作,但这对改锥没什么好处.

git和github简介(上)

- linyehui - 没做完,没准备好
在此贴上本人在Web标准化交流会6月25日北京站的主题分享. 在线PPT:http://jinjiang.github.com/slides/learning-git/. PPT源码:https://github.com/Jinjiang/slides/tree/gh-pages/learning-git.

Git flow 開發流程

- DBLobster - ihower { blogging }
Update: 2011/3/19 受邀有場分享 Git介紹,使用與開發流程 at Facebook 軟體開發團隊工具心得分享. 大家都知道 Git 開 branch 很方便,非常鼓勵 topic branch,但有沒有一套模型流程告訴我們應該怎麼管理 branch 呢. 有人便整理出一套最佳實踐慣例 A successful Git branching model,我們團隊就採用了這套流程.