Gitlab库已损坏前端显示500错误解决方法:remote: fatal: loose object xxx is corrupt

今天团队小伙伴们在git push的时候报错:

咋一看吓一跳,数据文件坏掉啦?!赶紧搜索了一下,以下是解决方案。

Continue reading “Gitlab库已损坏前端显示500错误解决方法:remote: fatal: loose object xxx is corrupt”

Gitlab的server端hook简要使用说明

Gitlab的server端hook配置大体步骤是这样的:

1、在gitlab的server端要配置server端hook的项目目录下新建一个 custom_hooks 目录;

2、在custom_hooks目录下新建post-receive钩子文件,chmod该文件的权限为777;

3、在post-receive钩子文件中添加相应的逻辑;

补充说明:gitlab或者github的一个特性是, projectX.git如果是项目的repo地址,那么,与之对应的wiki项目也有一个git的repo地址, 遵循一个命名convention, 即如果项目的地址是projectX.git,那么wiki的项目地址就是projectX.wiki.git, 我们的server端hook的执行逻辑根据这一convention而来;

Continue reading “Gitlab的server端hook简要使用说明”

Git Hooks

和其它版本控制系统一样,Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作。 你可以随心所欲地运用这些钩子。

安装一个钩子

钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。 当你用 git init 初始化一个新版本库时,Git 默认会在这个目录中放置一些示例脚本。这些脚本除了本身可以被调用外,它们还透露了被触发时所传入的参数。 所有的示例都是 shell 脚本,其中一些还混杂了 Perl 代码,不过,任何正确命名的可执行脚本都可以正常使用 —— 你可以用 Ruby 或 Python,或其它语言编写它们。 这些示例的名字都是以 .sample 结尾,如果你想启用它们,得先移除这个后缀。

把一个正确命名且可执行的文件放入 Git 目录下的 hooks 子目录中,即可激活该钩子脚本。 这样一来,它就能被 Git 调用。 接下来,我们会讲解常用的钩子脚本类型。

Continue reading “Git Hooks”

Git rebase

git rebase是对commit history的改写。当你要改写的commit history还没有被提交到远程repo的时候,也就是说,还没有与他人共享之前,commit history是你私人所有的,那么想怎么改写都可以。

而一旦被提交到远程后,这时如果再改写history,那么势必和他人的history长的就不一样了。git push的时候,git会比较commit history,如果不一致,commit动作会被拒绝,唯一的办法就是带上-f参数,强制要求commit,这时git会以committer的history覆写远程repo,从而完成代码的提交。虽然代码提交上去了,但是这样可能会造成别人工作成果的丢失,所以使用-f参数要慎重。

楼主遇到的问题,就是改写了公有的commit history造成的。要解决这个问题,就要从提交流程上做规范。

Continue reading “Git rebase”

Git学习要点(团队管理)

一、Git介绍

Git的基本介绍可以查看百度百科,以下知识是个人对Git经验的简要说明,以方便帮助大家快速学习。

分布式版本控制的核心理念是“分支”和“合并”,每个开发者在本地拥有很多开发分支,最常见的一个分支可以是一个功能的开发或者一个BUG的修改,每个分支有一个独立的名称,相互之间相互独立、互不影响。当分支代码开发完成之后,需要将该分支的代码“合并”到主分支,该主分支即是软件最终的分支。需要发布的功能都需要合并到该主分支,不发布的功能或修改不用合并。

Git在Linux开发环境下一般使用命令行完成版本控制操作,在Windows环境下可以使用命令行或者图形界面(TotoiseGit)。
图形界面的话会隐藏所有的命令细节,所以建议大家学习的时候以命令为主,这样知其然并知其所以然。

二、Git配置

• (Linux) /etc/gitconfig文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 –system 选项,读写的就是这个文件
• (Linux) ~/.gitconfig文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 –global 选项,读写的就是这个文件
• 当前项目的 git 目录中的配置文件(也就是工作目录中的 .git/config 文件): 这里的配置仅仅针对当前项目有效,每一个级别的配置都会覆盖上层的相同配置,所以.git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量

用户信息设置(必须)
git config –global user.name “自己的账号名字”
git config –global user.email 自己的账号邮箱

文本编辑器(可选,默认是vim)
git config –global core.editor gedit

差异分析工具(可选,默认是vim)
git config –global merge.tool meld

输入一次后保存用户名和密码
git config –global credential.helper store

查看已有的配置信息
git config –list

Continue reading “Git学习要点(团队管理)”

Git笔记

git配置
• /etc/gitconfig文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 –system 选项,读写的就是这个文件

• ~/.gitconfig文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 –global 选项,读写的就是这个文件

• 当前项目的 git 目录中的配置文件(也就是工作目录中的 .git/config 文件):
这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量

用户信息
git config –global user.name “John”
git config –global user.email john@johng.cn

文本编辑器
git config –global core.editor gedit

差异分析工具
git config –global merge.tool meld

查看配置信息要检查已有的配置信息
git config –list

输入一次后保存用户名和密码
git config –global credential.helper store

Continue reading “Git笔记”