15AH, San Francisco

California, United States.

Send Your Mail At:

tianyingkejishe@sina.cn

Working Hours

Mon-Sat: 9.30am To 7.00pm

分类标题

Autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et dolore feugait.

分类归档 GIT管理

【Git】git仓库中有子仓库,子仓库代码上传不成功

如题git仓库中有子仓库,子仓库代码上传不成功,首先我们应该避免仓库嵌套的问题,这种一般不是合理的.应该使用package来管理,不管是私有还是共有.

如果想快速解决问题.可以使用下面的方法:

# 进到子仓库.git所在的目录执行下面命令
rm -rf .git
git rm -r --cached .

【repo】版本管理技巧

在使用 repo sync 同步 Android 源码时,可以添加一些选项来减少同步时间和要下载的代码空间。具体的命令是 repo sync -c --no-tags --prune -j 4

查看 repo help status 的帮助信息,对所给的各个选项具体说明如下:

  • -c, –current-branch fetch only current branch from server.
    这个选项指定只获取执行 repo init 时 -b 选项所指定的分支,不会获取远端服务器的分支信息。例如服务器上新增了其他分支,使用 -c 选项同步后,在本地 git 仓库执行 git branch -r 命令看不到服务器新增的分支名。如果不加 -c 选项,那么同步的时候,会打印 [new branch] 这样的信息,使用 git branch -r 命令可查看到服务器新增的分支。
  • –no-tags don’t fetch tags.
    该选项指定不获取服务器上的tag信息。
  • –prune delete refs that no longer exist on the remote.
    如果远端服务器已经删除了某个分支,在 repo sync 时加上 --prune 选项,可以让本地仓库删除对这个分支的跟踪引用。查看 repo 的 .repo/repo/project.py 源码,这个选项实际上是作为 git fetch 命令的选项来执行。查看 man git-fetch 对自身 --prune 选项的说明如下,可供参考:-p, –prune
    After fetching, remove any remote-tracking references that no longer exist on the remote.
  • -j JOBS, –jobs=JOBS projects to fetch simultaneously (default 2).
    指定启用多少个线程来同步。例如上面的 -j 4 指定用4个线程来同步。如果没有提供该选项,默认是用2个线程。

总的来说,在 repo sync -c --no-tags --prune -j 4 命令中,使用 -c 和 –no-tags 选项可以减少需要同步的内容,从而减少要占用的本地代码空间,也可以减少一些同步时间。

使用 -j 选项来指定启用多线程进行同步,可以加快执行速度,也就减少了同步时间。

使用 –prune 选项去掉已删除分支的跟踪引用,一般不会用到,这个选项可加可不加。

Ubuntu18.04 GitLab仓库服务器搭建

首先安装必须的一些服务

sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates
sudo apt-get install -y postfix

使用左右键和回车键选择确定、取消,弹出列表选项的时候,选择 Internet Site

接着信任 GitLab 的 GPG 公钥:

curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null  

配置镜像路径

由于国外的下载速度过慢,所以配置清华大学镜像的路径。

根据你的版本,选择对于的内容写入/etc/apt/sources.list.d/gitlab-ce.list,详见Gitlab Community Edition 镜像使用帮助

deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main

安装 gitlab-ce

sudo apt-get update
sudo apt-get install gitlab-ce

执行配置

sudo gitlab-ctl reconfigure

启动gitlab

sudo gitlab-ctl start

浏览器进行访问

http://电脑的IP地址

第一次进入,需要输入管理员账号的密码,以方便后期的管理。
输入好之后,就可以以管理员进行登录,账号是root,密码就是你刚才输入的密码。
至此,gitlab已安装成功,之后的使用方式,和github没有太大差异,就不进行介绍了。

扩展

修改gitlab的端口和地址

编辑gitlab.rb

sudo gedit /etc/gitlab/gitlab.rb 

将如下数据进行更改

external_url 'http://gitlab.example.com'  

比如说更改为

external_url 'http://192.168.39.100:7800'  

其中,192.168.39.100是安装了gitlab的这台电脑的IP,端口只要不冲突就行

更改之后,需要执行如下代码

sudo gitlab-ctl reconfigure

最后,在浏览器中访问gitlab,发现已修改成功,需要使用192.168.39.100:7800来访问

其他

gtilab部分命令

停止

sudo gitlab-ctl stop

开启

sudo gitlab-ctl start

确认配置(修改配置后,必须执行)

sudo gitlab-ctl reconfigure

卸载gitlab

执行如下四步:

sudo gitlab-ctl uninstall

sudo dpkg -r gitlab-ce

sudo rpm -e gitlab-ce

reboot(重启)  

从一个仓库迁移到另一个仓库

详见 https://blog.csdn.net/samxx8/article/details/72329002

默认repositories路径:

/var/opt/gitlab/git-data/repositories

修改repositories路径(挂在到另一块硬盘)

(https://docs.gitlab.com/ce/administration/repository_storage_paths.html
)

其他

参照 https://blog.csdn.net/qq_36467463/article/details/78283874
https://blog.csdn.net/hust_cxl/article/details/77332451
https://www.cnblogs.com/m2ez/p/7063606.html
https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/

git创建分支并推送到远程分支

现在我在master分支上,工作目标是干净的,也没有需要commit的:

$ git branch
* master
  release
 
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

新建远程分支

新建一个本地分支:

$ git checkout -b dbg_lichen_star

查看一下现在的分支状态:

$ git branch
* dbg_lichen_star
  master
  release

星号(*)表示当前所在分支。现在的状态是成功创建的新的分支并且已经切换到新分支上。

把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名):

$ git push origin dbg_lichen_star:dbg_lichen_star

使用git branch -a查看所有分支,会看到remotes/origin/dbg_lichen_star这个远程分支,说明新建远程分支成功。

删除远程分支

我比较喜欢的简单方式,推送一个空分支到远程分支,其实就相当于删除远程分支:

$ git push origin :dbg_lichen_star

也可以使用:

$ git push origin --delete dbg_lichen_star

这两种方式都可以删除指定的远程分支