一、创建gitlab用户时,用户没收到邮件
排除步骤:
- 使用 gitlab.rb 里面配置的邮件地址向创建 gitlab 用户时配置的邮件地址发送邮件
收件方能正常收到邮件,排除收件方配置了拒收邮件的可能性。 - 使用 gitlab-rails 命令进行测试
gitlab-rails console
Notify.test_email('收件方地址','mail title','mail txt').deliver_now
发送邮件失败,ok,开始检查配置文件。 - 检查 gitlab.rb 配置文件
external_url 'http://ip'
gitlab_rails['gitlab_email_from'] = 1234567@qq.com"
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 345
gitlab_rails['smtp_user_name'] = "1234567@qq.com"
gitlab_rails['smtp_password'] = "邮箱授权码"
gitlab_rails['smtp_domain'] = "smt.qq.com"
gitlab_rails['smtp_authentication'] = 'login'
gitlab_rails['smtp_tls'] = true
user['git_user_email'] = "1234567@qq.com"
仔细查询了参数代表的意思,发现是端口搞错了,smtp_port 代表是端口不是本机需要开放的端口,而是 smtp 服务端口。将345改成465。
109端口(POP2):109端口是为POP2(Post Office Protocol Version 2,邮局协议2)服务开放的,是用于接收邮件的。
110端口(POP3):110端口是为POP3(Post Office Protocol Version 3,邮局协议3)服务开放的,是用于接收邮件的。
143端口(IMAP):143端口是为IMAP(INTERNET MESSAGE ACCESS PROTOCOL)服务开放的,是用于接收邮件的。
465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放。
995端口(POP3S):995端口是为POP3S(POP3-over-SSL)协议服务开放。
993端口(IMAPS):993端口是为IMAPS(IMAP-over-SSL)协议服务开放。
修改完 gitlab.rb 配置文件后,重新加载配置文件gitlab-ctl reconfigure
,再次使用 gitlab-rails console
指令来测试邮件:
邮件发送成功。
二、创建新项目,没有勾选 Initialize repository with a README
,推送代码到仓库时显示分支不一样
在组队创建新项目时,没有勾选 Initialize repository with a README
,导致推送代码到指定分支名时报错:
这里git项目推荐的执行命令
但是执行这一步时报错,原因是git版本太低,所以后面执行git push xxx xxx xx
失败,但我又不想升级git版本,下面用另一种方式解决:
git branch main ----- 此时将该新分支保存在本地
git branch -r ----- 查看远程仓库分支
git branch ----- 查看本地仓库分支
git push origin 分支名 ----- 将 分支名 同步到远程仓库
然后再执行 git push -u origin main
就成功了
- 额外衍生:删除分支(谨慎操作!!!!)
删除 test分支
1) git branch -d test ----- 删除本地分支test
2) git push origin --delete test ----- 删除远程仓库test分支
- 查看远程仓库分支、本地仓库分支、当前所在分支
git branch -a
三、修改本地分支内容后,远程仓库的内容已被其他的开发者提交过,导致提交失败
修改完本地仓库代码,在推送代码到远程仓库前,需先把远程仓库的代码同步到本地,但由于本地已修改部分文件,并且远程仓库代码已被通过web界面修改,导致拉取代码到本地时报错。不建议直接在web界面修改代码
git push 时报错
这是本地仓库上一次提交的代码版本:15398f97644b75203614d81195ac5c0f4f8c8e79
这是远程仓库代码版本:5dde94b776afeda7982e7f97134ba55e5cbe7af8
很明显本地仓库代码和远程仓库代码不一致
于是去拉取远程仓库代码到本地:git pull
还是报错,提示 index/index.html 合并冲突
两种解决方法,个人倾向与第二个方法
- 将合并冲突的文件改成别的名字,然后在拉取代码
如果文件过多可使用如下方法:
本地修改的代码会被丢弃,不可找回;
git reset --hard
git pull
- 使用
git stash
保存当前代码进度
git stash
git pull
git stash pop
- git stash:保存当前工作进度,能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录。也可以用git stash save,作用等同于git stash,区别是可以加一些注释
- git pull:这个应该不用说了吧!(把服务器仓库的更新拉到本地仓库中)
- git stash pop:可以把你刚才stash到本地栈中的代码pop到本地(也可以用git stash apply,区别:使用apply恢复,stash列表中 的信息是会继续保留的,而使用pop恢复,会将stash列表中的信息进行删除。)
- git stash list:存储到本地栈顶以后,你可以使用git stash list 查看你本地存储的stash日志
- git stash clear: 清空Git栈,原来stash的节点都会被清除
四、分支合并
- 新建一个分支,在此分支上修改内容
- 将新分支的内容提交到远程仓库:
git push origin test
- 拉取远程仓库代码到工作区:
git pull
- 测试完成后合并分支:
1. git merge origin/test; 2. git push