git

git

wepy2.x回滚wepy1.x,wepy2.x从入门到弃坑

小程序网站管理员 Published the article • 0 comments • 890 views • 2019-08-01 15:42 • 来自相关话题

网上有很多开发小程序同学喜欢用官方的开发框架wepy,wepy现在有两个大版本,wepy1.x和wepy2.x。

但是这两个版本差异十分的大,我之前写了一篇文档介绍了,大家可以先看看这一篇[wepy1.x升级wepy2.x,wepy如何实现大的版本升级](https://www.sourcedev.cc/article/188)。

对比一下差异。你会发现当前把wepy的代码从wepy1.x升级到wepy2.x的时候,仿佛进入了新的世界,语法差异十分的大。如果不打算重构自己的代码,需要兼容wepy1.x的话,这将会是一个不小的工程。
我们需要耗费大量的时间重构和调试自己的代码。

那么升级了wepy2.x之后怎么办,我发现自己入坑,想回到wepy1.x怎么办? 这个时候我们也不用着急,应为我们的代码,即使有少量的改动我们也可以恢复的。
将修改的代码放入回收站内,回收站是一个栈。

### 修改的代码恢复保存

```bash
git stash save # 将代码压入栈

git stash pop # 弹出代码
```

### 重新安装wepy1.x的全局包:

```bash
npm install wepy@1.7.x -g
``` 查看全部
网上有很多开发小程序同学喜欢用官方的开发框架wepy,wepy现在有两个大版本,wepy1.x和wepy2.x。

但是这两个版本差异十分的大,我之前写了一篇文档介绍了,大家可以先看看这一篇[wepy1.x升级wepy2.x,wepy如何实现大的版本升级](https://www.sourcedev.cc/article/188)。

对比一下差异。你会发现当前把wepy的代码从wepy1.x升级到wepy2.x的时候,仿佛进入了新的世界,语法差异十分的大。如果不打算重构自己的代码,需要兼容wepy1.x的话,这将会是一个不小的工程。
我们需要耗费大量的时间重构和调试自己的代码。

那么升级了wepy2.x之后怎么办,我发现自己入坑,想回到wepy1.x怎么办? 这个时候我们也不用着急,应为我们的代码,即使有少量的改动我们也可以恢复的。
将修改的代码放入回收站内,回收站是一个栈。

### 修改的代码恢复保存

```bash
git stash save # 将代码压入栈

git stash pop # 弹出代码
```

### 重新安装wepy1.x的全局包:

```bash
npm install wepy@1.7.x -g
```

It is required that your private key files are NOT accessible by others

Linux网站管理员 Published the article • 0 comments • 409 views • 2019-04-09 10:55 • 来自相关话题

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```

### Solution

权限```0644```对于文件```~/.ssh/id_rsa```太开放了。

```bash
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
``` 查看全部
```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```

### Solution

权限```0644```对于文件```~/.ssh/id_rsa```太开放了。

```bash
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
```

git的文件模式曾困扰了我

Linux网站管理员 Published the article • 0 comments • 225 views • 2019-02-21 15:29 • 来自相关话题

当我为git里的某个文件建立软链的时候,文件模式从100644变成了120000,我起初以为是我的权限问题,导致文件的权限也发生了变化,

翻阅git的资料得知:
文件模式为 100644,表明这是一个普通文件,
其他可用的模式有:100755 表示可执行文件,
120000 表示符号链接。

文件模式是从常规的 UNIX 文件模式中参考来的,但是没有那么灵活 ── 上述三种模式仅对 Git 中的文件 (blobs) 有效 (虽然也有其他模式用于目录和子模块)。 查看全部

当我为git里的某个文件建立软链的时候,文件模式从100644变成了120000,我起初以为是我的权限问题,导致文件的权限也发生了变化,

翻阅git的资料得知:
文件模式为 100644,表明这是一个普通文件,
其他可用的模式有:100755 表示可执行文件,
120000 表示符号链接。

文件模式是从常规的 UNIX 文件模式中参考来的,但是没有那么灵活 ── 上述三种模式仅对 Git 中的文件 (blobs) 有效 (虽然也有其他模式用于目录和子模块)。

git commit 修改重写 git amend

Linux网站管理员 Published the article • 0 comments • 239 views • 2018-10-10 15:40 • 来自相关话题

### git commit 修改重写


### 背景

在提交```git commit```的时候,可能内容会出现错误,如果修改这个错误呢?
这种失误是可以修订的

```bash
git commit -m "bugfix: fxuk"
```

### 解决方案

命令行输入如下命令,如果你的git默认编辑器是```vim```的话,然后按下```i```,编辑你的内容,```Esc``` & ```:wq``` 保存退出

```bash
git commit --amend
```

```amend```解释为:修订;改良,修改 查看全部
### git commit 修改重写


### 背景

在提交```git commit```的时候,可能内容会出现错误,如果修改这个错误呢?
这种失误是可以修订的

```bash
git commit -m "bugfix: fxuk"
```

### 解决方案

命令行输入如下命令,如果你的git默认编辑器是```vim```的话,然后按下```i```,编辑你的内容,```Esc``` & ```:wq``` 保存退出

```bash
git commit --amend
```

```amend```解释为:修订;改良,修改

git 对比两个分支的改动

后端开发网站管理员 Published the article • 0 comments • 282 views • 2018-08-02 19:49 • 来自相关话题

## git 对比两个分支的改动

git-diff 提交记录之间的差异,

### 查看 ```git diff``` 手册

```
man git diff
```

### 对比分支

对比分支dev与master分支的差异
```
git diff master dev
```

### 参数

#### 查看改动的文件

```
git diff --name-only master dev
``` 查看全部
## git 对比两个分支的改动

git-diff 提交记录之间的差异,

### 查看 ```git diff``` 手册

```
man git diff
```

### 对比分支

对比分支dev与master分支的差异
```
git diff master dev
```

### 参数

#### 查看改动的文件

```
git diff --name-only master dev
```

git reference broken 记一次断电引发的git翻车事件,我丢失了stable分支

后端开发网站管理员 Published the article • 0 comments • 1882 views • 2018-06-27 10:33 • 来自相关话题

## 背景

有些配置需要更新上线,代码在```new-dev```, 然后在```stable```分支上面```cherry-pick``` ```new-dev```分支上的commit id
然后 ```git push```代码到服务器上面,此时正好停电了。过了不久,恢复供电。
此时执行命令```git status```

```git
fatal: Not a git repository (or any of the parent directories): .git
```

什么,不是git仓库,通常想到的就是.git文件找不到,不可能啊

```bash
ls -la .git
```

```text
total 1237
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 .
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 ..
-rw-r--r-- 1 Administrator 197121 45 Jun 22 15:28 COMMIT_EDITMSG
-rw-r--r-- 1 Administrator 197121 1416 Jun 22 15:28 FETCH_HEAD
-rw-r--r-- 1 Administrator 197121 23 Jun 22 15:28 HEAD
-rw-r--r-- 1 Administrator 197121 41 Jun 22 15:28 ORIG_HEAD
-rw-r--r-- 1 Administrator 197121 580 Jun 11 17:12 config
-rw-r--r-- 1 Administrator 197121 73 Jun 4 18:04 description
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 hooks
-rw-r--r-- 1 Administrator 197121 1220081 Jun 22 15:28 index
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 info
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 logs
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 objects
-rw-r--r-- 1 Administrator 197121 7708 Jun 4 18:04 packed-refs
drwxr-xr-x 1 Administrator 197121 0 Jun 22 16:26 refs
```

于是偷个懒,懒得修复了,直接```git clone```一个新的项目,然后发现```stable```分支已经找不到了。这下我就慌了,还好昨天有人修改上线,
之后也没有人修改代码,有最新的tag。按照如下操作,发现代码提交不上去,于是搜索了一下```reference broken```[1],说是服务器文件有损坏,
```refs/heads/statble```中的commit id为空或者乱码。

于是找来运维大哥上gitlab服务器上面看看,果然,```resf/heads/stable```中的commit id,为空,然后我到本地的同级目录下看看这个文件
里的字节全是0。从tag把最新的commit id写入这个文件,然后stable分支就出现了。

```bash
root@ubuntu:/mnt/api-xxx# git checkout xxx-release-5.0.4.201806211050
root@ubuntu:/mnt/api-xxx# git checkout -b stable
root@ubuntu:/mnt/api-xxx# git push --set-upstream origin stable
Total 0 (delta 0), reused 0 (delta 0)
remote: error: cannot lock ref 'refs/heads/stable': unable to resolve reference 'refs/heads/stable': reference broken
To gitlab.xxx.tv:xxx/api.git
! [remote rejected] stable -> stable (failed to update ref)
error: failed to push some refs to 'git@gitlab.xxx.tv:xxx/api.git'
```

## 总结

定时备份数据(不局限在这个项目上面,这个有tag),断电这种不可抵抗力因素,如果遇到了,可能一下午还要加班在填坑

到最后我我还在yy,是我push这个commit导致gitlab负载过高,然后断电了

## 参考

1. [https://my.oschina.net/Tyrfing/blog/1612487](https://my.oschina.net/Tyrfing/blog/1612487) 查看全部

## 背景

有些配置需要更新上线,代码在```new-dev```, 然后在```stable```分支上面```cherry-pick``` ```new-dev```分支上的commit id
然后 ```git push```代码到服务器上面,此时正好停电了。过了不久,恢复供电。
此时执行命令```git status```

```git
fatal: Not a git repository (or any of the parent directories): .git
```

什么,不是git仓库,通常想到的就是.git文件找不到,不可能啊

```bash
ls -la .git
```

```text
total 1237
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 .
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 ..
-rw-r--r-- 1 Administrator 197121 45 Jun 22 15:28 COMMIT_EDITMSG
-rw-r--r-- 1 Administrator 197121 1416 Jun 22 15:28 FETCH_HEAD
-rw-r--r-- 1 Administrator 197121 23 Jun 22 15:28 HEAD
-rw-r--r-- 1 Administrator 197121 41 Jun 22 15:28 ORIG_HEAD
-rw-r--r-- 1 Administrator 197121 580 Jun 11 17:12 config
-rw-r--r-- 1 Administrator 197121 73 Jun 4 18:04 description
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 hooks
-rw-r--r-- 1 Administrator 197121 1220081 Jun 22 15:28 index
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 info
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 logs
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 objects
-rw-r--r-- 1 Administrator 197121 7708 Jun 4 18:04 packed-refs
drwxr-xr-x 1 Administrator 197121 0 Jun 22 16:26 refs
```

于是偷个懒,懒得修复了,直接```git clone```一个新的项目,然后发现```stable```分支已经找不到了。这下我就慌了,还好昨天有人修改上线,
之后也没有人修改代码,有最新的tag。按照如下操作,发现代码提交不上去,于是搜索了一下```reference broken```[1],说是服务器文件有损坏,
```refs/heads/statble```中的commit id为空或者乱码。

于是找来运维大哥上gitlab服务器上面看看,果然,```resf/heads/stable```中的commit id,为空,然后我到本地的同级目录下看看这个文件
里的字节全是0。从tag把最新的commit id写入这个文件,然后stable分支就出现了。

```bash
root@ubuntu:/mnt/api-xxx# git checkout xxx-release-5.0.4.201806211050
root@ubuntu:/mnt/api-xxx# git checkout -b stable
root@ubuntu:/mnt/api-xxx# git push --set-upstream origin stable
Total 0 (delta 0), reused 0 (delta 0)
remote: error: cannot lock ref 'refs/heads/stable': unable to resolve reference 'refs/heads/stable': reference broken
To gitlab.xxx.tv:xxx/api.git
! [remote rejected] stable -> stable (failed to update ref)
error: failed to push some refs to 'git@gitlab.xxx.tv:xxx/api.git'
```

## 总结

定时备份数据(不局限在这个项目上面,这个有tag),断电这种不可抵抗力因素,如果遇到了,可能一下午还要加班在填坑

到最后我我还在yy,是我push这个commit导致gitlab负载过高,然后断电了

## 参考

1. [https://my.oschina.net/Tyrfing/blog/1612487](https://my.oschina.net/Tyrfing/blog/1612487)

wepy2.x回滚wepy1.x,wepy2.x从入门到弃坑

小程序网站管理员 Published the article • 0 comments • 890 views • 2019-08-01 15:42 • 来自相关话题

网上有很多开发小程序同学喜欢用官方的开发框架wepy,wepy现在有两个大版本,wepy1.x和wepy2.x。

但是这两个版本差异十分的大,我之前写了一篇文档介绍了,大家可以先看看这一篇[wepy1.x升级wepy2.x,wepy如何实现大的版本升级](https://www.sourcedev.cc/article/188)。

对比一下差异。你会发现当前把wepy的代码从wepy1.x升级到wepy2.x的时候,仿佛进入了新的世界,语法差异十分的大。如果不打算重构自己的代码,需要兼容wepy1.x的话,这将会是一个不小的工程。
我们需要耗费大量的时间重构和调试自己的代码。

那么升级了wepy2.x之后怎么办,我发现自己入坑,想回到wepy1.x怎么办? 这个时候我们也不用着急,应为我们的代码,即使有少量的改动我们也可以恢复的。
将修改的代码放入回收站内,回收站是一个栈。

### 修改的代码恢复保存

```bash
git stash save # 将代码压入栈

git stash pop # 弹出代码
```

### 重新安装wepy1.x的全局包:

```bash
npm install wepy@1.7.x -g
``` 查看全部
网上有很多开发小程序同学喜欢用官方的开发框架wepy,wepy现在有两个大版本,wepy1.x和wepy2.x。

但是这两个版本差异十分的大,我之前写了一篇文档介绍了,大家可以先看看这一篇[wepy1.x升级wepy2.x,wepy如何实现大的版本升级](https://www.sourcedev.cc/article/188)。

对比一下差异。你会发现当前把wepy的代码从wepy1.x升级到wepy2.x的时候,仿佛进入了新的世界,语法差异十分的大。如果不打算重构自己的代码,需要兼容wepy1.x的话,这将会是一个不小的工程。
我们需要耗费大量的时间重构和调试自己的代码。

那么升级了wepy2.x之后怎么办,我发现自己入坑,想回到wepy1.x怎么办? 这个时候我们也不用着急,应为我们的代码,即使有少量的改动我们也可以恢复的。
将修改的代码放入回收站内,回收站是一个栈。

### 修改的代码恢复保存

```bash
git stash save # 将代码压入栈

git stash pop # 弹出代码
```

### 重新安装wepy1.x的全局包:

```bash
npm install wepy@1.7.x -g
```

It is required that your private key files are NOT accessible by others

Linux网站管理员 Published the article • 0 comments • 409 views • 2019-04-09 10:55 • 来自相关话题

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```

### Solution

权限```0644```对于文件```~/.ssh/id_rsa```太开放了。

```bash
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
``` 查看全部
```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0644 for '/root/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
Load key "/root/.ssh/id_rsa": bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
```

### Solution

权限```0644```对于文件```~/.ssh/id_rsa```太开放了。

```bash
chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub
```

git的文件模式曾困扰了我

Linux网站管理员 Published the article • 0 comments • 225 views • 2019-02-21 15:29 • 来自相关话题

当我为git里的某个文件建立软链的时候,文件模式从100644变成了120000,我起初以为是我的权限问题,导致文件的权限也发生了变化,

翻阅git的资料得知:
文件模式为 100644,表明这是一个普通文件,
其他可用的模式有:100755 表示可执行文件,
120000 表示符号链接。

文件模式是从常规的 UNIX 文件模式中参考来的,但是没有那么灵活 ── 上述三种模式仅对 Git 中的文件 (blobs) 有效 (虽然也有其他模式用于目录和子模块)。 查看全部

当我为git里的某个文件建立软链的时候,文件模式从100644变成了120000,我起初以为是我的权限问题,导致文件的权限也发生了变化,

翻阅git的资料得知:
文件模式为 100644,表明这是一个普通文件,
其他可用的模式有:100755 表示可执行文件,
120000 表示符号链接。

文件模式是从常规的 UNIX 文件模式中参考来的,但是没有那么灵活 ── 上述三种模式仅对 Git 中的文件 (blobs) 有效 (虽然也有其他模式用于目录和子模块)。

git commit 修改重写 git amend

Linux网站管理员 Published the article • 0 comments • 239 views • 2018-10-10 15:40 • 来自相关话题

### git commit 修改重写


### 背景

在提交```git commit```的时候,可能内容会出现错误,如果修改这个错误呢?
这种失误是可以修订的

```bash
git commit -m "bugfix: fxuk"
```

### 解决方案

命令行输入如下命令,如果你的git默认编辑器是```vim```的话,然后按下```i```,编辑你的内容,```Esc``` & ```:wq``` 保存退出

```bash
git commit --amend
```

```amend```解释为:修订;改良,修改 查看全部
### git commit 修改重写


### 背景

在提交```git commit```的时候,可能内容会出现错误,如果修改这个错误呢?
这种失误是可以修订的

```bash
git commit -m "bugfix: fxuk"
```

### 解决方案

命令行输入如下命令,如果你的git默认编辑器是```vim```的话,然后按下```i```,编辑你的内容,```Esc``` & ```:wq``` 保存退出

```bash
git commit --amend
```

```amend```解释为:修订;改良,修改

git 对比两个分支的改动

后端开发网站管理员 Published the article • 0 comments • 282 views • 2018-08-02 19:49 • 来自相关话题

## git 对比两个分支的改动

git-diff 提交记录之间的差异,

### 查看 ```git diff``` 手册

```
man git diff
```

### 对比分支

对比分支dev与master分支的差异
```
git diff master dev
```

### 参数

#### 查看改动的文件

```
git diff --name-only master dev
``` 查看全部
## git 对比两个分支的改动

git-diff 提交记录之间的差异,

### 查看 ```git diff``` 手册

```
man git diff
```

### 对比分支

对比分支dev与master分支的差异
```
git diff master dev
```

### 参数

#### 查看改动的文件

```
git diff --name-only master dev
```

git reference broken 记一次断电引发的git翻车事件,我丢失了stable分支

后端开发网站管理员 Published the article • 0 comments • 1882 views • 2018-06-27 10:33 • 来自相关话题

## 背景

有些配置需要更新上线,代码在```new-dev```, 然后在```stable```分支上面```cherry-pick``` ```new-dev```分支上的commit id
然后 ```git push```代码到服务器上面,此时正好停电了。过了不久,恢复供电。
此时执行命令```git status```

```git
fatal: Not a git repository (or any of the parent directories): .git
```

什么,不是git仓库,通常想到的就是.git文件找不到,不可能啊

```bash
ls -la .git
```

```text
total 1237
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 .
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 ..
-rw-r--r-- 1 Administrator 197121 45 Jun 22 15:28 COMMIT_EDITMSG
-rw-r--r-- 1 Administrator 197121 1416 Jun 22 15:28 FETCH_HEAD
-rw-r--r-- 1 Administrator 197121 23 Jun 22 15:28 HEAD
-rw-r--r-- 1 Administrator 197121 41 Jun 22 15:28 ORIG_HEAD
-rw-r--r-- 1 Administrator 197121 580 Jun 11 17:12 config
-rw-r--r-- 1 Administrator 197121 73 Jun 4 18:04 description
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 hooks
-rw-r--r-- 1 Administrator 197121 1220081 Jun 22 15:28 index
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 info
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 logs
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 objects
-rw-r--r-- 1 Administrator 197121 7708 Jun 4 18:04 packed-refs
drwxr-xr-x 1 Administrator 197121 0 Jun 22 16:26 refs
```

于是偷个懒,懒得修复了,直接```git clone```一个新的项目,然后发现```stable```分支已经找不到了。这下我就慌了,还好昨天有人修改上线,
之后也没有人修改代码,有最新的tag。按照如下操作,发现代码提交不上去,于是搜索了一下```reference broken```[1],说是服务器文件有损坏,
```refs/heads/statble```中的commit id为空或者乱码。

于是找来运维大哥上gitlab服务器上面看看,果然,```resf/heads/stable```中的commit id,为空,然后我到本地的同级目录下看看这个文件
里的字节全是0。从tag把最新的commit id写入这个文件,然后stable分支就出现了。

```bash
root@ubuntu:/mnt/api-xxx# git checkout xxx-release-5.0.4.201806211050
root@ubuntu:/mnt/api-xxx# git checkout -b stable
root@ubuntu:/mnt/api-xxx# git push --set-upstream origin stable
Total 0 (delta 0), reused 0 (delta 0)
remote: error: cannot lock ref 'refs/heads/stable': unable to resolve reference 'refs/heads/stable': reference broken
To gitlab.xxx.tv:xxx/api.git
! [remote rejected] stable -> stable (failed to update ref)
error: failed to push some refs to 'git@gitlab.xxx.tv:xxx/api.git'
```

## 总结

定时备份数据(不局限在这个项目上面,这个有tag),断电这种不可抵抗力因素,如果遇到了,可能一下午还要加班在填坑

到最后我我还在yy,是我push这个commit导致gitlab负载过高,然后断电了

## 参考

1. [https://my.oschina.net/Tyrfing/blog/1612487](https://my.oschina.net/Tyrfing/blog/1612487) 查看全部

## 背景

有些配置需要更新上线,代码在```new-dev```, 然后在```stable```分支上面```cherry-pick``` ```new-dev```分支上的commit id
然后 ```git push```代码到服务器上面,此时正好停电了。过了不久,恢复供电。
此时执行命令```git status```

```git
fatal: Not a git repository (or any of the parent directories): .git
```

什么,不是git仓库,通常想到的就是.git文件找不到,不可能啊

```bash
ls -la .git
```

```text
total 1237
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 .
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 ..
-rw-r--r-- 1 Administrator 197121 45 Jun 22 15:28 COMMIT_EDITMSG
-rw-r--r-- 1 Administrator 197121 1416 Jun 22 15:28 FETCH_HEAD
-rw-r--r-- 1 Administrator 197121 23 Jun 22 15:28 HEAD
-rw-r--r-- 1 Administrator 197121 41 Jun 22 15:28 ORIG_HEAD
-rw-r--r-- 1 Administrator 197121 580 Jun 11 17:12 config
-rw-r--r-- 1 Administrator 197121 73 Jun 4 18:04 description
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 hooks
-rw-r--r-- 1 Administrator 197121 1220081 Jun 22 15:28 index
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 info
drwxr-xr-x 1 Administrator 197121 0 Jun 4 18:04 logs
drwxr-xr-x 1 Administrator 197121 0 Jun 22 15:28 objects
-rw-r--r-- 1 Administrator 197121 7708 Jun 4 18:04 packed-refs
drwxr-xr-x 1 Administrator 197121 0 Jun 22 16:26 refs
```

于是偷个懒,懒得修复了,直接```git clone```一个新的项目,然后发现```stable```分支已经找不到了。这下我就慌了,还好昨天有人修改上线,
之后也没有人修改代码,有最新的tag。按照如下操作,发现代码提交不上去,于是搜索了一下```reference broken```[1],说是服务器文件有损坏,
```refs/heads/statble```中的commit id为空或者乱码。

于是找来运维大哥上gitlab服务器上面看看,果然,```resf/heads/stable```中的commit id,为空,然后我到本地的同级目录下看看这个文件
里的字节全是0。从tag把最新的commit id写入这个文件,然后stable分支就出现了。

```bash
root@ubuntu:/mnt/api-xxx# git checkout xxx-release-5.0.4.201806211050
root@ubuntu:/mnt/api-xxx# git checkout -b stable
root@ubuntu:/mnt/api-xxx# git push --set-upstream origin stable
Total 0 (delta 0), reused 0 (delta 0)
remote: error: cannot lock ref 'refs/heads/stable': unable to resolve reference 'refs/heads/stable': reference broken
To gitlab.xxx.tv:xxx/api.git
! [remote rejected] stable -> stable (failed to update ref)
error: failed to push some refs to 'git@gitlab.xxx.tv:xxx/api.git'
```

## 总结

定时备份数据(不局限在这个项目上面,这个有tag),断电这种不可抵抗力因素,如果遇到了,可能一下午还要加班在填坑

到最后我我还在yy,是我push这个commit导致gitlab负载过高,然后断电了

## 参考

1. [https://my.oschina.net/Tyrfing/blog/1612487](https://my.oschina.net/Tyrfing/blog/1612487)