<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>4's symfony blog &#187; Git</title>
	<atom:link href="http://www.foolbirds.com/c/git/feed" rel="self" type="application/rss+xml" />
	<link>http://www.foolbirds.com</link>
	<description>all about symfony</description>
	<lastBuildDate>Mon, 28 Jun 2010 07:30:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>使用push&amp;pull来管理CVS模式的git公共库</title>
		<link>http://www.foolbirds.com/git-use-push-and-pull.html</link>
		<comments>http://www.foolbirds.com/git-use-push-and-pull.html#comments</comments>
		<pubDate>Wed, 21 Apr 2010 06:07:20 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=1122</guid>
		<description><![CDATA[概要
本文介绍了git format-patch提交更新的替代方案，使用类似CVS的提交和更新来代替现在正使用的操作相对麻烦的format-patch。
如何创建一个CVS模式的公共库?
确保用户组git已存在，确保开发人员在git组中
chgrp -R .git git # 将.git改为git组
chmod -R 775 .git
cd .git&#038;&#038;chmod 664 config description index&#038;&#038;chmod 777 HEAD
通过以上命令就创建了一个CVS模式的公共库，可以方便的使用push和pull来进行操作。
从远程服务器192.168.9.9的/var/proj/project目录检出项目到project目录下
git clone maker@192.168.9.9:/var/proj/project project
每个用户clone项目之后需要设置身份
git config &#8211;global user.name &#8220;maker&#8221; # 改成自己的
git config &#8211;global user.email &#8220;makerwang@gmail.com&#8221;  # 改成自己的
已检出项目不需要做任何修改，在必要情况下设置身份即可。
PUSH
在本地提交(commit)后，使用git push来将本地的(这里指每个开发者独立检出的项目)修改提交到公共库中。
切记,使用push命令提交之后再对公共库进行修改之前要把公共库切换到最新版本
PULL
使用git pull来进行项目的更新，提交前最好使用pull来将项目更新至最新，否则将无法进行push操作。
如果两人同时修改了同一行代码，pull操作将提示冲突&#8221;both modified&#8221;，通过git status查看冲突，人工解决冲突并将解决冲突后的文件再次进行提交，然后再进行push操作。
在给arch的最近一次更新中，发现git push命令无法正常执行，报错
![remote rejected] master -> master (branch is currently checked out)
error: failed to push some refs to &#8216;xxx.xxx.xxx.xxx:xxx/xxx/xxxxx/xxxxxx&#8217;
这是由于git默认拒绝了push操作，需要进行设置，修改.git/config添加如下代码：
[receive]
  [...]]]></description>
			<content:encoded><![CDATA[<p><strong>概要</strong><br />
本文介绍了git format-patch提交更新的替代方案，使用类似CVS的提交和更新来代替现在正使用的操作相对麻烦的format-patch。</p>
<p><strong>如何创建一个CVS模式的公共库?</strong><br />
确保用户组git已存在，确保开发人员在git组中</p>
<blockquote><p>chgrp -R .git git # 将.git改为git组</p></blockquote>
<blockquote><p>chmod -R 775 .git</p></blockquote>
<blockquote><p>cd .git&#038;&#038;chmod 664 config description index&#038;&#038;chmod 777 HEAD</p></blockquote>
<p>通过以上命令就创建了一个CVS模式的公共库，可以方便的使用push和pull来进行操作。<br />
从远程服务器192.168.9.9的/var/proj/project目录检出项目到project目录下</p>
<blockquote><p>git clone maker@192.168.9.9:/var/proj/project project</p></blockquote>
<p>每个用户clone项目之后需要设置身份</p>
<blockquote><p>git config &#8211;global user.name &#8220;maker&#8221; # 改成自己的</p></blockquote>
<blockquote><p>git config &#8211;global user.email &#8220;makerwang@gmail.com&#8221;  # 改成自己的</p></blockquote>
<p>已检出项目不需要做任何修改，在必要情况下设置身份即可。</p>
<p><strong>PUSH</strong><br />
在本地提交(commit)后，使用git push来将本地的(这里指每个开发者独立检出的项目)修改提交到公共库中。<br />
切记,使用push命令提交之后再对公共库进行修改之前要把公共库切换到最新版本</p>
<p><strong>PULL</strong><br />
使用git pull来进行项目的更新，提交前最好使用pull来将项目更新至最新，否则将无法进行push操作。<br />
如果两人同时修改了同一行代码，pull操作将提示冲突&#8221;both modified&#8221;，通过git status查看冲突，人工解决冲突并将解决冲突后的文件再次进行提交，然后再进行push操作。</p>
<p>在给arch的最近一次更新中，发现git push命令无法正常执行，报错</p>
<blockquote><p>![remote rejected] master -> master (branch is currently checked out)<br />
error: failed to push some refs to &#8216;xxx.xxx.xxx.xxx:xxx/xxx/xxxxx/xxxxxx&#8217;</p></blockquote>
<p>这是由于git默认拒绝了push操作，需要进行设置，修改.git/config添加如下代码：</p>
<blockquote><p>[receive]<br />
  denyCurrentBranch = ignore</p></blockquote>
<h3  class="related_post_title">随机日志</h3><ul class="related_post"><li><a href="http://www.foolbirds.com/%e5%a6%82%e4%bd%95%e5%ae%9e%e7%8e%b0%e5%8a%a8%e6%80%81%e6%b7%bb%e5%8a%a0%ef%bc%8f%e5%88%a0%e9%99%a4%e8%a1%a8%e6%a0%bc%e5%85%83%e7%b4%a0.html" title="如何实现动态添加／删除表格元素">如何实现动态添加／删除表格元素</a></li><li><a href="http://www.foolbirds.com/cheat-sheets.html" title="Cheat Sheets!">Cheat Sheets!</a></li><li><a href="http://www.foolbirds.com/use-datetime-in-php5-1-x-with-symfony.html" title="symfony1.4 DateTime对于PHP低版本的兼容问题">symfony1.4 DateTime对于PHP低版本的兼容问题</a></li><li><a href="http://www.foolbirds.com/symfony-cmd.html" title="symfony命令行详解">symfony命令行详解</a></li><li><a href="http://www.foolbirds.com/component-slot-in-symfony.html" title="Symfony中组件槽(Component Slot)的应用">Symfony中组件槽(Component Slot)的应用</a></li><li><a href="http://www.foolbirds.com/add-select-action-in-list.html" title="如何在List表单下面添加select系列动作">如何在List表单下面添加select系列动作</a></li><li><a href="http://www.foolbirds.com/linux-show-service-version.html" title="查看各种服务的版本">查看各种服务的版本</a></li><li><a href="http://www.foolbirds.com/url-in-other-apps2.html" title="怎么在app中构造其它app的链接(二)">怎么在app中构造其它app的链接(二)</a></li><li><a href="http://www.foolbirds.com/use_symfony_routing_change_url.html" title="使用symfony routing.yml 修改URL">使用symfony routing.yml 修改URL</a></li><li><a href="http://www.foolbirds.com/about-i18n.html" title="多语言翻译">多语言翻译</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/git-use-push-and-pull.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>git中使用$Id$显示版本号</title>
		<link>http://www.foolbirds.com/git-show-version.html</link>
		<comments>http://www.foolbirds.com/git-show-version.html#comments</comments>
		<pubDate>Wed, 21 Apr 2010 05:48:58 +0000</pubDate>
		<dc:creator>maker</dc:creator>
				<category><![CDATA[Git]]></category>
		<category><![CDATA[id]]></category>
		<category><![CDATA[ident]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=1004</guid>
		<description><![CDATA[在需要使用该功能的目录下创建.gitattributes文件并在.gitattributes中添加ident属性：

* ident
这样在任何文件中都可以使用$Id$来显示当前文件最后修改的版本号。
如果项目是从svn或者其他版本控制系统移植过来的可能文件中已经有了版本信息，比如
/*
 * $Id: abcdefghijklmn $
 */
象这样的版本信息git会自动识别并替换成git下的版本，当然前提是这个文件有过修改或者提交。
版本控制工具GIT的使用（二）主机打补丁版本控制工具GIT的使用（一）分机打补丁]]></description>
			<content:encoded><![CDATA[<p>在需要使用该功能的目录下创建.gitattributes文件并在.gitattributes中添加ident属性：</p>
<blockquote><p>
* ident</p></blockquote>
<p>这样在任何文件中都可以使用$Id$来显示当前文件最后修改的版本号。<br />
如果项目是从svn或者其他版本控制系统移植过来的可能文件中已经有了版本信息，比如</p>
<blockquote><p>/*<br />
 * $Id: abcdefghijklmn $<br />
 */</p></blockquote>
<p>象这样的版本信息git会自动识别并替换成git下的版本，当然前提是这个文件有过修改或者提交。</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6%e5%b7%a5%e5%85%b7git%e7%9a%84%e4%bd%bf%e7%94%a8%ef%bc%88%e4%ba%8c%ef%bc%89%e4%b8%bb%e6%9c%ba%e6%89%93%e8%a1%a5%e4%b8%81.html" title="版本控制工具GIT的使用（二）主机打补丁">版本控制工具GIT的使用（二）主机打补丁</a></li><li><a href="http://www.foolbirds.com/git-patch.html" title="版本控制工具GIT的使用（一）分机打补丁">版本控制工具GIT的使用（一）分机打补丁</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/git-show-version.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>版本控制工具GIT的使用（二）主机打补丁</title>
		<link>http://www.foolbirds.com/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6%e5%b7%a5%e5%85%b7git%e7%9a%84%e4%bd%bf%e7%94%a8%ef%bc%88%e4%ba%8c%ef%bc%89%e4%b8%bb%e6%9c%ba%e6%89%93%e8%a1%a5%e4%b8%81.html</link>
		<comments>http://www.foolbirds.com/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6%e5%b7%a5%e5%85%b7git%e7%9a%84%e4%bd%bf%e7%94%a8%ef%bc%88%e4%ba%8c%ef%bc%89%e4%b8%bb%e6%9c%ba%e6%89%93%e8%a1%a5%e4%b8%81.html#comments</comments>
		<pubDate>Tue, 07 Apr 2009 04:26:18 +0000</pubDate>
		<dc:creator>zhuozi</dc:creator>
				<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=717</guid>
		<description><![CDATA[上一篇的GIT文章，介绍了在自己的机器上打补丁的方法（即分机打补丁），大家做的东西总归是要合并在一起的嘛，不管需要与否，我们还是了解一下，比较好。（下述方法，可能不适用于所有情况，只是针对我们的操作进行讲解）
我们的工作环境是在Ubuntu下面。
在自己的机器上
sftp root@192.168.1.1   //链接到局域网的服务器
put  /home/zhuozi/project/0001-hello.patch   /home/project/      //把你要打的补丁上传到服务器上 
maker: 这里可以使用scp命令来完成两台主机间的文件传输，上面的动作可以写成
scp ~/project/0001-hello.patch root@192.168.1.1:/home/project/
进入服务器项目的所在目录
git apply --check 0001-hello.patch    //检查补丁是否正确
git apply 0001-hello.patch  //如果补丁正确，应用此命令打补丁
git status   //在服务器上查看需要补丁修改过的文件
git commit  //在服务器上把修改的文件提交
这样服务器上面的补丁就打好了
git中使用$Id$显示版本号版本控制工具GIT的使用（一）分机打补丁]]></description>
			<content:encoded><![CDATA[<p>上一篇的GIT文章，介绍了在自己的机器上打补丁的方法（即分机打补丁），大家做的东西总归是要合并在一起的嘛，不管需要与否，我们还是了解一下，比较好。（下述方法，可能不适用于所有情况，只是针对我们的操作进行讲解）<br />
我们的工作环境是在Ubuntu下面。</p>
<p>在自己的机器上<br />
<code>sftp root@192.168.1.1   //链接到局域网的服务器<br />
put  /home/zhuozi/project/0001-hello.patch   /home/project/      //把你要打的补丁上传到服务器上 </code></p>
<blockquote><p>maker: 这里可以使用scp命令来完成两台主机间的文件传输，上面的动作可以写成<br />
scp ~/project/0001-hello.patch root@192.168.1.1:/home/project/</p></blockquote>
<p>进入服务器项目的所在目录<br />
<code>git apply --check 0001-hello.patch    //检查补丁是否正确<br />
git apply 0001-hello.patch  //如果补丁正确，应用此命令打补丁</code></p>
<p><code>git status   //在服务器上查看需要补丁修改过的文件<br />
git commit  //在服务器上把修改的文件提交</code></p>
<p>这样服务器上面的补丁就打好了</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/git-show-version.html" title="git中使用$Id$显示版本号">git中使用$Id$显示版本号</a></li><li><a href="http://www.foolbirds.com/git-patch.html" title="版本控制工具GIT的使用（一）分机打补丁">版本控制工具GIT的使用（一）分机打补丁</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6%e5%b7%a5%e5%85%b7git%e7%9a%84%e4%bd%bf%e7%94%a8%ef%bc%88%e4%ba%8c%ef%bc%89%e4%b8%bb%e6%9c%ba%e6%89%93%e8%a1%a5%e4%b8%81.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>版本控制工具GIT的使用（一）分机打补丁</title>
		<link>http://www.foolbirds.com/git-patch.html</link>
		<comments>http://www.foolbirds.com/git-patch.html#comments</comments>
		<pubDate>Sun, 04 Jan 2009 07:10:51 +0000</pubDate>
		<dc:creator>zhuozi</dc:creator>
				<category><![CDATA[Git]]></category>

		<guid isPermaLink="false">http://www.foolbirds.com/?p=274</guid>
		<description><![CDATA[最近从SVN转换到GIT下工作，遇到了很多的问题，很多的命令不一样了，有一些原理机制也不太一样了。
从我们实际的项目入手，把我需要用到的主要操作记录下来。
1.checkout
git clone git://address
2.如果你不进行任何配置（我就没有进行任何配置），你现在的工作分支就是当前本机的“主干”，再你修改之后需要进行提交
git commit  这里的提交并不是提交到了，服务器或者你们工作小组的某一台机器，而是提交到了你的本机。（自己本机还需要提交？这个工作原理，大家可以查看一下文档。）
3.在提交之后，我们需要打补丁。
$ git-fetch origin
$ git-rebase origin
$ git-format-patch origin
在执行这三个操作之间最好先 git pull更新一下，再完成这些操作之后，在当前的文件夹下会生成一个文件。你把这个文件，也就是补丁
发给项目的负责人，由他来进行合并。
如果在自己本机提交多次，打补丁的时候会生成多个补丁文件，这样一起传输有一些麻烦，合并起来也不是很方便。我们就需要在打补丁
之前
$git log
先查看一下版本
$git-reset &#8211;soft 哈希数（即版本序号）回退到以前的版本再次重新打补丁，这里的回退只是版本的回退，修改的文件都没有回退
到以前。
整个分机打补丁的流程就完成了，分机需要做的就是更新－&#62;修改－&#62;打补丁。
刚刚接触git，就先写这么多。
PS：补充
经过一阶段的使用，在实际的应用过程中，我们在打补丁的时候遇到了很多的问题。
虽然说具体问题具体分析，但是还是在这里写一下一些问题的处理办法。
#git status   我们在提交之前都会看一下，我们修改了哪些文件。
#git add      如果被修改的文件没有被提交，记得要添加上去。
#git commit   我们把我们自己修改的文件提交一下。
#git pull     更新，一直更新到already什么的，如果遇到冲突了就解决，解决完之后commit上去，再更新
#git log      查看版本，如果补丁打不上，选择回退的版本，也就是服务器上最新的版本。
(这里要注意一下，有的时候会出现一个补丁自动合并的版本，这个时候我们就需要回退到这个版本的下一个)
#git status   版本回退之后，查看一下文件的状态
#git commit   再一次提交
剩下的就是上面提到的打不定的方法了
git中使用$Id$显示版本号版本控制工具GIT的使用（二）主机打补丁]]></description>
			<content:encoded><![CDATA[<p>最近从SVN转换到GIT下工作，遇到了很多的问题，很多的命令不一样了，有一些原理机制也不太一样了。</p>
<p>从我们实际的项目入手，把我需要用到的主要操作记录下来。</p>
<p>1.<strong>checkout</strong></p>
<blockquote><p>git clone git://address</p></blockquote>
<p>2.如果你不进行任何配置（我就没有进行任何配置），你现在的工作分支就是当前本机的“主干”，再你修改之后需要进行提交</p>
<p>git commit  这里的提交并不是提交到了，服务器或者你们工作小组的某一台机器，而是提交到了你的本机。（自己本机还需要提交？这个工作原理，大家可以查看一下文档。）</p>
<p>3.在提交之后，我们需要打补丁。</p>
<blockquote><p>$ git-fetch origin<br />
$ git-rebase origin<br />
$ git-format-patch origin</p></blockquote>
<p>在执行这三个操作之间最好先 git pull更新一下，再完成这些操作之后，在当前的文件夹下会生成一个文件。你把这个文件，也就是补丁<br />
发给项目的负责人，由他来进行合并。<br />
如果在自己本机提交多次，打补丁的时候会生成多个补丁文件，这样一起传输有一些麻烦，合并起来也不是很方便。我们就需要在打补丁<br />
之前<br />
$git log<br />
先查看一下版本<br />
$git-reset &#8211;soft 哈希数（即版本序号）回退到以前的版本再次重新打补丁，这里的回退只是版本的回退，修改的文件都没有回退<br />
到以前。<br />
整个分机打补丁的流程就完成了，分机需要做的就是更新－&gt;修改－&gt;打补丁。<br />
刚刚接触git，就先写这么多。</p>
<p>PS：补充<br />
经过一阶段的使用，在实际的应用过程中，我们在打补丁的时候遇到了很多的问题。<br />
虽然说具体问题具体分析，但是还是在这里写一下一些问题的处理办法。<br />
#git status   我们在提交之前都会看一下，我们修改了哪些文件。<br />
#git add      如果被修改的文件没有被提交，记得要添加上去。<br />
#git commit   我们把我们自己修改的文件提交一下。<br />
#git pull     更新，一直更新到already什么的，如果遇到冲突了就解决，解决完之后commit上去，再更新<br />
#git log      查看版本，如果补丁打不上，选择回退的版本，也就是服务器上最新的版本。<br />
(这里要注意一下，有的时候会出现一个补丁自动合并的版本，这个时候我们就需要回退到这个版本的下一个)<br />
#git status   版本回退之后，查看一下文件的状态<br />
#git commit   再一次提交<br />
剩下的就是上面提到的打不定的方法了</p>
<ul class="related_post"><li><a href="http://www.foolbirds.com/git-show-version.html" title="git中使用$Id$显示版本号">git中使用$Id$显示版本号</a></li><li><a href="http://www.foolbirds.com/%e7%89%88%e6%9c%ac%e6%8e%a7%e5%88%b6%e5%b7%a5%e5%85%b7git%e7%9a%84%e4%bd%bf%e7%94%a8%ef%bc%88%e4%ba%8c%ef%bc%89%e4%b8%bb%e6%9c%ba%e6%89%93%e8%a1%a5%e4%b8%81.html" title="版本控制工具GIT的使用（二）主机打补丁">版本控制工具GIT的使用（二）主机打补丁</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.foolbirds.com/git-patch.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
