Git是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具
什么是版本控制?版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统。在本文所展示的例子中,我们仅对保存着软件源代码的文本文件作版本控制管理,但实际上,你可以对任何类型的文件进行版本控制。
对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。
已提交表示该文件已经被安全地保存在本地数据库中了;
已修改表示修改了某个文件,但还没有提交保存;
已暂存表示把已修改的文件放在下次提交时要保存的清单中。
Git 管理项目时,文件流转的三个工作区域:Git 的工作目录,暂存区域,以及本地仓库。

1.在工作目录中修改某些文件。
2.对修改后的文件进行快照,然后保存到暂存区域。
3.提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。
所以,我们可以从文件所处的位置来判断状态:如果是 Git 目录中保存着的特定版本文件,就属于已提交状态;如果作了修改并已放入暂存区域,就属于已暂存状态;如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态。

已提交(committed):表示数据文件已经顺利提交到Git版本库中。
已修改(modified):表示数据文件已经被修改,但未被保存到Git版本库中。
已暂存(staged):表示数据文件已经被修改,并会在下次提交时提交到Git版本库中。

安装方法有两种:
一、yum命令安装,此方法简单,并且会自动安装依赖的包,而且会从源里安装最新的版本,不过不一定是git最新的。
二、源码安装,这个要比yum方式较麻烦点,不过过程还是比较清晰的,毕竟源码安装也比较普遍了。
本文采用yum方式安装git,操作如下:
[root@cong11 ~]# yum install -y git
[root@cong12 ~]# yum install -y git
查看git版本
[root@localhost ~]# git --version

[root@cong11 ~]# useradd git
[root@cong11 ~]# passwd git
[root@cong11 ~]# su git #切换到git用户
[git@cong11 ~]$ mkdir project.git
[git@cong11 ~]$ ls
project.git
[git@cong11 ~]$ cd project.git/
[git@cong11 project.git]$ git init --bare #初始化仓库
初始化空的 Git 版本库于 /home/git/project.git/
[root@cong12 ~]# mkdir git
[root@cong12 ~]# cd git
[root@cong12 git]# git clone git@192.168.1.11:/home/git/project.git
[root@cong12 git]# ll
total 0
drwxr-xr-x. 3 root root 18 Jun 24 22:31 project
给project项目添加一个文件
[root@cong12 project]# echo " NO.1">1.thml
[root@cong12 project]# git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# 1.thml
nothing added to commit but untracked files present (use "git add" to track)
第一次查看,这个文件还没有添加到暂存区的
使用git add把新建的文件加到git缓冲区
[root@cong12 project]# git add 1.thml
然后在查看状态
[root@cong12 project]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: 1.thml
#
有添加,那就有删除
它也提示你了
git rm --cached readme
使用git commit把缓存区的文件添加到本地仓库
[root@cong12 project]# git commit -m "NO.1"
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"to set your account's default identity.
Omit --global to set the identity only in this repository.fatal: unable to auto-detect email address (got 'root@cong12.(none)')
然后它会提示你设置邮箱和姓名,我们设置一下邮箱和姓名
[root@cong12 project]# git config --global user.email "2890679012qq.com"
[root@cong12 project]# git config --global user.name "lisi"
然后我们重新提交到本地仓库
[root@cong12 project]# git commit -m "NO.1"
[master (root-commit) be1e6d3] NO.1
1 file changed, 1 insertion(+)
create mode 100644 1.thml
3.2.6 git log查看日志
[root@cong12 project]# git log、
commit be1e6d33038e8ccb73875009c1868321ba590891
Author: lisi <2890679012qq.com>
Date: Sat Jun 25 08:16:48 2022 +0800
到目前为止自己本地仓库就提交结束了。之后就是提交到远程仓库
[root@cong12 project]# git remote -v
origin git@192.168.1.11:/home/git/project.git (fetch)
origin git@192.168.1.11:/home/git/project.git (push)
origin表示的是远程仓库的别名,以后提交代码的时候只需要使用origin这个别名即可
[root@cong12 project]# git push origin master
git@192.168.1.11's password:
Counting objects: 3, done.
Writing objects: 100% (3/3), 204 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.1.11:/home/git/project.git
* [new branch] master -> master
上面就是一个标准的代码提交的过程,到此自己创建的文件就推到了远程的git仓库了。
git clone: 这是较为简单的一种初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一份
例如:
[root@cong12 ~]# mkdir -p /var/www/html //git仓库目录
[root@cong12 ~]# git clone git@192.168.1.11:/home/git/project.git /var/www/html/
说明:'git clone git@192.168.1.11:/home/git/project.git /var/www/html/'命令就是将' git@192.168.1.11:/home/git/project.git '这个URL地址的远程版本库完全克隆到本地/var/www/html/目录下面
git init和git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用git init命令进行初始化,Git以后就会对该目录下的文件进行版本控制。这时候如果你需要将它放到远程服务器上,此时你就可以利用 git remote add 命令来增加一个远程服务器端,例如' git remote add test ssh://git@192.168.1.11/home/git/project.git '这条命令就会增加URL地址为' ssh://git@192.168.1.11/home/git/project.git ',名称为test的远程服务器,以后提交代码的时候只需要使用test别名即可。
例如:
[root@cong12 ~]# mkdir /git_test
[root@cong12 ~]# git init /git_test //初始化git,指定git仓库路径,同时也是工作目录。
[root@cong12 ~]# cd /git_test/
[root@cong12 git_test]# git remote add test ssh://git@192.168.1.11/home/git/project.git //添加远程库
[root@cong12 git_test]# git remote -v
test ssh://git@192.168.1.11/home/git/project.git (fetch)
test ssh://git@192.168.1.11/home/git/project.git (push)
上面都有说过下面就简单了解一下
git pull:从版本库(既可以是远程的也可以是本地的)将代码拉到本地
git add:将所有改动的文件(新增和有变动的)放在暂存区,由git进行管理
git rm:从当前的工作空间中和索引(暂存区)中删除文件
git commit:提交当前工作空间的修改内容到本地仓库
git push:将本地commit的代码更新到远程版本库中,例如'git push origin branchname'就会将本地的代码更新到名为orgin的远程版本库中branchname分支
git log:查看历史日志
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=