Below you will find pages that utilize the taxonomy term “Git”
July 27, 2024
一款管理 .gitignore 的CLI工具- gitig
"\u003cp\u003e\u003ccode\u003egitig\u003c/code\u003e 是一款基于 \u003ca href=\"https://github.com/github/gitgnore\"\u003ehttps://github.com/github/gitgnore\u003c/a\u003e 仓库开发的\u003ccode\u003e.gitignore\u003c/code\u003e 客户端CLI 管理工具,也是每个开发者必不可少的提高工作效率的必具工具。\u003c/p\u003e\n\u003cp\u003e它基于官方仓库 \u003ca href=\"https://github.com/github/gitgnore\"\u003ehttps://github.com/github/gitgnore\u003c/a\u003e 丰富的 \u003ccode\u003e.gitignore\u003c/code\u003e 数据源,帮助开发者快速实现添加各类开发项目的git版本控制忽略文件清单。\u003c/p\u003e\n\u003ch1 id=\"开发背景\"\u003e开发背景\u003c/h1\u003e\n\u003cp\u003e工作中,经常需要开发各类项目,如基于 vscode 编写 rust 项目,这时为了方便进行Git管理控制,有些项目文件可能并不需要提交到git仓库,需要将一些文件写入 \u003ccode\u003e.gitignore\u003c/code\u003e 文件进行忽略。\u003c/p\u003e\n\u003cp\u003e如果手动编辑 \u003ccode\u003e.gitignore\u003c/code\u003e文件可能有些麻烦,另外也能会有一些文件项被遗忘或写错,这时如果有一些工具可以将行业能用的忽略配置项一键写入 \u003ccode\u003e.gitignore\u003c/code\u003e 文件似乎是一个不错的主意。\u003c/p\u003e\n\u003cp\u003e其中著名的 \u003ca href=\"https://github.com/github/gitignore\"\u003ehttps://github.com/github/gitignore\u003c/a\u003e 就是一个专门收集各类开发语句或IDE 需要忽略的 \u003ccode\u003e.gitignore\u003c/code\u003e 推荐配置的仓库,目前star …\u003c/p\u003e"
May 12, 2024
git 操作中那些常常被忽略的用法
"\u003ch1 id=\"git-merge-与-git-rebase--的区别\"\u003egit merge 与 git rebase 的区别\u003c/h1\u003e\n\u003cp\u003e对于两者的区别,网上已经有很多文章做了介绍,不过有些初学者没有亲自实验过,多数也是作为八股文死记硬背而已。本文为了让大家彻底搞懂两者的区别,所以搞了一个实验环境并模拟了一些真实环境的操作。\u003c/p\u003e\n\u003cp\u003e实验环境主要用到两个分支,其中 main 分支做了主要分支,而 dev 作为开发功能分支。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e在生产环境中需要选择合适的分支,这里只是实验环境,所以分支名不是本文关注的重点。\u003c/p\u003e\u003c/blockquote\u003e\n\u003ctable\u003e\n \u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003emain\u003c/th\u003e\n \u003cth\u003edev\u003c/th\u003e\n \u003cth\u003e说明\u003c/th\u003e\n \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003emkdir git-demo \u0026amp;\u0026amp; cd git-demo \u0026amp;\u0026amp; git init\u003c/td\u003e\n \u003ctd\u003e\u003c/td\u003e\n \u003ctd\u003e\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003etouch 1.txt \u0026amp;\u0026amp; git add . \u0026amp;\u0026amp; git commit -m \u0026lsquo;add 1.txt\u0026rsquo; …\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e"
September 24, 2018
Git中的git reset的三种参数的区别
"\u003cp\u003e我们平时在使用git的时候,经常会遇到需要撤销上次操作的需求,这时候需要用到git reset的这个命令,他的使用就是 “git-reset – Reset current HEAD to the specified state”, 注意这里主要操作的就是这个 \u003cstrong\u003eHEAD\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e为了方便我们先了解一下 Git 的工作流程\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/git_flow.jpg\" alt=\"\"\u003e\u003c/p\u003e\n\u003cp\u003e相信大家对这个图已经很熟悉了,其中index也叫stage暂存区或者暂存索引区。git reset 共有三个互斥参数分别为”–soft”、”–mixed(默认参数)” 和 “–hard”,每种参数表示一种恢复模式,下面我们将分别看一下这git reset 三个参数的用法区别。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e前提条件\u003c/strong\u003e\n我们仓库中的Git 提交顺序为 “A(a.txt) -\u0026gt; B(b.txt) -\u0026gt; C(c.txt)“,当前分支为master。\n当前 HEAD 指向C,即 a47072e9f97eac4ac02c0abac82b26a9719663fc (HEAD -\u0026gt; master),我们以恢复到B(aad0c91e7b1d3577)点为准。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003etest1 git:(master) …\u003c/code\u003e\u003c/pre\u003e"
March 12, 2018
linux下git版本过底引起的无法git clone的解决方案
"\u003cp\u003e刚安装的新系统,git版本为1.8.3,使用git clone命令的时候,提示“… Peer reports incompatible or unsupported protocol version”\u003c/p\u003e\n\u003cp\u003e只需要升级一下基本包即可。\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-shell\" data-lang=\"shell\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003esudo yum update nss curl \u003cspan style=\"color:#75715e\"\u003e# nss为名称解析和认证服务 curl为网络请求库\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e"
March 29, 2017
git无法pull仓库refusing to merge unrelated histories的解决办法
"\u003cp\u003e在本地有一个很久的项目,需要上传到远程git仓库中,先在远程创建了一个仓库,在本地配置好后,发现上传的时候,提示先git pull 一下,但git pull的时候提示这个错误,主要是因为目前两个git仓库信息不一致问题,我们要将两个项目合并在一起,需要添加一个 –allow-unrelated-histories 参数即可。\u003c/p\u003e\n\u003cp\u003e先进入cli命令行模式,执行\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003egit pull origin master --allow-unrelated-histories\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e然后再执行git pull origin master 即可。\u003c/p\u003e\n\u003cp\u003e参考: \u003ca href=\"http://stackoverflow.com/questions/37937984/git-refusing-to-merge-unrelated-histories\"\u003ehttp://stackoverflow.com/questions/37937984/git-refusing-to-merge-unrelated-histories\u003c/a\u003e\u003c/p\u003e"
November 4, 2016
在linux下,解决修改文件权限引起的git出现的文件变化问题
"\u003cp\u003e有时候,我们将服务器上的web文件夹的权限进行了修改,但git默认是也会记录权限状态的,这个时间用git status会发现所有的文件都处于被修改的状,这显示不是我们想要的。这时我们只要让git把文件权限忽略掉就可以了。\u003c/p\u003e\n\u003cp\u003e在操作前首先我们确认一下当前配置项core.filemode,默认为true,(也可以使用cat .git/config查看)\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git config --list\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e然后执行\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git config core.filemode false\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e这样就设置了忽略文件权限。查看下配置:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ cat .git/config\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e[\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/git%E5%BF%BD%E7%95%A5%E6%96%87%E4%BB%B6%E6%9D%83%E9%99%90%E7%9A%84%E9%85%8D%E7%BD%AE.png\" alt=\"git%e5%bf%bd%e7%95%a5%e6%96%87%e4%bb%b6%e6%9d%83%e9%99%90%e7%9a%84%e9%85%8d%e7%bd%ae\"\u003e]\ngit忽略文件权限的配置\u003c/p\u003e"
October 31, 2016
解决git clone时报错:The requested URL returned error: 401 Unauthorized while accessing的问题
"\u003cp\u003e版本问题,最直接的解决办法就是重新编辑安装git吧:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e下载:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ewget -O git.zip https://github.com/git/git/archive/master.zip\n\u003c/code\u003e\u003c/pre\u003e\u003col start=\"2\"\u003e\n\u003cli\u003e解压:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eunzip git.zip\n\u003c/code\u003e\u003c/pre\u003e\u003col start=\"3\"\u003e\n\u003cli\u003e进入git目录:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecd git-master\n\u003c/code\u003e\u003c/pre\u003e\u003col start=\"4\"\u003e\n\u003cli\u003e编译安装:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003eautoconf\n./configure --prefix=/usr/local\nmake \u0026amp;\u0026amp; make install\n\u003c/code\u003e\u003c/pre\u003e\u003col start=\"5\"\u003e\n\u003cli\u003e最后别忘了删掉旧的git,并把新版本的git建立软链接到/usr/bin/git\u003c/li\u003e\n\u003c/ol\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003erm /usr/bin/git\nln -s /usr/local/bin/git /usr/bin/git\n\u003c/code\u003e\u003c/pre\u003e"
October 25, 2016
git提示“Pull is not possible because you have unmerged files.”的解决办法(转)
"\u003cp\u003e在git pull的过程中,如果有冲突,那么除了冲突的文件之外,其它的文件都会做为staged区的文件保存起来。\u003c/p\u003e\n\u003cp\u003e重现:\u003c/p\u003e\n\u003cp\u003e$ git pull\u003c/p\u003e\n\u003cp\u003eA Applications/Commerce/BookingAnalysis.java\nA Applications/Commerce/ClickSummaryFormatter.java\nM Applications/CommerceForecasting/forecast/Forecast.java\nA Applications/CommerceForecasting/forecast/ForecastCurveProviderCategory.java\nM Applications/CommerceForecasting/forecast/ForecastProvider.java\nM Applications/CommerceForecasting/forecast/InputPropertyItem.java\n……\u003c/p\u003e\n\u003cp\u003eA …\u003c/p\u003e"
May 16, 2016
Git 工具 – submodule 子模块
"\u003cp\u003e\u003ca href=\"https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97\"\u003ehttps://git-scm.com/book/zh/v2/Git 工具-子模块\u003c/a\u003e\u003c/p\u003e"
February 23, 2016
Git-svn命令对比表,svn用户必看
"\u003cp\u003e提供给从svn转git的开发人员参考\u003c/p\u003e\n\u003cp\u003eGit与Subversion的命令对比表\u003c/p\u003e\n\u003ctable\u003e\n \u003cthead\u003e\n \u003ctr\u003e\n \u003cth style=\"text-align: left\"\u003e\u003cstrong\u003e操作\u003c/strong\u003e\u003c/th\u003e\n \u003cth style=\"text-align: left\"\u003e\u003cstrong\u003eGIT\u003c/strong\u003e\u003c/th\u003e\n \u003cth style=\"text-align: left\"\u003e\u003cstrong\u003eSUBVERSION\u003c/strong\u003e\u003c/th\u003e\n \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd style=\"text-align: left\"\u003e复制数据仓库\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003egit clone\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003esvn checkout\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"text-align: left\"\u003e提交\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003egit commit\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003esvn commit\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"text-align: left\"\u003e查看提交的详细记录\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003egit show\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003esvn cat\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"text-align: left\"\u003e确认状态\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003egit status\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003esvn status\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"text-align: left\"\u003e确认差异\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003egit diff\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003esvn diff\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd style=\"text-align: left\"\u003e确认记录\u003c/td\u003e\n \u003ctd style=\"text-align: left\"\u003egit …\u003c/td\u003e\u003c/tr\u003e\u003c/tbody\u003e\u003c/table\u003e"
December 22, 2015
使用 Git Hook 实现网站的自动部署
"\u003cp\u003e自动化能解放人类的双手,而且更重要的是,因为按照规定的流程来走,也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的,FTP 覆盖旧文件、服务器定时任务去 build 最新的源码,还是有更高级的做法?\u003c/p\u003e\n\u003cp\u003e目前我在使用 Git Hook 来部署自己的项目。Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用。其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 bash 脚本。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eGit的挂钩(Hook)主要包含:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eapplypatch-msg\u003c/li\u003e\n\u003cli\u003epost-update\u003c/li\u003e\n\u003cli\u003epre-rebase\u003c/li\u003e\n\u003cli\u003ecommit-msg\u003c/li\u003e\n\u003cli\u003epre-applypatch\u003c/li\u003e\n\u003cli\u003eupdate\u003c/li\u003e\n\u003cli\u003epost-commit\u003c/li\u003e\n\u003cli\u003epre-commit\u003c/li\u003e\n\u003cli\u003epost-receive\u003c/li\u003e\n\u003cli\u003eprepare-commit-msg\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e这里我们只需要使用 post-receive 这个 Hook:在接收 post(push)请求之后执行。\u003c/p\u003e\n\u003cp\u003e下面是我使用 Git Hook 进行简单的自动化部署,可能还有更高级的做法,大家自己去挖掘。\u003c/p\u003e\n\u003cp\u003e服务器上需要配 …\u003c/p\u003e"
December 22, 2015
Git中的hooks钩子
"\u003cp\u003eGit可以定制一些钩子,这些钩子可以在特定的情况下被执行,分为Client端的钩子和Server端的钩子。\nClient 端钩子被operation触发,比如commit,merge等Server 端钩子被网络动作触发,比如pushed commits。\u003c/p\u003e\n\u003cp\u003e那么钩子是放在哪的呢?\u003c/p\u003e\n\u003cp\u003e在.git/hooks/文件夹下。当你init一个仓库的时候,下边会有一些钩子的例子,以.sample结尾。\u003c/p\u003e\n\u003cp\u003e那么钩子什么时候被执行,Git预定义了触发时机:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eClientSide hooks:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1 pre-commit,当执行commit动作时先执行此hook,可以用此hook做一些检查,比如代码风格检查,或者先跑测试。\u003c/p\u003e\n\u003cp\u003e2 prepare-commit-msg, 当commit时需要输入message前会触发此hook,可以用此hook来定制自己的default message信息。\u003c/p\u003e\n\u003cp\u003e3 commit-msg,当用户输入commit的message后被触发,可以用此hook校验message的信息,比如是否符合规定,有没有cr等。\u003c/p\u003e\n\u003cp\u003e4 post-commit, 当commit完成后被触发,可以用此hook发 …\u003c/p\u003e"
December 9, 2015
常用 Git 命令清单(推荐)
"\u003cp\u003e作者: \u003ca href=\"http://www.ruanyifeng.com\"\u003e阮一峰\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e日期: \u003ca href=\"http://www.ruanyifeng.com/blog/2015/12/\"\u003e2015年12月 9日\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e我每天使用 Git ,但是很多命令记不住。\u003c/p\u003e\n\u003cp\u003e一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"http://www.ruanyifeng.com/blogimg/asset/2015/bg2015120901.png\" alt=\"\"\u003e\u003c/p\u003e\n\u003cp\u003e下面是我整理的常用 Git 命令清单。几个专用名词的译名如下。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eWorkspace:工作区\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eIndex / Stage:暂存区\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRepository:仓库区(或本地仓库)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eRemote:远程仓库\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"一新建代码库\"\u003e一、新建代码库\u003c/h2\u003e\n\u003cblockquote\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 在当前目录新建一个Git代码库\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git init\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 新建一个目录,将其初始化为Git代码库\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git init \u003cspan style=\"color:#f92672\"\u003e[\u003c/span\u003eproject-name\u003cspan style=\"color:#f92672\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 下载一个项目和它的整个代码历史\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git clone \u003cspan style=\"color:#f92672\"\u003e[\u003c/span\u003eurl\u003cspan style=\"color:#f92672\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"二配置\"\u003e二、配置\u003c/h2\u003e\n\u003cp\u003eGit的设置文件为\u003ccode\u003e.gitconfig\u003c/code\u003e,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"\u003e\u003ccode class=\"language-bash\" data-lang=\"bash\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 显示当前的Git配置\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git config --list\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 编辑Git配置文件\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git config -e \u003cspan style=\"color:#f92672\"\u003e[\u003c/span\u003e--global\u003cspan style=\"color:#f92672\"\u003e]\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#75715e\"\u003e# 设置提交代码时的用户信息\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e$ git config \u003cspan style=\"color:#f92672\"\u003e[\u003c/span\u003e--global …\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003c/blockquote\u003e"
November 5, 2015
基于SourceTree 下的 Git Flow 模型
"\u003cp\u003egitflow 开发流程参考: \u003ca href=\"http://blog.haohtml.com/archives/15317\"\u003ehttp://blog.haohtml.com/archives/15317\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e[\u003cimg src=\"https://blog--static.oss-cn-shanghai.aliyuncs.com//uploads/2023/09/git_flow.png\" alt=\"git_flow\"\u003e][1]\n\u003cstrong\u003e基于SourceTree 下的 Git Flow 模型\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003esourceTree 是一个开源的git 图形管理工具,可下载mac版本,windows版本\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eGit Flow 是一套使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具。\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003e基本的操作流程\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e\n\u003cp\u003e先用sourceTree 创建本地git 项目,xxxProject,\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e在项目里面先提交一次 commit 一下,默认提交在了 master分支;\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e然后在 sourceTree工具 右上角,点击 GitFlow,开启git Flow 规范模型的开发\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e[\u003cimg src=\"https://blog--static.oss-cn-shanghai.aliyuncs.com//uploads/2023/09/git-flow_1.png\" alt=\"git-flow_1\"\u003e][2]\u003c/p\u003e\n\u003cp\u003e如上图,在开启gitFlow 之后;\u003c/p\u003e\n\u003cp\u003e生产环境分支使用:master\u003c/p\u003e\n\u003cp\u003e开发分支使用:develop\u003c/p\u003e\n\u003cp\u003e当需要新增加功能,发布版本时,创建补丁修复bug时,分别有对应的 feature,release,hotfix前缀这样的分支\u003c/p\u003e\n\u003cp\u003e这样在项目的开发过程之中,管理项目分支就变得非常的规范了;\u003c/p\u003e\n\u003cp\u003e4:开启之后,我们的项目就回到 …\u003c/p\u003e"
November 4, 2015
Git忽略文件权限
"\u003cp\u003e默认git会记录文件的权限信息,如果文件的权限信息被修改,那么git也作为一个差异保存。但是我们有时候是不需要这方面的差异的(例如在Windows下使用Cygwin),这时需要关闭文件权限的检查。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"https://blog--static.oss-cn-shanghai.aliyuncs.com//uploads/2023/09/20230904181521.png\" alt=\"img\"\u003e\u003c/p\u003e\n\u003cp\u003egit中可以加入忽略文件权限的配置,具体如下:\u003c/p\u003e\n\u003cp\u003e$ git config core.filemode false\n$ git config \u0026ndash;list\u003c/p\u003e\n\u003cp\u003e也可以使用以下命令查看是否生效。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecat .git/config\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cimg src=\"https://blog--static.oss-cn-shanghai.aliyuncs.com//uploads/2023/09/20230904181513.png\" alt=\"img\"\u003e\u003c/p\u003e\n\u003cp\u003e还有一个小问题,在设置这个属性之前权限就混乱的话,是无法自动修复的。这时候,如果仅仅是权限混乱的话,直接\u003ccode\u003egit reset --hard\u003c/code\u003e恢复吧,git会将项目完全恢复到最近一次提交,包括权限。 \u003c/p\u003e"
November 1, 2015
git diff命令详解
"\u003cp\u003ediff里面a表示前面那个变量,b表示第二个变量\u003c/p\u003e\n\u003cp\u003eHEAD commit版本\nIndex staged版本\u003c/p\u003e\n\u003cp\u003ea、查看尚未暂存的文件更新了哪些部分,不加参数直接输入\ngit diff\n此命令比较的是工作目录(Working tree)和暂存区域快照(index)之间的差异\n也就是修改之后还没有暂存起来的变化内容。\u003c/p\u003e\n\u003cp\u003eb、查看已经暂存起来的文件(staged)和上次提交时的快照之间(HEAD)的差异\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003egit diff –cached\ngit diff –staged\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e显示的是下一次commit时会提交到HEAD的内容(不带-a情况下)\u003c/p\u003e\n\u003cp\u003ec、显示工作版本(Working tree)和HEAD的差别\ngit diff HEAD\u003c/p\u003e\n\u003cp\u003ed、直接将两个分支上最新的提交做diff\ngit diff topic master 或 git diff topic..master\u003c/p\u003e\n\u003cp\u003ee、输出自topic和master分别开发以来,master分支上的changed。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003egit diff topic…master\nChanges that occurred on the master branch …\u003c/code\u003e\u003c/pre\u003e"
October 19, 2015
写好 Git Commit 信息的 7 个建议
"\u003cp\u003e这里推荐: \u003ca href=\"http://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html\"\u003ehttp://www.ruanyifeng.com/blog/2016/01/commit_message_change_log.html\u003c/a\u003e\n\u003cstrong\u003e介绍: 为什么好的提交信息如此重要\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e当你随意浏览任一 git 仓库的日志,你很可能会发现其中的提交信息或多或少有点乱。举个例子,瞧一瞧我早先提交到 Spring 上的这些宝贝:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$ git log –oneline -5 –author cbeams –before “Fri Mar 26 2009”\u003c/p\u003e\n\u003cp\u003ee5f4b49 Re-adding ConfigurationPostProcessorTests after its brief removal in r814. @Ignore-ing the testCglibClassesAreLoadedJustInTimeForEnhancement() method as it turns out this was one of the culprits in the recent build breakage. The classloader hacking causes subtle …\u003c/p\u003e\u003c/blockquote\u003e"
September 10, 2015
git中 gitignore 文件的正确用法
"\u003cp\u003e使用 git 做代码管理工具时,设置 gitignore 是必不可少的流程,一些系统或者 IDE 会在目录下生成与项目不相关的文件,而这些文件我们不期望被提交到仓库之中。理解 gitignore 的 pattern 规则十分重要。\u003c/p\u003e\n\u003ch3 id=\"Pattern_规则\"\u003e\u003cstrong\u003ePattern 规则\u003c/strong\u003e\u003c/h3\u003e\n\u003cp\u003e关于 Pattern 规则,可以查看 git 的相关文档: \u003ca href=\"http://git-scm.com/docs/gitignore\"\u003ehttp://git-scm.com/docs/gitignore\u003c/a\u003e,大致有以下几点:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e空行不匹配任何内容,所以可以作为块分隔符;\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003e#\u003c/code\u003e 开头表示注释,如果相匹配 \u003ccode\u003e#\u003c/code\u003e,可以在前面加一个反斜杠,即 \u003ccode\u003e\\#\u003c/code\u003e;\u003c/li\u003e\n\u003cli\u003e除非加了反斜杠,否则一连串的空格会被忽略;\u003c/li\u003e\n\u003cli\u003e如果在匹配的内容前面加上 \u003ccode\u003e!\u003c/code\u003e,则这些匹配过的部分将被移出,如果要匹配以 \u003ccode\u003e!\u003c/code\u003e 开头的内容,需要加上反斜杠,如 \u003ccode\u003e\\!important.txt\u003c/code\u003e;\u003c/li\u003e\n\u003cli\u003e如果一个匹配 pattern 后面有一个斜杠,如 \u003ccode\u003efoo/\u003c/code\u003e,则默认会匹配所有(包含父子文件夹)中的 foo 文件夹内容,并且它不会匹配单个的文件;\u003c/li\u003e\n\u003cli\u003e如果一个匹配 pattern 不包含斜杠,如 \u003ccode\u003efoo\u003c/code\u003e,Git 会将其作为一个 shell 的查找命令匹配内容。\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e需要注意的\u003ccode\u003e**\u003c/code\u003e: …\u003c/p\u003e"
June 17, 2015
git commit 与 git commit -a 的区别
"\u003cp\u003e软件版本:\n操作系统:ubuntu10.04\n内核版本:Linux version 2.6.32-36-generic\ngit 版本:git version 1.7.0.4\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e目录:\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e文件状态\u003c/li\u003e\n\u003cli\u003e提交\n2.1 git commit 与 git commit -a\n2.2 添加提交信息\u003c/li\u003e\n\u003cli\u003e修改/取消\u003c/li\u003e\n\u003cli\u003e参考资料\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003e1. 文件状态\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e一般仓库中的文件可能存在于这三种状态:\u003c/p\u003e\n\u003cp\u003e1)Untracked files → 文件未被跟踪;\n2)Changes to be committed → 文件已暂存,这是下次提交的内容;\n3) Changes bu not updated → 文件被修改,但并没有添加到暂存区。如果 commit 时没有带 -a 选项,这个状态下的文件不会被提交。\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$git status\n# On branch master\n# Changes to be committed:\n# (use \u0026#34;git reset HEAD \u0026lt;file\u0026gt;...\u0026#34; to unstage)\n#\n# new file: file2\n#\n# Changed but …\u003c/code\u003e\u003c/pre\u003e"
December 23, 2013
git stash和git stash pop的用法
"\u003cp\u003e推荐阅读: \u003ca href=\"http://www.cppblog.com/deercoder/archive/2011/11/13/160007.html\"\u003ehttp://www.cppblog.com/deercoder/archive/2011/11/13/160007.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e原文: \u003ca href=\"http://gitbook.liuhui998.com/4_5.html\"\u003ehttp://gitbook.liuhui998.com/4_5.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、基本操作\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e当你正在做一项复杂的工作时, 发现了一个和当前工作不相关但是又很讨厌的bug. 你这时想先修复bug再做手头的工作, 那么就可以用 git stash 来保存当前的工作状态, 等你修复完bug后,执行’反储藏\u0026rsquo;(unstash)操作就可以回到之前的工作里.\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git stash save \u0026#34;work in progress for foo feature\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e上面这条命令会保存你的本地修改到储藏(stash)中, 然后将你的工作目录和索引里的内容全部重置, 回到你当前所在分支的上次提交时的状态.\u003c/p\u003e\n\u003cp\u003e好了, 你现在就可以开始你的修复工作了.\u003c/p\u003e\n\u003cp\u003e… edit and test …\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git commit -a -m \u0026#34;blorpl: typofix\u0026#34;\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e当你修复完bug后, 你可以用git stash apply来回 …\u003c/p\u003e"
November 22, 2013
redmine与git组合配置
"\u003cp\u003e参考:\u003ca href=\"http://www.redmine.org/projects/redmine/wiki/HowTo_Easily_integrate_a_(SSH_secured)_GIT_repository_into_redmine\"\u003ehttp://www.redmine.org/projects/redmine/wiki/HowTo_Easily_integrate_a_(SSH_secured)_GIT_repository_into_redmine\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在redmine 的”配置”选项里,填写git仓库位置的时候,一定要在写完整的.git路径,如 \u003cstrong\u003e/data/www/redmine/repos/agent/.git\u003c/strong\u003e ,否则redmine会无法发现git仓库.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://http://blog.haohtml.com/wp-content/uploads/2013/11/redmine-git-repo.png\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/redmine-git-repo.png\" alt=\"redmine-git-repo\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e相关文章:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.csdn.net/benkaoya/article/details/8762935\"\u003ehttp://blog.csdn.net/benkaoya/article/details/8762935\u003c/a\u003e\u003c/p\u003e"
August 23, 2013
Git 常用命令详解(二)
"\u003ch3 id=\"git-community-book-中文版\"\u003e\u003ca href=\"http://gitbook.liuhui998.com/index.html\"\u003eGit Community Book 中文版\u003c/a\u003e\u003c/h3\u003e\n\u003cp\u003eGit 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如: \u003ca href=\"http://git.kernel.org/\"\u003elinux kernel\u003c/a\u003e),管理私人的文档和源代码也有很多优势(如: \u003ca href=\"http://code.google.com/p/wsi-lgame-pro/\"\u003ewsi-lgame-pro\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003eGit 的更多介绍,请参考我的上一篇博客: \u003ca href=\"http://blog.csdn.net/sunboy_2050/article/details/7527877\"\u003eGit 版本管理工具\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、 Git 命令初识\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e在正式介绍Git命令之前,先介绍一下Git 的基本命令和操作,对Git命令有一个总体的认识\u003c/p\u003e\n\u003cp\u003e示例:从Git 版本库的初始化,通常有两种方式:\u003c/p\u003e\n\u003cp\u003e1)git clone:这是一种较为简单的初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一份\u003c/p\u003e\n\u003cp\u003e例如:git clone git://github.com/someone/some_project.git some_project\u003c/p\u003e\n\u003cp\u003e上面的命令就是将’git://github.com/someone/some_project.git’这个URL地址的远程版本库,完全克隆到本地some_project目录下\u003c/p\u003e\n\u003cp\u003e2)git init 和 git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进 …\u003c/p\u003e"
February 27, 2013
在zend stuido下使用git插件教程
"\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/archives/13679\"\u003e上一节zend stuido下安装了git软件插件\u003c/a\u003e。下面我们来讲一下git插件的使用方法.\u003c/p\u003e\n\u003cp\u003e由于我们目前已经创建好了git项目。所以这里只介绍直接从现成的git项目仓库导入.\u003c/p\u003e\n\u003cp\u003e选择菜单”文件(File)”-\u0026gt;”Import”\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio-git-guide-1.png\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/zendstudio-git-guide-1.png\" alt=\"zendstudio-git-guide-1\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio-git-guide-2.png\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/zendstudio-git-guide-2.png\" alt=\"zendstudio-git-guide-2\"\u003e\u003c/a\u003e \u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio-git-guide-3.png\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio-git-guide-3.png\" alt=\"zendstudio-git-guide-3\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e点击”Browse…”选择存放git的目录,然后点击”Search”按钮这样就可以读取一些git配置信息,并在上面显示出来项目目录下的所有文件.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio-git-guide-4.png\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/zendstudio-git-guide-4.png\" alt=\"zendstudio-git-guide-4\"\u003e\u003c/a\u003e \u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio-git-guide-5.png\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio-git-guide-5.png\" alt=\"zendstudio-git-guide-5\"\u003e\u003c/a\u003e最后一步是选择当前项目的名字,这个随便起的。最后点击”Finish”按钮就可以了。\u003c/p\u003e\n\u003cp\u003e这时在IDE左侧会看到项目名字及项目结构信息。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio-git-guide-6.png\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/zendstudio-git-guide-6.png\" alt=\"zendstudio-git-guide-6\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e下面可以修改一个文件,然后在左侧的导航里选择修改的文件,右键点击,选择”Team” 菜单,再选择”Commit”菜单,会弹出一个对话框,在”Commit message”对话框时里输入提示备注信息。点击”Commit”按钮就可以了。\u003c/p\u003e"
February 27, 2013
zend studio 安装git插件
"\u003cp\u003e搞php的用zend studio这个ide工具的开发人员应该不在少数,而对于我们团队开发使用svn和git版本控制软件也特别多的。我们公司团队使用的是zendstuido 10与git这两个软件。但默认情况下zendstuido并不支持git这个插件的,这个时候需要我们来手动安装git插件。方法如下:\u003c/p\u003e\n\u003cp\u003ezend studio菜单:Help -\u0026gt; Install new software…\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio_install_git_plugins.png\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/zendstudio_install_git_plugins.png\" alt=\"zendstudio_install_git_plugins\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2013/02/zendstudio_install_git_plugins_detail.png\"\u003e\u003cimg src=\"https://blogstatic.haohtml.com//uploads/2023/09/zendstudio_install_git_plugins_detail.png\" alt=\"zendstudio_install_git_plugins_detail\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e下一步会提示一些是否授受协议之类的。直接选择 我同意(i agree)就可以了。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/archives/13689\"\u003e下面我们来讲一下如何在zend stuido下使用git插件\u003c/a\u003e\u003c/p\u003e"
January 25, 2013
git config –global push.default
"\u003cp\u003e参考教程 \u003ca href=\"http://blog.haohtml.com/archives/10093\"\u003ehttp://blog.haohtml.com/archives/10093\u003c/a\u003e 刚安装的git最新版本,发现有些命令发生了一些变化.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[web@bogon www]$ git push\nwarning: push.default is unset; its implicit value is changing in\nGit 2.0 from ‘matching’ to ‘simple’. To squelch this message\nand maintain the current behavior after the default changes, use:\u003c/p\u003e\n\u003cp\u003egit config –global push.default matching\u003c/p\u003e\n\u003cp\u003eTo squelch this message and adopt the new behavior now, use:\u003c/p\u003e\n\u003cp\u003egit config –global push.default simple\u003c/p\u003e\n\u003cp\u003eSee ‘git help config’ and search for ‘push.default’ for further …\u003c/p\u003e\u003c/blockquote\u003e"
January 25, 2013
git remote用法总结
"\u003cp\u003e\u003cstrong\u003egit remote\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003egit remote显示所有的remote(加-v显示详细信息)。\ngit remote add [shortname] [url]用来添加remote。\ngit fetch [remote-name]只会pull下来全部的更动,但不会自动merge,但是git pull会自动merge。\ngit remote show [remote-name]可以看到一个remote的详细信息。\ngit remote rename old new 用来改变一个remote的名字。\ngit remote rm [remote-name]删除一个remote。\ngit remote 不带参数,列出已经存在的远程分支,例如:\n#git remote\norigin_apps\u003c/p\u003e\n\u003cp\u003egit remote -v | –verbose 列出详细信息,在每一个名字后面列出其远程url,例如:\n#git remote -v\norigin_apps gitolite@scm:apps/Welcome.git (fetch)\norigin_apps …\u003c/p\u003e"
August 18, 2012
git下添加新项目及用户
"\u003cp\u003e我们在上一节()配置成功了git-server。这里我们新创建一个git项目并允许开者使用.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1. 生成密钥与公钥\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e***\u003cem\u003e[dev1@bogon ~]$ ssh-keygen -t rsa\nGenerating public/private rsa key pair.\nEnter file in which to save the key (/home/dev1/.ssh/id_rsa):\nCreated directory ‘/home/dev1/.ssh’.\nEnter passphrase (empty for no passphrase):\nEnter same passphrase again:\nYour identification has been saved in /home/dev1/.ssh/id_rsa.\nYour public key has been saved in /home/dev1/.ssh/id_rsa.pub.\nThe key fingerprint is: …\u003c/em\u003e\u003c/p\u003e\u003c/blockquote\u003e"
August 14, 2012
Git中gitignore失效的问题
"\u003cp\u003e使用git来管理代码,但发现仓库中加入了.gitignore文件,但并不能解除对.gitignore文件中指定的路径及文件进行忽略。是因为加入.gitignore的之前已经进行过提交,提交中含有要忽略的文件,而这个时候.gitignore 对这些文件是失效的,为了解决这个问题,需要先删除这些中间文件,然后进行一次提交就可以解决这些问题了。\u003c/p\u003e\n\u003cp\u003e在本地仓库将.gitgnore文件里指定的相关文件及路径全部删除,再commit到本机一下。然后执行push到git Server就可以了。这样就可以将git sever上的那些临时文件删除掉。以后再使用的话,产生的文件就不会在提交到git server上去了。\u003c/p\u003e"
July 16, 2012
SSH+Git Server on Windows – 在Windows下搭建Git服务器(教程)
"\u003cp\u003e推荐软件: \u003ca href=\"http://www.oschina.net/news/60555/gitstack-2-3-7\"\u003eWindows 的 Git 服务器GitStack\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e会看英文\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e软件需求:\u003c/strong\u003e\n1.windowXP, win7 都测试通过\n2.Copssh_3.1.4_Installer.exe\n3.Git-1.7.3.1-preview20101002.exe\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e搭建git服务器步骤:\u003c/strong\u003e\n1.安装copssh\n1.1 我选择安装路径c:\\ICW,其他选项都选默认.\n1.2 设置环境变量,系统的Path中添加C:\\ICW\\bin\u003c/p\u003e\n\u003cp\u003e1.3 右键 我的电脑,选择 管理,打开 系统工具-\u0026gt;本地用户和组-\u0026gt;用户, 在用户窗口点击右键,选择 新用户,用户 名输入git,密码输入git.\n1.4.选择git用户,右键 选属性, 点击 隶属于-\u0026gt;添加,使git用户被添加到administrator组,并拥有administrator权限.\n1.5 选择 开始-\u0026gt;所有程序-\u0026gt;copssh-\u0026gt;0.1 activate a user,在user name下拉列表中选择刚刚新建的git用户,点击next,输入 Type a passhrase,并记住输入的Type a …\u003c/p\u003e"
July 9, 2012
在WINDOWS下使用copSSH配置GIT服务器
"\u003cp\u003e近日对GIT进行了研究,发现还真是个好东东,但是在GIT服务器的配置上,在试用了多个SSH服务器之后,始终未能搞定,导致几近崩溃;最终靠着秉承“外事问谷歌,内事问百度”的理念,终于找到了一篇E文的博客,才算搞定。今把过程展示出来,希望对大家能有帮助。(注:本文严重参考了以下博客 \u003ca href=\"http://www.timdavis.com.au/git/setting-up-a-msysgit-server-with-copssh-on-windows/\"\u003ehttp://www.timdavis.com.au/git/setting-up-a-msysgit-server-with-copssh-on-windows/\u003c/a\u003e,在此表示强烈感谢)\n**基本原理:**使用copSSH在WINDOWS(XP)上建立SSH服务器;使用生成的“公钥-私钥”对作为身份标识;在服务器上配置SHELL脚本环境;配置客户端,加载私钥。详细过程如下:\n\u003cstrong\u003e安装前准备:\u003c/strong\u003e\nDownload \u003ca href=\"http://www.itefix.no/copssh/\"\u003ecopSSH\u003c/a\u003e [ \u003ca href=\"http://sourceforge.net/projects/sereds/files/Copssh/\"\u003eSourceForge Link\u003c/a\u003e] (注:SSH服务器软件)\u003c/p\u003e\n\u003cp\u003eDownload \u003ca href=\"http://code.google.com/p/msysgit/\"\u003emsysgit\u003c/a\u003e (注:WINDOWS下的git安装包)\nDownload \u003ca href=\"http://code.google.com/p/tortoisegit/\"\u003eTortiseGIT\u003c/a\u003e (注:WINDOWS下的git图形化软件,与TortiseSVN是同门)\nDownload \u003ca href=\"http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html\"\u003ePuTTY …\u003c/a\u003e\u003c/p\u003e"
April 7, 2012
git中的Reversing Pushed Changes
"\u003ch3 id=\"reversing-pushed-changes\"\u003eReversing Pushed Changes\u003c/h3\u003e\n\u003cp\u003eSometimes you or somebody else might have pushed changes accidentally to the remove repository. To get rid of them, first get a log or history of the push commits:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git log\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eThen, use \u003ccode\u003egit reset\u003c/code\u003e to push back to a particular come it, identified by its SHA1 sequence from the log. For example:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git reset --hard 6bb3dc30bc0c8fc36421474cf9376d658ee643aa\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003eSometimes just the first few letters and numbers of the sequence, such as \u003ccode\u003e6bb3dc\u003c/code\u003e would do.\u003c/p\u003e"
April 5, 2012
Git中的fetch和pull
"\u003cp\u003eGit中从远程的分支获取最新的版本到本地有这样2个命令:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003egit fetch origin master\ngit log -p master..origin/master\ngit merge origin/master\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e以上命令的含义:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e首先从远程的origin的master主分支下载最新的版本到origin/master分支上.\n然后比较本地的master分支和origin/master分支的差别.\n最后进行合并.\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e上述过程其实可以用以下更清晰的方式来进行:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003egit fetch origin master:tmp\ngit diff tmp\ngit merge tmp\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e从远程获取最新的版本到本地的test分支上\n之后再进行比较合并\u003c/p\u003e\n\u003col start=\"2\"\u003e\n\u003cli\u003egit pull:相当于是从远程获取最新版本并merge到本地\u003c/li\u003e\n\u003c/ol\u003e\n\u003cblockquote\u003e\n\u003cp\u003egit pull origin master\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e上述命令其实相当于git fetch 和 git merge\n在实际使用中,git fetch更安全一些\n因为在merge前,我们可以查看更新情况,然后再决定 …\u003c/p\u003e"
April 5, 2012
CentOS下搭建Git服务器Gitosis[教程]
"\u003cp\u003e说明:由于条件有限,我这里使用的是同一台centos的,但教程内容基本上通用。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.编译安装git\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003egit安装教程:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2.安装gitosis\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e$ yum install python python-setuptools\u003c/li\u003e\n\u003cli\u003e$ git clone \u003ca href=\"git://github.com/res0nat0r/gitosis.git\"\u003egit://github.com/res0nat0r/gitosis.git\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e$ cd gitosis\u003c/li\u003e\n\u003cli\u003e$ python setup.py install\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e网址: \u003ca href=\"https://github.com/res0nat0r/gitosis\"\u003ehttps://github.com/res0nat0r/gitosis\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e3.在开发机器上生成公共密钥(用来初始化gitosis)\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e$ ssh-keygen -t rsa #不需要密码,一路回车就行(在本地操作)\u003c/li\u003e\n\u003cli\u003e$ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上传你的ssh public key到服务器\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e\u003cstrong\u003e4.初始化gitosis[服务器端]\u003c/strong\u003e\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e$ adduser git # 新增一个git用户(先添加用户组 groupadd git)\u003c/li\u003e\n\u003cli\u003e$ su git # 切换倒git用户下\u003c/li\u003e\n\u003cli\u003e$ gitosis-init \u0026lt; …\u003c/li\u003e\u003c/ol\u003e"
December 11, 2011
git init 和git –bare init 的具体区别?
"\u003cp\u003e一般个人使用,用git init,这时候你的工作区也在这里。你要是想建立一个固定的地址让大家一起用,就在服务器上用git –bare init。\u003c/p\u003e\n\u003cp\u003e其实你可以看到,init建立的.git目录内容和–bare建立的目录内容是差不多的。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e在初始化远程仓库时最好使用 git –bare init 而不要使用:git init。这样在使用hooks的时候,会有用处。\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e如果使用了git init初始化,则远程仓库的目录下,也包含work tree,当本地仓库向远程仓库push时, 如果远程仓库正在push的分支上(如果当时不在push的分支,就没有问题), 那么push后的结果不会反应在work tree上, 也即在远程仓库的目录下对应的文件还是之前的内容,必须得使用git reset –hard才能看到push后的内容.\u003c/p\u003e"
December 11, 2011
“remote:error:refusing to update checked out branch:refs/heads/master”的解决办法
"\u003cp\u003e在使用Git Push代码到数据仓库时,提示如下错误:\u003c/p\u003e\n\u003cp\u003e[remote rejected] master -\u0026gt; master (branch is currently checked out)\u003c/p\u003e\n\u003cp\u003e错误原型\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eremote: error: refusing to update checked out branch: refs/heads/master\u003c/p\u003e\n\u003cp\u003eremote: error: By default, updating the current branch in a non-bare repository\u003c/p\u003e\n\u003cp\u003eremote: error: is denied, because it will make the index and work tree inconsistent\u003c/p\u003e\n\u003cp\u003eremote: error: with what you pushed, and will require ‘git reset –hard’ to match\u003c/p\u003e\n\u003cp\u003eremote: error: the work tree to HEAD.\u003c/p\u003e\n\u003cp\u003eremote: error:\u003c/p\u003e"
September 15, 2011
[git] Git 高级:Git Reset, Checkout, Diff, Stash
"\u003ch4 id=\"git-reset\"\u003e\u003cstrong\u003eGit Reset\u003c/strong\u003e\u003c/h4\u003e\n\u003cp\u003e有时候,你可能想要撤销 Git 操作。通常,git reset 就是你需要的命令。但是,使用 git reset 可能会非常复杂,取决于你的撤销操作。如果本文没有提到你需要的,查看 \u003ca href=\"http://www.kernel.org/pub/software/scm/git/docs/git-reset.html\"\u003egit reset 官方文档\u003c/a\u003e。\u003c/p\u003e\n\u003cp\u003e假设,你正在进行一个项目,想要取消所有的改变,返回到最近一次的提交,命令如下:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git reset --hard HEAD\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e–hard flag 将指定提交(上例中,HEAD)中的任意内容放入工作目录和缓存区内。因为 HEAD 是最近一次提交,所以我们没有做任何改变。运行 git status,会看到提示没有需要提交的。\u003c/p\u003e\n\u003cp\u003e还有其它一些 git reset 使用的 flag。假设你想要回滚你的项目到多个提交之前,但是想要保存没有提交的改变,尝试下面的:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$ git reset --soft 3ce072c72d948abfa\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e当然,替换为你自己需要的 hash。–soft flag 将保存你的改变在工作目录和缓存区。换句话来说,最新的提交将会是你选择的提交。\u003c/p\u003e\n\u003cp\u003e还有很多情况,你可以使用 git reset。如果你认为需要这个名利概念的功能,查看\u003ca href=\"http://www.kernel.org/pub/software/scm/git/docs/git-reset.html\"\u003e文档\u003c/a\u003e。 …\u003c/p\u003e"
June 29, 2011
git常用命令总结[原创]
"\u003cp\u003e\u003cstrong\u003etxt笔记一篇: \u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/git.txt\"\u003egit常用命令点击查看\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e深入理解学习Git工作流(git-workflow-tutorial) \u003ca href=\"http://segmentfault.com/a/1190000002918123\"\u003ehttp://segmentfault.com/a/1190000002918123\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e以下教程主要参考" \u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/04/git-tut.pdf\"\u003eGit-tutor(Git使用指南):\u003c/a\u003e 和 \u003ca href=\"http://blog.haohtml.com/archives/9066\"\u003ehttp://blog.haohtml.com/archives/9066\u003c/a\u003e"实用指南而整理,第3章几乎直接在复制过来的.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e相关教程:\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e在 CentOS 装 Git: \u003ca href=\"http://blog.haohtml.com/archives/10093\"\u003ehttp://blog.haohtml.com/archives/10093\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e在FreeBSD下安装Git: \u003ca href=\"http://blog.haohtml.com/archives/10065\"\u003ehttp://blog.haohtml.com/archives/10065\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003esvn git 的windows客户端: \u003ca href=\"http://blog.haohtml.com/archives/10069\"\u003ehttp://blog.haohtml.com/archives/10069\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e第一章 Git的基本操作方法\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一.初始化仓库\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003egit init\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e此时会在当前目录*假如为($WORK)生成一个.git的目录文件.这个.git目录就是Git仓库.其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪, …\u003c/p\u003e"
June 28, 2011
在 CentOS 装 Git
"\u003cp\u003e在 Ubuntu 上安装 Git 非常的简单,只需要:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003esudo apt-get install git-core\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e但是 CentOS 默认的 yum 源中没有 Git,只能下载 RPM 包安装,确保已安装了依赖的包\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003esudo yum -y install curl curl-devel zlib-devel openssl-devel perl cpio expat-devel gettext-devel perl-ExtUtils-MakeMaker perl-CPAN tk\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e安装最新的 Git\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$ wget \u003ca href=\"http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz\"\u003ehttp://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e$ tar xzvf git-latest.tar.gz\u003c/p\u003e\n\u003cp\u003e$ cd git-{date}\u003c/p\u003e\n\u003cp\u003e$ autoconf\u003c/p\u003e\n\u003cp\u003e$ ./configure –with-curl=/usr/local\u003c/p\u003e\n\u003cp\u003e$ make\u003c/p\u003e\n\u003cp\u003e$ sudo make install\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e检查版本\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$ git –version\u003c/p\u003e\n\u003cp\u003egit version 1.7.3.GIT\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e常 …\u003c/strong\u003e\u003c/p\u003e"
June 27, 2011
svn git 的windows客户端
"\u003cp\u003e根据自己使用的操作系统是32位的还是64位的不同,需要选择软件的相应版本。\u003c/p\u003e\n\u003cp\u003e先安装msysgit:\n\u003ca href=\"https://git-scm.com/downloads\"\u003ehttps://git-scm.com/downloads\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e再安装git windows客户端tortoisegit :\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://download.tortoisegit.org/\"\u003ehttp://download.tortoisegit.org/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在安装tortoisegit的时候,选择第一个 Use(Tortoise)Plink即可。\u003c/p\u003e\n\u003cp\u003e===================\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eTortoiseGit日常使用指南\u003c/strong\u003e: \u003ca href=\"/wp-content/uploads/2011/01/TortoiseGit_Guide.pdf\"\u003e/wp-content/uploads/2011/01/TortoiseGit_Guide.pdf\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e相关教程:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eGit使用教程视频:\nGit使用学习教程:\n在 CentOS 装 Git:\n在FreeBSD下安装:\u003c/p\u003e\n\u003cp\u003e============================================================\u003c/p\u003e\n\u003cp\u003esvn windows客户端:\n\u003ca href=\"http://tortoisesvn.tigris.org/\"\u003ehttp://tortoisesvn.tigris.org/\u003c/a\u003e\u003c/p\u003e"
June 27, 2011
在FreeBSD 8.1下搭建Git服务器
"\u003cp\u003eGit是一个由林纳斯•托瓦兹为了更好地管理linux内核开发而创立的分布式版本控制/软件配置管理软件。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持,使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1、在FreeBSD8.1下安装Git服务器\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e(1)用ports安装Git\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ecd /usr/ports/devel/git\nmake install clean\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e(2)修改/etc/rc.conf,让git随开机启动\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003egit_daemon_enable=”YES”\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e(3)新增使用者git\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003epw useradd git\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e(4)启用git daemon\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e/usr/local/etc/rc.d/git_daemon start\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e\u003cstrong\u003e(5)用sockstat 来验证git是否启动\u003c/strong\u003e\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003esockstt -4l | grep 9418\nroot git-daemon 37064 3 tcp4 …\u003c/code\u003e\u003c/pre\u003e"