本文共 2411 字,大约阅读时间需要 8 分钟。
很多人认为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命令会把隐藏区域的内容清空。 转载于:https://my.oschina.net/weiweiblog/blog/518034