Git 初级读本--下
发布在GIt入门2013年10月22日view:2069
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

远程仓库

在自己电脑的系统上创建一个分支已经已经非常有意思了,但是git真正的目的在于使不同地点的人们为合作完成同一个项目。你可以使用 git remote 命令来添加一个远程仓库,如下所示:

 $ git remote add remotesite ssh://yourdomain.tld/path/to/remote/gitdirectory.git 

[上面的例子使用ssh协议,但是git还支持很多其他的协议]

然后你就可以把本地仓库的东西推送到远程仓库,使用你前面设置好的名称:

 $ git push remotesite +master:refs/heads/master   

以后如果你想更新,只需简单的执行 git push 命令即可:

 $ git push remotesite   

合并

如果一个项目中工作的人超过一个--每个人都在做自己的事情--时间久了你就需要把完成的工作同步一下。git 通过把必要的指针移动到已经完成提交的分支上来优雅的处理此项需求。

在下面的图表中我们把Test分支合并到Master分支,最终我们将得到一个更新版本的Master分支,正如你所期望的那样--这个分支包含Master分支和Test分支所做的改变。

enter image description here

[注意:在进行合并之前确保已经完成所有的提交。否则将出现意想不到的后果]

使用 git 管理网站

enter image description here

如上图所示许多git组件开始协同工作了,我们来看看怎样设置能够让我们通过git来管理一个远程的站点:

你的本地系统

如果在本地系统上还没有一个工作目录,创建一个。这是你做修改的主要地方。进入工作目录:

 git init     

创建一些内容:

 vi index.html     

将内容添加到git索引中:

 git add index.html

进行提交:

git commit

你的服务器

在你的服务器上初始化一个git仓库:

 mkdir /path/website.git && cd /path/website.git && git init --bare

创建一个能将你的代码checkout到实际网站目录中的钩子(hook):

 vi /path/website.git/hooks/post-update

GIT_WORK_TREE=/path/htdocs git checkout -f

 chmod +x /path/website.git/hooks/post-update     

回到本地系统

在本地设置中添加远程仓库

 git remote add website ssh://path/server/website.git     

将本地内容推送到远程仓库:

 git push website +master:refs/heads/master

改变本地的内容,然后将更新推送至远程仓库:

 git push website   

改变将上传到远程git仓库并触发post-update钩子,它会将仓库内容复制到网站目录中--你的实际网站目录(htdocs):

[为了在服务器上完成更新,你只需简单的执行git命令,但有时需要你在命令中提供环境上下文]

 GIT_DIR=/path/website.git GIT_WORK_DIR=/path/htdocs git $some_git_command

[在服务器上你完成add和commit之后不需要进行提交,使用上面的环境变量意味着提交的改变已经呈现在仓库中]

标签

git有一个叫做标签的强大功能,它允许你为某次特定的提交定义一个直观的名字--比如”黄金版本“,或者”版本3“,或者”投入使用之前的版本“。

上述这些都可以使用git tag来完成(非常简单)。你可以像检查分支一样来检查一个版本,这将转向某个特定时间的某个特定的点。

 git tag Glod   

然后...

git checkout Gold

核心命令

git拥有许多很好的命令,git的文档也非常的优秀,因此在此就不提及太多。但是其中有一些我认为是值得在此说一说的:

  • git bisect - 允许你使用git bisect bad 命令将以此引发错误的代码推送标记出来,然后恢复到正常的状态。然后git会让你遍历两个状态之间的所有提交。对于每一个状态你都可以使用 git bisect good 或者git bisect bad 直到你找到引发错误的提交。

  • git stash - 设置那些你丢到一边的修改并且让你在之后能将它们找回来。用法: 你将要切换到另一个可能引发当前改变崩溃的分支,所以你在切换之前使用 git stash。

  • git rm/ mv -删除或移动工作目录中的项目,这些修改对于git来说是可见的,之后可以完成提交。

  • git reset - 重新回到一个特定的状态(提交)。

  • git status -显示工作树的状态 -- 包括索引和当前提交之间的不同,工作树和索引之间的不同,以及没有被git追踪的工作树内的项目。

  • git log -显示提交的日志。

  • git clone - 克隆一个仓库到新目录中。

  • git clean - 移除工作目录中没有被git追踪的项目。

确保你服务器中的.git目录设置了访问权限,如果它位于可访问的内容之间


本文译自A git primer,原文地址http://danielmiessler.com/study/git/

翻译文章需要花费大量时间和精力。如果您觉得本文对自己有帮助,请点击下面链接为我提供一些赞助。您的赞助是我继续前进的动力。

评论
发表评论
5年前
赞了此文章!
5年前
赞了此文章!
5年前
赞了此文章!
WRITTEN BY
张小俊128
Intern in Baidu mobile search department。认真工作,努力钻研,期待未来更多可能。
TA的新浪微博
PUBLISHED IN
GIt入门

前端开发中不可缺少的版本控制工具GIt入门

我的收藏