不少人认为Git太混乱或太复杂而没有把它当作版本控制工具。然而Git正在成长,另外不少颇有意思的事情也随之发展起来。这篇文章瞄准了想开始用Git的人群,一般是从Subversion(另外一个版本控制工具)转过来的。这篇文章将包含你须要学会的大部分最经常使用的基本技能。
让咱们开始吧
使用Git你得安装一个版本库。你能够用一个已经存在的目录来作一个Git库,或者建立一个空目录。
把当前的目录设置为一个Git库咱们只须要初始化:
git init
要作一个新目录当作Git库的话,咱们须要指定一个目录:
git init newrepo
从如今起,除非另有说明,咱们假设你一直都在这个Git库的根目录。
添加新文件
因此咱们只有一个什么都没有的库。你能够用add命令来添加文件:
git add filename
想添加你目录里的全部文件你能够用这个:
git add
提交版本
如今咱们已经添加了一些文件,咱们想让它们真正的存在Git库里。能够经过下面这条命令这把它们提交给Git库:
git commit -m “Adding files”
若是遗漏了-m,你须要本身在编辑器里写上信息。
编辑文件
当你对某些文件作出改变时,你能够试试git status来看看提交后会发生什么事。你会注意到一个修改文件的列表,以及一条信息:
no changes added to commit (use “git add” and/or “git commit -a”)
因此除非你明确地用git add添加文件并提交到git库,否则git commit一点用也没有。若是你正在找能自动提交本地修改文件的提交命令能够加上-a标识:
git commit -a -m “Changed some files”
或者若是你只想把某些文件,而不是运行git add,咱们能够传递一些指定的文件:
git commit -m “change some files” file1 file2
必定要注意-a不会提交新文件,而只会提交修改后的文件。
发布你的Git库
把你的库放到服务器上咱们须要从创建一个空库开始,而后把你的Git库上传到服务器上。
cd /tmp
git clone --bare ~/your/repo/path project.git
scp -r project.git ssh://example.com/~/www/
如今若是咱们我不少提交文件并想把它们推送到那个位置:
git push ssh://example.com/~/www/project.git
若是你不喜欢每次都敲URI咱们能够从一个克隆的项目记着它的地址来采起点便利方法:
cd..
git clone ssh://example.com/~/www/project.git project
如今git push就会推送至他克隆来的URI。你能够经过在你的库里手工编辑.git/config来实现这一点。
获取上游的改变
若是你已经照上面把推送安装好了:
git pull
上面这个命令将会把库里的改变获取回来而且把它们结合起来。从非默认路径获取只须要指定URI:
git pull http://git.example.com/project.git
五分钟以外的奖励
提交
你已经注意到了,Git以“提交”的方式在思考。这些提交被一个hash值惟一地标记。你能够用git log命令浏览提交历史和相应的hash值。每一个提交都包含了改动信息,新文件和那些被移除的文件。Add命令会把一个文件放到提交里面。git reset HEAD会把计划提交里的一切都移除掉,但不改变文件里的内容。
移除
若是你想从你的Git库里吧一个文件移除,咱们用rm命令来把它从之后的提交里移除:
git rm file
分支与合并
分支是在本地迅速完成的。咱们用branch命令来创建一个新分支:
git branch test
branch命令并不会把咱们移动到咱们创建的那个分支里去,它只会建立。咱们用checkout命令来变换到不一样的分支里去:
git checkout test
第一个分支,或主要分支,被称为“master”。
git checkout master
然而你在分支里提交的改变并不会在主分支里体现出来。当你完成后,或者想推送改变到主分支的时候,切换到主分支并使用merge命令:
git checkout master
git merge test
另外若是你再也不须要这个分支的时候你能够用branch命令传送-d标识来删掉它:
git branch -d test
穿越时空
你能够再次使用checkout命令很快地恢复Git库到之前的状态:
git checkout HASH
没有提交的改变将会和你一块儿穿越。用git checkout master命令来恢复到预置状态,普通分支也的作法也同样。若是你在过去提交的分支是自动建立的,你对文件作出的改变会与前面的内容结合起来。
之后被掩盖的真相
当在分支之间切换的时候,你本地的改变也会随着变化。有时你想切换分支但又不想提交或让这些改变随着变化。Stash命令容许你把改变放到一个安全的存储里。
git stash
你能够经过传递一个apply或pop参数来从新得到它:
git stash apply
apply和pop命令之间的不一样其实很简单。apply把隐藏状态找出来并加以运用,但在隐藏处还保持它原来的状态(至关于复制出来文件并加以运用,原来的安全存储区域不变)。pop命令会找到隐藏状态,加以运用,而且会把隐藏状态删除掉。git stash clear命令会把隐藏区域的内容清空。