记录Git 中几种忽略控制的方式

忽略未追踪的文件 据我所知目前共有3种方式: 1.编写由本仓库记录要忽略内容的.gitignore文件,并将该文件加入版本控制. 这是最常见的方式,创建完一个仓库的第一件事就是把当前仓库存放的项目无关的文件或目录加入到.gitignore文件中,这些需要加入忽略的可以是编译的中间文件 或 构建结果 或 IDE相关的配置文件 或 当前平台的配置文件等,并在仓库在其他设备上拉取后也能应用相同相同的忽略配置. 2.编写本仓库仅本地要忽略内容的$GIT_DIR/info/exclude文件,此配置不会加入到版本控制. 这种方式也较常用,比如编写了一个仅本机可用的配置或某些执行脚本,但出于某些原因又不想更新或暴露在.gitignore文件中被他人所见,故可以添加到仓库配置文件夹的info/exclude文件中. 3.编写本机本用户要所有仓库都忽略的$XDG_CONFIG_HOME/git/ignore文件,此配置同样不会加入到版本控制. 这应该是最少使用的,但很这适合我这种懒人,我比较喜欢取同名的本地构建脚本,这种只需写一次就应用全局的方式让我很中意. 忽略文件的编写规则可以参见 官方指导. 忽略已追踪的文件 据我所知目前有两种方式: 1.文件仍在版本控制中,也可拉取更新,但忽略本地对该文件的修改. 使用命令 git update-index –[no-]assume-unchanged <file> [file…] 添加要被忽略或撤销已被忽略的文件. 该方式适用仓库中存在类似模板配置之类的文件,需要手动修改后才可使用的情况,且并不需要将仅适用本机的改动覆盖掉仓库的模板。 2.移除仓库中已被追踪的文件 使用命令git rm –cached <path> [path …] 即可移除仓库对文件的所有追踪历史,注意这删除的不仅仅是文件还包括对文件的所有改动历史,该操作没有后悔药,执行后便无法还原文件的历史,只能重新添加.

Read More

使用Python脚本一次性并发拉取Gitlab中所有的仓库

使用Git图形化管理工具SourceTree好多年,去年起SourceTree越更新越辣鸡,简直不能用,转而投了Fork的怀抱,但是两者都没有批量拉取的功能. 然而负责的项目越来越多,而单个拉取仓库更新代码无异是痛苦的. 于是花了点功夫看了下官方的API文档,写了个用Python批量拉取所有仓库的脚本,使用了一个第三方的 Python 模块: python-gitlab. 功能很简单,就是根据账号权限并发拉取所有能拉取的仓库,如果当前目录下不存在就创建;如果已存在仓库,则更新. import platform,os,gitlab,sys,multiprocessing def returnpath(path:str)->str: if ‘Windows’ == platform.system(): path = path.replace(‘/’,’\\’) return path def get_gitlab_groups_projs_path(gl_server:gitlab.Gitlab)->list: projs = [] projs_id = [] projs_tmp = [] def __add(group): for proj … “使用Python脚本一次性并发拉取Gitlab中所有的仓库”

Read More

GitLab 接入AD域验证

公司之前用的都是由我部署的 LDAP , 前些日子升级了成 Windows 的域控,类似 Jenkins, Harbor 和 Gitlab 这些已接入账号管理的都要重新配置,这里记录下 Gitlab 的修改记录. Gitlab 使用的是官方的 Docker 容器,将容器内的/etc/gitlab挂载出来,编辑其中的gitlab.rb文件. 找到gitlab_rails[‘ldap_enabled’] = true,去掉前面的注释,编辑下方的 YAML.load: gitlab_rails[‘ldap_servers’] = YAML.load <<-‘EOS’ main: # ‘main’ is the GitLab ‘provider ID’ of this … “GitLab 接入AD域验证”

Read More

GitLab 使用git push 出现RPC failed; HTTP 500 curl 22 The requested URL returned error: 500

提交流程图时,出现了如下奇怪错误: $ git push origin Counting objects: 4, done. Delta compression using up to 24 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 5.59 MiB | 16.73 MiB/s, done. Total 4 (delta 1), … “GitLab 使用git push 出现RPC failed; HTTP 500 curl 22 The requested URL returned error: 500”

Read More

运行SourceTree后GitLab响应Forbidden解决方法

公司的Git服务是由GitLab的docker容器搭建的,当初我搭建/升级/启动都很方便,且没修改gitlab.rb配置文件,用的都是默认配置. 在SourceTree升级到2.1.10.0后,竟然坑爹的默认后台并发查询git仓库更新,近百个项目,这个并发查询超了GitLab并发访问的阈值,直接封了IP. 解决方法 根据官方说明:Rack Attack和IP Whitelist,解决方法三种: 添加IP白名单. 加大并发阈值. 直接关闭Rack Attack. 这里我是加大并发阈值和添加IP白名单. 因为跑的是容器,那么就直接进挂载的文件夹里找到config/gitlab.rb后,打开并找到gitlab_rails[‘rack_attack_git_basic_auth’]项,去掉注释,并修改为: gitlab_rails[‘rack_attack_git_basic_auth’] = { ‘enabled’ => true, ‘ip_whitelist’ => [“127.0.0.1″,”192.168.xxx.xxx”], ‘maxretry’ => 200, ‘findtime’ => 60, ‘bantime’ => 3600 } 这里在ip_whitelist字段后添加白名单IP即可,然后增加maxretry字段的值。

Read More

Windows下保存git账号密码实现免输入

Windows 10 支持git的凭证管理,但是Window 7之前的还不行。我在个人电脑的虚拟机上有时候懒得输入git的账号密码,可以使用此方法一劳永逸,不过这样账号同时也存在风险。 首先电脑上已经装了Git 工具,在Git Bash或其他终端输入git config –global credential.helper store即可。 也可以用Win+R 键盘打开 运行 窗口,输入 %USERPROFILE% 回车,这时候在该目录下有个.gitconfig的隐藏文件(没有则创建),使用文本编辑器打开,在底下添加如下两行: [credential] helper=store 然后当下次输入账号密码后,Git会自动将信息保存在此目录的.git-credentials文件中,往后就不必重复输入了。

Read More