Git
0
无    2020-09-02 12:00:03    0    0
myron

Git 命令

git config --global http.sslVerify false

echo 'export GIT_SSL_NO_VERIFY=true' >> ~/.bashrc
source ~/.bashrc


————————————————————————————

GitLab安装

1.源码安装

2.yum安装

官方源地址:https://about.gitlab.com/downloads/#centos6
清华大学镜像源:https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce

新建 /etc/yum.repos.d/gitlab_gitlab-ce.repo,内容为:

[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
安装依赖

sudo yum install curl openssh-server openssh-clients postfix cronie
sudo service postfix start
sudo chkconfig postfix on
#这句是用来做防火墙的,避免用户通过ssh方式和http来访问。
sudo lokkit -s http -s ssh
再执行

sudo yum makecache
sudo yum install gitlab-ce
sudo gitlab-ctl reconfigure #Configure and start GitLab
配置域名: vim /var/opt/gitlab/nginx/conf/gitlab-http.conf

# 外网访问的端口,如果服务器已经有服务器占用了80,那么这里可以改成其它
listen *:8888;
server_name gitlab.test.domain.com;

set $http_host_with_default "gitlab.test.domain.com:8888";
补充说明:因为编译gitlab的配置 /etc/gitlab/gitlab.rb 时会重新生成这个自定义nginx 配置,所以只要 gitlab 的配置配得好,上面的nginx其实不需要自定义的。

修改密码

gitlab-rails console production
user = User.where(id:1).first
user.password='123456'
user.save!
GitLab备份和恢复

备份

# 可以将此命令写入crontab,以实现定时备份
/usr/bin/gitlab-rake gitlab:backup:create

备份的数据会存储在/var/opt/gitlab/backups,用户通过自定义参数 gitlab_rails['backup_path'],改变默认值。

恢复

# 停止unicorn和sidekiq,保证数据库没有新的连接,不会有写数据情况
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq

# 进入备份目录进行恢复,1476900742为备份文件的时间戳
cd /var/opt/gitlab/backups
gitlab-rake gitlab:backup:restore BACKUP=1476900742
cd -

# 启动unicorn和sidekiq
sudo gitlab-ctl start unicorn
sudo gitlab-ctl start sidekiq
GitLab配置文件修改

vim /etc/gitlab/gitlab.rb
gitlab基本配置:

#外部访问url(经过编译后,自动将这个配置编译到nginx配置,nginx就无需配置了)
external_url 'http://gitlab.test.domain.com:8888'
#默认值就是8080。如果端口被占用,可将8080修改为其它(例如:9090)
unicorn['port'] = 8080
gitlab发送邮件配置

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = “smtp.exmail.qq.com”
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = “huangdc@domain.com“
gitlab_rails['smtp_password'] = "smtp password"
gitlab_rails['smtp_authentication']= “plain"
gitlab_rails['smtp_enable_starttls_auto']= true
gitlab_rails['gitlab_email_from']= 'huangdc@domain.com'
gitlab_rails['gitlab_email_reply_to']= ‘noreply@domain.com'
服务器修改过ssh端口的坑(需要修改配置ssh端口)

#修改过ssh端口,gitlab中项目的的ssh地址,会在前面加上协议头和端口号“ssh://git@gitlab.domain.com:55725/huangdc/test.git”
gitlab_rails['gitlab_shell_ssh_port'] = 55725
配置生效

#使配置生效
gitlab-ctl reconfigure
#重新启动GitLab
gitlab-ctl restart
GitLab常用命令

gitlab-ctl start # 启动所有 gitlab 组件;
gitlab-ctl stop # 停止所有 gitlab 组件;
gitlab-ctl restart # 重启所有 gitlab 组件;
gitlab-ctl status # 查看服务状态;
vim /etc/gitlab/gitlab.rb # 修改gitlab配置文件;
gitlab-ctl reconfigure # 重新编译gitlab的配置;
gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;
gitlab-ctl tail # 查看日志;
gitlab-ctl tail nginx/gitlab_access.log
注意:执行 reconfigure 命令会把gitlab的nginx组件的配置还原,导致自定义修改的端口以及域名等都没有了。

常用目录

日志地址:/var/log/gitlab/ # 对应各服务的打印日志
服务地址:/var/opt/gitlab/ # 对应各服务的主目录
查看gitlab版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION

新建项目

使用root用户登录进gitlab会后,点击“new project“创建一个项目,比如项目命名为“kuaijiFirstProject”。
然后会发现,硬盘上已经生成了一个git文件:

/var/opt/gitlab/git-data/repositories/root/kuaijiFirstProject.git
汉化

https://gitlab.com/xhang/gitlab.git

gitlab的使用

ssh -T -p 55725 git@gitlab.domain.com
注意:<fornt>以上这条 ssh 命令测试通过,未必代表就能 git clone 代码,git clone 代码需要执行命令的账户有写权限,如果是普通用户用 sudo git clone 那么 git 就会使用的 root 账号的 Private Key。 </fornt>

1.登录

管理员会为使用者开通账号并设置权限。

2.使用者在客户端生成ssh key

参考文章: http://www.jianshu.com/p/142b3dc8ae15

ssh-keygen -t rsa -C "huangdc@domain.com"
3.将公钥的内容copy到gitlab用户设置里面的“SSH Keys”

Windows: clip < ~/.ssh/id_rsa.pub
Mac: pbcopy < ~/.ssh/id_rsa.pub
GNU/Linux (requires xclip): xclip -sel clip < ~/.ssh/id_rsa.pub

4.测试ssh连接

#标准测试代码:ssh -T git@gitlab.com
ssh -T -p 55725 git@gitlab.domain.com #修改过端口号的测试代码
如果连接成功的话,会出现以下信息:

Welcome to GitLab, huangdc!
说明:实际上执行这条ssh命令,所使用的远程服务器的用户是git,这个用户是在安装gitlab的时候生成的,所有使用gitlab服务器的ssh客户端,都是使用git这个用户。在这里的用户“huangdc”是通过gitlab创建的,是用于gitlab的权限管理,也用作标识提交代码的开发者信息,不要跟ssh的用户混淆了。

如何使用多个SSH公钥(自己电脑在使用多个代码仓库)

原理其实是:因为每个仓库都需要 ssh 连接,而 ssh 命令默认是使用 .ssh 目录下面的私钥去连接代码仓库,所以我们可以在 .ssh/config 目录里面针对不同的仓库域名重定义它的私钥。

例子如下:

编辑文件: vim /Users/david/.ssh/config

Host gitlab.domain.com
IdentityFile /Users/david/.ssh/id_rsa
命令行环境下初始化项目

首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:
ssh://git@gitlab.domain.com:55725/huangdc/test.git
在本地初始化仓库、提交代码、推送到远程 master 分支。
git clone ssh://git@gitlab.domain.com:55725/huangdc/test.git
cd test
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master
命令行环境下迁移旧的项目

首先在 gitlab 上面创建一个空的代码仓库,得到仓库地址如下:
#注意:已存在代码的旧项目只能推送到空的远程代码仓库
ssh://git@gitlab.domain.com:55725/dev/memberApi.git
本地初始化项目、关联远程仓库、推送到远程仓库
cd /Users/david/work_www/memberApi
git init
git remote add origin ssh://git@gitlab.domain.com:55725/dev/memberApi.git
git push -u origin master
SourceTree的安装和打开

官网下载链接:https://www.sourcetreeapp.com/
打开SourceTree之后,需要登录Atlassian账号来激活SourceTree。可以使用Google账号直接关联登录。
登录后还需要一些设置,以最简单的方式跳过就行。
Git Flow

http://flc.ren/2015/12/381.html

备注

这篇文章主要记录如何安装和使用 GitLab ,晚点再分享一篇讲解分支模型策略的文章。


————————————————————————————
三、修改账号密码

注:在第一次访问的时候会提示输入新密码,此时该密码为最初的密码,可以在页面设置新密码或者通过下面的方式重置密码
Gitlab 修改root用户密码

使用root权限登录服务器并启动Ruby on Rails 控制台.

[root@localhost ~]# gitlab-rails console production
Loading production environment (Rails 4.2.8)
irb(main):001:0>

有多种方式可以重置密码

irb(main):001:0> user = User.where(id: 1).first
=> #<User id:1 @root>
irb(main):002:0>user.password = 'secret_pass'
irb(main):002:0>user.password_confirmation = 'secret_pass'
irb(main):002:0>user.save

或者

irb(main):001:0> user = User.find_by(email: 'admin@local.host')
=> #<User id:1 @root>
irb(main):002:0>user.password = 'secret_pass'
irb(main):002:0>user.password_confirmation = 'secret_pass'
irb(main):002:0>user.save

修改密码后可以尝试使用新密码登录

————————————————————————————

https://oapi.dingtalk.com/robot/send?access_token=909c16e43148d3a0a01b7b8d91b1a7657e1014fca4705fbec854e3c73c1bd432


Gitlab 恢复

同样, Gitlab的从备份恢复也非常简单:

# 停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

# 从1393513186编号备份中恢复
gitlab-rake gitlab:backup:restore BACKUP=1393513186

# 启动Gitlab
sudo gitlab-ctl start
Gitlab迁移

迁移如同备份与恢复的步骤一样, 只需要将老服务器/var/opt/gitlab/backups目录下的备份文件拷贝到新服务器上的/var/opt/gitlab/backups即可(如果你没修改过默认备份目录的话). 但是需要注意的是新服务器上的Gitlab的版本必须与创建备份时的Gitlab版本号相同. 比如新服务器安装的是最新的7.60版本的Gitlab, 那么迁移之前, 最好将老服务器的Gitlab 升级为7.60在进行备份.


————————————————————————————
#查看PostgreSQL版本

/opt/gitlab/embedded/bin/psql --version

#查看gitlab的版本

cat /opt/gitlab/embedded/service/gitlab-rails/VERSION


————————————————————————————
2.

[html] view plain copy
git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96

3. 把修改推到远程服务器
[javascript] view plain copy
git push -f -u origin master



git删除远程文件夹或文件的方法
由于本地修改了文件夹大全名大小写的原因,同步到git上并不区分大小写,造成了一些文件同步不了,所以要先把git远程库上文件夹删除掉,然后再重新同步

如下,我把src里的全部移除,但是本地文件还保留。

git rm -r -n --cached */src/\* //-n:加上这个参数,执行命令时,是不会删除任何文件,而是展示此命令要删除的文件列表预览。



git rm -r --cached */src/\* //最终执行命令.



git commit -m"移除src目录下所有文件的版本控制" //提交

星期一, 三月 12, 6:46 下午星期一, 三月 12, 6:46 下午

git push origin master //提交到远程服务器



若用git status命令查看,则/src/目录下文件出现在结果列表里, 我们不希望这个目录下的文件出现,则在项目根目录下,和.git 同级目录下,新建一个.gitignore文件,

把.gitignore提交到远程服务器。 则/src目录就不会被提交了。


________________________________________________________________________________________

git 访问 https时报错:

git config --global http.sslVerify false

git clone https://mgr:longlong@gitlab.bigtree.com/mgr/codes.git

_________________________________________________________________________________________


Tsuru 开源 PaaS 平台

http://adc.alibabatech.org/carnival/history/schedule/2013http://www.cloudifysource.org/

__________________________________________________________________________________________

git init # 初始化本地git仓库(创建新仓库)
git config --global user.name "xxx" # 配置用户名
git config --global user.email "xxx@xxx.com" # 配置邮件
git config --global color.ui true # git status等命令自动着色
git config --global color.status auto
git config --global color.diff auto
git config --global color.branch auto
git config --global color.interactive auto
git clone git+ssh://git@192.168.53.168/VT.git # clone远程仓库
git status # 查看当前版本状态(是否修改)
git add xyz # 添加xyz文件至index
git add . # 增加当前子目录下所有更改过的文件至index
git commit -m 'xxx' # 提交
git commit --amend -m 'xxx' # 合并上一次提交(用于反复修改)
git commit -am 'xxx' # 将add和commit合为一步
git rm xxx # 删除index中的文件
git rm -r * # 递归删除
git log # 显示提交日志
git log -1 # 显示1行日志 -n为n行
git log -5
git log --stat # 显示提交日志及相关变动文件
git log -p -m
git show dfb02e6e4f2f7b573337763e5c0013802e392818 # 显示某个提交的详细内容
git show dfb02 # 可只用commitid的前几位
git show HEAD # 显示HEAD提交日志
git show HEAD^ # 显示HEAD的父(上一个版本)的提交日志 ^^为上两个版本 ^5为上5个版本
git tag # 显示已存在的tag
git tag -a v2.0 -m 'xxx' # 增加v2.0的tag
git show v2.0 # 显示v2.0的日志及详细内容
git log v2.0 # 显示v2.0的日志
git diff # 显示所有未添加至index的变更
git diff --cached # 显示所有已添加index但还未commit的变更
git diff HEAD^ # 比较与上一个版本的差异
git diff HEAD -- ./lib # 比较与HEAD版本lib目录的差异
git diff origin/master..master # 比较远程分支master上有本地分支master上没有的
git diff origin/master..master --stat # 只显示差异的文件,不显示具体内容
git remote add origin git+ssh://git@192.168.53.168/VT.git # 增加远程定义(用于push/pull/fetch)
git branch # 显示本地分支
git branch --contains 50089 # 显示包含提交50089的分支
git branch -a # 显示所有分支
git branch -r # 显示所有原创分支
git branch --merged # 显示所有已合并到当前分支的分支
git branch --no-merged # 显示所有未合并到当前分支的分支
git branch -m master master_copy # 本地分支改名
git checkout -b master_copy # 从当前分支创建新分支master_copy并检出
git checkout -b master master_copy # 上面的完整版
git checkout features/performance # 检出已存在的features/performance分支
git checkout --track hotfixes/BJVEP933 # 检出远程分支hotfixes/BJVEP933并创建本地跟踪分支
git checkout v2.0 # 检出版本v2.0
git checkout -b devel origin/develop # 从远程分支develop创建新本地分支devel并检出
git checkout -- README # 检出head版本的README文件(可用于修改错误回退)
git merge origin/master # 合并远程master分支至当前分支
git cherry-pick ff44785404a8e # 合并提交ff44785404a8e的修改
git push origin master # 将当前分支push到远程master分支
git push origin :hotfixes/BJVEP933 # 删除远程仓库的hotfixes/BJVEP933分支
git push --tags # 把所有tag推送到远程仓库
git fetch # 获取所有远程分支(不更新本地分支,另需merge)
git fetch --prune # 获取所有原创分支并清除服务器上已删掉的分支
git pull origin master # 获取远程分支master并merge到当前分支
git mv README README2 # 重命名文件README为README2
git reset --hard HEAD # 将当前版本重置为HEAD(通常用于merge失败回退)
git rebase
git branch -d hotfixes/BJVEP933 # 删除分支hotfixes/BJVEP933(本分支修改已合并到其他分支)
git branch -D hotfixes/BJVEP933 # 强制删除分支hotfixes/BJVEP933
git ls-files # 列出git index包含的文件
git show-branch # 图示当前分支历史
git show-branch --all # 图示所有分支历史
git whatchanged # 显示提交历史对应的文件修改
git revert dfb02e6e4f2f7b573337763e5c0013802e392818 # 撤销提交dfb02e6e4f2f7b573337763e5c0013802e392818
git ls-tree HEAD # 内部命令:显示某个git对象
git rev-parse v2.0 # 内部命令:显示某个ref对于的SHA1 HASH
git reflog # 显示所有提交,包括孤立节点
git show HEAD@{5}
git show master@{yesterday} # 显示master分支昨天的状态
git log --pretty=format:'%h %s' --graph # 图示提交日志
git show HEAD~3
git show -s --pretty=raw 2be7fcb476
git stash # 暂存当前修改,将所有至为HEAD状态
git stash list # 查看所有暂存
git stash show -p stash@{0} # 参考第一次暂存
git stash apply stash@{0} # 应用第一次暂存
git grep "delete from" # 文件中搜索文本“delete from”
git grep -e '#define' --and -e SORT_DIRENT
git gc
git fsck


CCTV COS
文档导航