以没有gc过为例,登录到远程git服务器,并找到仓库所在目录,以我使用的gitea为例,gitlab类似:
git clone /home/git/gitea-repositories/fengqi/exmaple.git rescue
cd rescue
# 查找丢失的提交,如果没有输出commit表示没救了
git fsck --lost-found
Checking object directories: 100% (256/256), done.
Checking objects: 100% (31/31), done.
dangling commit 558aac381bc8acb161447686361928e2e2edc9bf
dangling blob 82f865770e1590763574a60d53286f2102f6b03b
dangling blob d912156bec00a9f00850ab2ec3a3baf1016c2141
dangling blob f02e11383e55a7f7ac33d8dc6554ce4901e55a64
# 查看内容
git show 558aac381bc8acb161447686361928e2e2edc9bf
git checkout branch_xxx
git rebase 558aac381bc8acb161447686361928e2e2edc9bf
# 这里可能提示和远端不一样导致push失败,可以fetch后rebase,也可以pull,看你喜好
git push branch_xxx
因为原始信息只在远端,如果你没有权限登录到git远程仓库,大概率也没救了。
]]>VPS
,就是此博客系统所在的机器,这台机器是有公网IP的Proxmox VE
虚拟了各种服务,其中包括Gitea
frp
转发暴露内网的Gitea
到公网HTTP
协议上传或者下载代码,现在觉得太麻烦想用SSH
协议如果你跟我的场景类型,此文很适合你,如果你是同一台机器上docker
和宿主机
之间22端口共享问题,文末官方文档更适合你。
本文也是参考了文末官方文档的实现,但是有部分不太一样。
]]>我们打开shell, cd到git根目录,执行命令: git config core.filemode false
然后我们再来执行git status就会发现少了很多需要变更的文件
建议设置到全局, 命令改为: git config --global core.filemode false
今天被一个同事一次提交近300个文件的更改(全部chmod...)吓到了, 提交前也不对比下, 不过 Gitlab 居然没有卡死.
参考: Git忽略chmod更改
]]>与 git.fengqi.me 的连接采用 128 位加密技术。但是,此页中包含其他不安全的资源。他人能在传输过程中查看这些资源,攻击者也可以进行修改,从而改变网页的外观。
该连接使用 TLS 1.2。
该连接使用 AES_128_GCM 进行加密和身份验证,并使用 ECDHE_RSA 作为密钥交换机制。
重新清理生产 assets 就好了:
cd /home/git/gitlab
sudo -u git -H bundle exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production
刷新浏览器.
]]>有时候要使用VIM打开了一些文件,但是在其他地方把次文件改动了,例如使用git进行checkout等操作,需要重新载入此文件。
1 重新载入当前文件:
:e
:e! #放弃当前修改,强制重新载入
2 重新载入所有打开的文件:
:bufdo e 或者 :bufdo :e!
:bufdo命令表示把后面的命令应用到所有buffer中的文件。
参考网址:Refresh all files in buffer from disk in vim, Run a command in multiple buffers
]]>个人怎么使用我就不说了, 如果你刚接触git也可以参考文章末尾我提供的参考文档; 这里只说下git服务器的搭建, 下面的内容都建立在我认为你已经大致会使用git init, git add, git commit等简单命令的基础上.
另外关于认证方式, 我们选择单用户, 多证书的方式, github就是如此, 因为是ssh访问, 不可能每个人在服务器上有一个用户, 关于几种认证方式请参考文章末尾我提供的参考文档, 那下面我们开始吧.
]]>