$ git-branch
全部博文(2065)
分类: LINUX
2010-07-17 10:04:59
$ mkdir gittutorcn
$ cd gittutorcn
$ git-init-db
git 将会作出以下的回应
defaulting to local storage area
这样,一个空的版本库就创建好了,并在当前目录中创建一个叫 .git 的子目录。你可以用 ls -a 查看一下
,并请注意其中的三项内容:
1、一个叫 HEAD 的文件。
2、一个叫 objects 的子目录,它包含了你的项目中的所有对象,我们不必直接地了解到这些对象内容,
我们应该关心是存放在这些对象中的项目的数据。
3、一个叫 refs 的子目录,它用来保存指向对象的索引。
现在已经创建好了一个 git 版本库,但是它是空的,还不能做任何事情,下一步就是怎么向版本库植入数据了。
PS:其实这个跟SVN很像。先创建出来一个空的版本仓库出来,然后往里面丢代码。
$ echo "Silly example" > example
我们再用 git-add 命令将这两个文件加入到版本库文件索引当中:
$ git-add hello example
git-add 实际上是个脚本命令,它是对 git 内核命令 git-update-index 的调用。因此上面的命令和下面
的命令其实是等价的:
$ git-update-index --add hello example
PS:命令进行一次了封装处理!
如果你要将某个文件从 git 的目录跟踪系统中清除出去,同样可以用git-update-index 命令。例如:
$ git-update-index --force-remove foo.c
应该建立一个清晰的概念就是,git-add 和 git-update-index
只是刷新了 git 的跟踪信息,hello 和 example 这两个文件中的内容并没有提交到 git 的内容跟踪范畴之内。
$ git-status 查看版本库的状态
提交的命令:
$ git-commit -m "Initial commit of gittutor reposistory"
$ git-update-index hello
$ git-commit -m "new day for git"
更新索引与内容。
创建一个属于自己的个人工作分支,以避免对主分支 master 造成太多的干扰, 也方便与他人交流协作。
当进行高风险的工作时,创建一个试验性的分支,扔掉一个烂摊子总比收拾一个烂摊子好得多。
合并别人的工作的时候,最好是创建一个临时的分支,关于如何用临时分支合并别人的工作的技巧, 将会在后面讲述。
$ git-branch robin
$ git-checkout robin
$ git-branch -D branch-name
$ git-branch
$ cat .git/HEAD 查看一下跟踪索引就能知道当前在哪个分支上面操作了!
$ git-checkout robin
$ echo "Work, work, workd" >> hello
$ git-commit -m "Some workd" -i hello
$ git-checkout master
$ echo "Play, play, play" >> hello
$ echo "Lots of fun" >> example
git-show-branch 命令可以使我们看到版本库中每个分支的世系发展状态,并且可以看到每次提交的内容是否已进入每个分支。
$ git-commit -m "Some fun" -i hello example
$ git-show-branch 这个命令让我们看到版本库的发展记录。
譬如我们要查看世系标号为 master^ 和 robin 的版本的差异情况,我们可以使用这样的命令:
$ git-diff master^ robin
我们现在再用 git-whatchanged 命令来看看 master 分支是怎么发展的。[我们的主分支是如何发展起来的!]
使用语法:
$ git-checkout master 对主分支锁定然后开始观察其发展情况的!
$ git-whatchanged
在 robin 分支中的日志为 "Some work" 的内容,并没有在 master 分支中出现。
说明:用分支来管理这个分支下面的内容更新!
$ git-checkout master [先checkout第一个项目分支即主分支]
$ git-merge "Merge work in robin" HEAD robin [然后将我们的项目合并进来]
合并两个分支,还有一个更简便的方式,下面的命令和上面的命令是等价的。
$ git-checkout master
$ git-pull . robin [直接合并两个分支]
以上是典型的两路合并(2-way merge)算法,绝大多数情况下已经够用。但是还有更复杂的三路合并和
多内容树合并的情况。
git-reset [--mixed | --soft | --hard] [
$ git-checkout -f foo.c
PS:从版本库里面提取出来数据来覆盖掉当前的文件。
$ git-tag my-first-tag
$ git-fetch根据不同的远程版本库所使用的通讯协议的路径来替代上面的 remoted-repository 就可以了。
rsync://remote.machine/patch/to/repo.git/
remote.machine:/path/to/repo.git
or
ssh://remote.machine/patch/to/repo.git/
这是可以上传和下载的双向传输协议,当然,你要有通过 ssh 协议登录远程机器的权限。 它可以找出两端的机器提交过的对象集之中相互缺少了那些对象,从而得到需要传输的最小对象集。 这是最高效地交换两个版本库之间的对象的方式(在 git 兼容的所有传输协议当中)。
下面是个取得 SSH 远程版本库的命令例子:
博主推荐一本GIT方面的好书:
29.85元 |