Git&GitLab
炼气散人
等儿子高考后,或许会回来
展开
-
git reset用法 一 重置引用(版本切换)
reset命令让我们可以在历史版本中切换。每次commit都会有一个commit id。比如看看我的仓库的日志:chenshu@sloop2:~/work/189/appengine$ git logcommit f9fae00840b97ca9ab4e782c9581fb6cb35b0ff4Author: shuchen Date: Tue Sep 18 13:15:11 2012 +原创 2012-09-18 14:04:38 · 18792 阅读 · 1 评论 -
git branch 管理常用命令
查看本地分支git branch* dev master*代表当前位于dev分支创建分支git checkout -b new_branch注意,new_branch的代码来自于当前分支切换分支git checkout another_branch和创建分支就差-b参数push本地分支代码到远端服务器git push origin branch_name如果远端服务器没有该分支,将会自动原创 2013-07-16 12:31:38 · 8119 阅读 · 1 评论 -
Git diff ^M的消除
这是由于换行符在不同的操作系统上定义的区别造成的。Windows用CR LF来定义换行,Linux用LF。CR全称是Carriage Return ,或者表示为\r, 意思是回车。 LF全称是Line Feed,它才是真正意义上的换行表示符。为什么Windows添加一个CR和LF组合表示,我并不清楚。不过如果用git diff的时候看到^M字符,就说明两个文件在换行符上有所差别。比如从我的Wind原创 2013-08-28 15:11:32 · 39453 阅读 · 1 评论 -
GitLab push 找不到gitlab_update
今天GitLab push突然报错:git push origin issue_232 Counting objects: 5, done.Delta compression using up to 2 threads.Compressing objects: 100% (2/2), done.Writing objects: 100% (3/3), 348 bytes, done.To原创 2013-08-15 14:40:17 · 5163 阅读 · 0 评论 -
重新安装的GiLab5.4 clone问题
gitlab 5.4 clone被拒原创 2013-08-14 11:28:41 · 3180 阅读 · 0 评论 -
GitLab迁移
今天尝试了一下迁移GitLab的方法。非常简单:假设原来的GitLab 位于A服务器,现在在B服务上已经装好了Gitlab。1. 通过scp命令将A的/home/git/repositories/目录下的所有内容复制到B上对应位置这个时间比较长2. 到B服务器上,进入/home/git/gitlab目录后,运行下面的命令:sudo -u git -H bundle exec rake gitlab原创 2013-08-13 23:48:56 · 13685 阅读 · 22 评论 -
git checkout之一 HEAD基本和detached 状态
1.HEAD基础git checkout 实际上是修改HEAD文件的内容,让其指向不同的branch。HEAD文件指向的branch就是当前branch.一般来讲,HEAD的内容是指向staging(暂存区)的master文件的。ref: refs/heads/master当然也可指向其他索引文件,不管怎么样,这个索引文件的内容又由git reset控制。通过git branch命令看到的结果和H原创 2012-05-19 18:40:01 · 116276 阅读 · 4 评论 -
sendmail 配置SMTP服务器
因为公司内网防火墙限制,当GitLab通过SendMail发送email给Gmail或者其他外网邮箱的时候,会出现如下错误:Jul 14 06:48:14 gitlab sm-mta[12379]: r6C7HnCZ024915: to=, delay=1+15:30:25, xdelay=00:00:00, mailer=esmtp, pri=21452479, relay=mx1.pku.ed原创 2013-07-16 15:52:03 · 11531 阅读 · 2 评论 -
sendmail发送邮件故障
gitlab内部使用sendmail发送邮件。有时候看gitlab上的日志已经将邮件发送,但是有些用户就是收不到email.后来还是查看了系统日志,才发现是sendmail发送的时候,通过一个指定的smtp服务器,smtp服务器拒绝请求了。原因是默认情况下,sendmail用了/etc/hosts中的主机名来作为发件人:localhost.localdomain然后就被拒绝了,出错信息类似:421原创 2013-03-19 23:15:02 · 6037 阅读 · 6 评论 -
GitLab5.3修改项目仓库名称后wiki不能访问
今天才发现这个GitLab5.3的新功能带来了麻烦,好在问题不大,能够挽救。登录到服务器上,看到/home/git/repositories目录下原来的wiki.git项目目录还在。将新的wiki.git项目移到其他地方,然后将旧的wiki.git目录重命名为新的名称。GitLab无需启动,wiki又能使用了。原创 2013-06-29 22:55:42 · 5375 阅读 · 0 评论 -
GitLab5.2 创建项目故障
今天在GitLab5.2上创建一个项目,然后参考网站的向导在开发机器上创建项目目录,最后运行git push -u origin master结果报错:git push -u origin masterfatal: '/home/git/repositories/cloudengine/wtunnel.git' does not appear to be a git repositoryfat原创 2013-06-26 17:10:01 · 6120 阅读 · 9 评论 -
GitLab 5.3 升级注意事项
最主要就是需要更新的Git。我的Ubuntu12.04通过apt-get install安装的git版本过低。所以只能通过源代码安装。参考下面的步骤:wget git-core.googlecode.com/files/git-1.8.3.1.tar.gztar -zxf git-1.8.3.1.tar.gzcd git-1.8.3.1make prefix=/usr/local alls原创 2013-06-24 16:11:25 · 4102 阅读 · 0 评论 -
GitLab5.1 上传文件大小限制的修改
当超过10M大小时,GitLab不报错,但是看不到上传的文件。在issue和wall里面都这样。解决方法是两步:1.检查nginx的配置, 添加下面的配置: client_max_body_size 60m;2. 修改下面的代码/home/git/gitlab/app/models/note.rb validates :attachment, file_size: { maxim原创 2013-05-15 12:37:19 · 6875 阅读 · 2 评论 -
GitLab升级到5.1注意事项
1. GitLab-Shell仍然需要正确配置才能访问GitLab,否则你在远端用git协议pull的时候会看到错误信息:git pull/usr/local/lib/ruby/1.9.1/net/http.rb:762:in `initialize': Connection refused - connect(2) (Errno::ECONNREFUSED) from /usr/local/原创 2013-04-25 23:27:27 · 9312 阅读 · 10 评论 -
git通过https访问仓库遇到error: gnutls_handshake() failed问题
公司的网络环境又变了,换了一个proxy,结果导致git clone https://.... 的时候报错:error: gnutls_handshake() failed在互联网上找了一下,这篇文章讲的明白。所以转载一下:http://blog.float.tw/2012/06/git-gnutls-handshake-error.html转载 2013-04-11 17:02:19 · 28824 阅读 · 1 评论 -
GitLab 6.1 使用postfix发送email
从sendmail换成了postfix,可惜的是有些email地址收不到邮件,检查日志/var/log/mail.log 中,看到错误信息:unknown user...参考这个帖子:http://stackoverflow.com/questions/18377813/postfix-status-bounced-unknown-user-myuser也就是把mydestination 设为空。原创 2013-09-27 10:21:54 · 9521 阅读 · 0 评论 -
git reset用法二 替换文件
git reset的第二种用法不是用于重置引用的,而是为了能够将某个历史版本中的文件拿出来,替换当前staging中的同名文件。这个也更加常用。比如git reset 就是用仓库中当前版本的文件(位于.git/objects目录下)替换掉staging中的文件。相当于撤销上一次git add的作用。比如我们在x文件中添加一些内容,然后用下面的命令:$ git add -u$ git reset原创 2012-09-18 14:47:37 · 7001 阅读 · 0 评论 -
获取git项目最后的tag
在gitlab.com上面看到的,相当好用git describe --tags `git rev-list --tags --max-count=1`比如下面的项目:/cppwizard$ git tag -n10v1.0.0 simplify console buildv1.1.0 use file.lsp in same folderv1.2.0原创 2015-10-05 00:02:00 · 13908 阅读 · 2 评论 -
git diff odt文件
odt文件其实由若干文本文件组成,git 经过一些配置是可以支持diff的。step 1:在git项目中i添加.gitattributes文件, 内容如下:*.odt diff=odtstep 2:在.git/config文件中添加下面一段:[diff "odt"] binary = true textconv = /usr/local/bin/odt-to-txt原创 2015-02-23 14:02:03 · 2271 阅读 · 0 评论 -
git diff
git diff可以用来比较:1.staging area和working area的文件 (无其他参数时)git diff2.master分支和working area的文件 (用master参数)git diff master 3.HEAD指向的内容和working area的文件git diff HEAD4.用远程master分支比较当前工作区git diff refs/remotes/or原创 2012-10-07 11:27:38 · 13532 阅读 · 1 评论 -
git tag管理
不带说明的轻量级里程碑不推荐使用。带签名的太麻烦,不搞。这里介绍带说明的里程碑创建和管理。先提交一下:git commit --allow-empty -m "commit before adding test tag"[master bcab410] commit before adding test tag创建里程碑:git tag -m' add test tag1' testTag1查看原创 2012-09-26 18:49:22 · 6042 阅读 · 0 评论 -
emacs 中使用git diff命令行
在shell中运行git命令,经常会看到如下警告信息: terminal is not fully functional其实很简单,配置一下即可。git-config --global core.pager ""原创 2014-12-14 22:56:37 · 3186 阅读 · 0 评论 -
在CentOS 6.5上编译安装Git 1.8
yum install git得到的版本太老,是1.7.1.这里介绍如何编译安装Git 1.8yum install curl-devel expat-devel gettext-devel openssl-devel zlib-develcd /usr/srcwget https://git-core.googlecode.com/files/git-1.8.5.3.tar.gztar x原创 2014-09-28 15:46:10 · 6056 阅读 · 1 评论 -
在本地和远程机器上切换到过去的一个commit
当使用GitLab server的时候,有时候需要将代码切换到过去的一个commit,因为我巴当前的commit搞得一团糟。在本地开发机器上,用这个命令切换git reset --hard 05a0753bd3e24922dd46bb6a04dc93dda9a9ec9f然后push到GitLab server上,这是不行的,即便我用了--force选项。remote: error: denyi原创 2013-12-06 17:22:46 · 4981 阅读 · 3 评论 -
GitLab 升级到7.2的新方法
采用upgrader,具体文章参考:http://doc.gitlab.com/ce/update/upgrader.html注意要事先安装一下依赖文件:sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libff原创 2014-08-30 15:57:30 · 3515 阅读 · 1 评论 -
GitLab6.1 使用Redmine 作为issue管理系统
首先修改配置文件gitlab.yml文件: issues_tracker: redmine: project_url: "http://redmine.yourcompany.com/projects/:issues_tracker_id" issues_url: "http://redmine.yourcompany.com/issues/:id"原创 2013-10-22 14:17:31 · 9646 阅读 · 0 评论 -
GitLab代码从GitHub移到自己的GitLab.cloud
下面是项目链接:https://gitlab.com/gitlab-org/gitlab-ce/issuesGitLab.cloud可以免费使用。我用Google 帐号登录后,可以创建自己的私有的project,和GitHub相比,这不是收费的,很不错。可惜只有1GB的空间限制。所以只能小项目。原创 2014-01-11 13:55:50 · 6342 阅读 · 0 评论 -
GitLab 6.4的重要新特性
6.4发布了,下面是两个我觉得比较重要的特性:1. side-by-side diff view文本编辑器模式用+和-表达是够用的,不过GUI界面用户应该更习惯side-by-side diff view, 毕竟使用者也包含了很多HTML设计人员,这个特性让GitLab更能照顾到更多用户。2. issue排序GitLab的issue很轻量级,仅仅适用于角色不多的项目。好歹又有了一点新功能,可以用更原创 2013-12-23 11:22:48 · 3880 阅读 · 0 评论 -
GitLab 6.2 发布
最重要的一个功能就是,可以上传自己的头像了。也有一些新的变化,增强了安全性,引入了旋转日志。修改密码更加严格。milestone上下顺序反过来,最近的放在最上面了。管理页面布局看上去更加清爽。其他参考:http://blog.gitlab.org/gitlab-ce-6-dot-2-released/GitLab越来越成熟,真的不必GitHub功能差。还多一个branch保护功能,相当不错。原创 2013-10-22 22:12:37 · 4803 阅读 · 6 评论 -
gitlab 6.2 to 6.3升级注意事项
1. gitlab-shell的config.yml文件要从这里https://github.com/gitlabhq/gitlab-shell/blob/master/config.yml.example复制,但是,有两个地方要修改,否则无法clone代码用https而不是http,如下gitlab_url: "https://localhost/"自我认证用true而不是falseself_s原创 2013-11-27 20:20:14 · 3285 阅读 · 0 评论 -
git 临时忽略本地文件
出处:http://qlqllu.iteye.com/blog/1966119文件在仓库中存在,但是不想每次修改后就提交(这样的文件一般是与本机开发环境相关的文件),可以这样操作:1. 打开.git/config文件2. 增加 [alias]ignore = update-index --assume-unchangedunignore = update-index --no-assume-unc转载 2013-10-29 15:56:07 · 5541 阅读 · 0 评论 -
gitlab 升级到5.0的严重注意事项
我这里只讨论从4.2到5.0升级过程,并且用的是Nginx和启用HTTPS配置。第一,升级时开始运行的帐号和目录sudo -s 进入root权限下然后要cd /home/gitlab/gitlab下运行升级的脚本。第二,使用正确的版本的gitlab-shell参考升级文档https://github.com/gitlabhq/gitlabhq/wiki/From-4.2-to-5.0注意其中第二步原创 2013-03-26 23:41:05 · 4462 阅读 · 0 评论 -
git checkout之二 切换到分支和文件覆盖
1.创建分支git checkout -b feature_namegit中推荐为了某个新的功能创建feature branch,完成后再将其合并到master中。然后就可以用git branch来查看所有分支。2.切换分支如果有了多个branch, 就可以用checkout切换到某个branch。用法很简单:git checkout branchname该命令修改了HEAD文件内容。3.用sta原创 2012-09-18 16:28:24 · 68036 阅读 · 16 评论 -
gitlab5.0 不发送email问题
当使用service gitlab restart 重新启动服务后,email不再发送。记得刚安装完gitlab5.0后一切正常。系统中sendmail早已经安装,并且功能正常。查看production.log,发现没有发送email的记录。那么重新检查一下系统吧。sudo -scd /home/git/gitlabsudo -u git -H bundle exec rake gitlab:原创 2013-03-28 22:16:59 · 3358 阅读 · 2 评论 -
Tortoise推送代码到Gerrit review分支
弄了两小时,其实很简单,就是一张图能说明问题。在remote branch中输入gerrit服务器上用于review的refs空间路径。原创 2012-10-14 12:36:14 · 5013 阅读 · 1 评论 -
Review board 和 Git 配合使用 一
出于一个美好的目的,当代码提交之前,需要自动通知相关人员进行代码review,当review代码的人批准后才能将代码提交到代码仓库中,否则修改后再次review。项目的工程师可能不在一个地方办公,比如我们ESRI,工程师分布在不同的国家的不同部门。因此需要Email和Web站点来协同工作。我们的代码管理也是多种多样,美国团队使用Starteam,我们中国使用Git. 本来在Git之上有一个很好的r原创 2012-05-12 15:44:40 · 8861 阅读 · 0 评论 -
Windows安装Git客户端工具
首先下载msysgit,主站点:http://msysgit.github.com/注意,不是git for windows,而是msysgit。我下载的是Git-1.7.11-preview20120710.exe安装后就可以使用Git Bash打开特制的终端,在里面用来命令行了。喜欢Git命令行方式的朋友到这里就够了。喜欢Tortoise风格点菜单的朋友继续。然后到这个地方下载http://c原创 2012-09-24 10:41:54 · 22003 阅读 · 3 评论 -
git 修订email的用法
经常遇到的一个问题,git安装好了,从远程服务器克隆项目代码,开发后,调用push命令。Gerrit提醒,你的email地址和服务器上登记的不匹配。拒绝push到review分支。好,然后通过编辑~/.gitconfig文件添加或者修改用户名和email地址。改完后,再次push,不行,还是原来的错误。因为这个时候上次commit的信息没有被改变。需要通过commit -amend参数进行修订。所原创 2012-09-05 14:10:19 · 2952 阅读 · 0 评论 -
Windows 通过公钥访问Git Server
Reviewboard的windows客户端, Gerrit的windows客户端, Jenkins的Windows server端都需要这种方式。1.请先安装Git bash和TortoiseGit程序。2.先运行Git bash,在bash终端上运行ssh-keygen.exe 不要输入密码,最后会告诉你生成了公钥和私钥文件,记住名称。3.将公钥文件改名,根据文件内容的最后一个字符串,然后按照原创 2012-05-08 13:57:57 · 7437 阅读 · 2 评论 -
Gerrit审批流程设置
本文描述如何使用Gerrit2.4.2设置审批流程。首先Gerrit中已经有了两个帐号,一个是我的帐号,属于管理员,另一个是工程师。本文就描述一个简单的审批流程:工程师提交代码,我Review通过,然后将代码提交。step1: 创建Reviewer组和Verifier组Reviewer负责reviewVerifier负责将review的结果提交到Git中心仓库中然后设置成员,由于我是管理员,所以我原创 2012-08-29 15:49:47 · 12830 阅读 · 2 评论