git使用
# 一、git原理和svn的区别
git原理图解 - 灰太郎^_^ - 博客园 (cnblogs.com) (opens new window)
# A、将本地项目目录提交到远程仓库步骤
# 1、初始化git本地项目
git init
# 2、远程建立git项目
# 3、添加文件
git remote add origin git@gitee.com:shollin/front-learn.git #origin可以随便取,用它来代表远程仓库的地址
git add . #提交当前目录 git add -A
2
# 4、提交到本地仓库
$ git commit -a -m "第一次提交" #-a表示所有文件
# 5、push到远程仓库
git remote #查看有哪些远程仓库 -v
git push origin master # 提交master分支到origin远程仓库,第一次push,加上-u
2
如果本地有文件,远程分支也有新文件,则拉取的时候,要进行合并,git pull,git feach提醒fatal: refusing to merge unrelated histories
git pull origin master --allow-unrelated-histories #拉取master分支,并跟本地合并
# B、分支相关操作
git checkout dev|master # 切换分支branch,切换后只会显示当前分支的内容,其它分支的内容看不到
git branch #查看所有分支
git branch test #创建本地test分支
git branch -d <branchname> # 删除分支
2
3
4
# C、状态
git status #查看状态
git log #查看日志,可以带 --stat
2
# 二、git与gitlab安装
# 安装git
yum install git #这种方式安装的git版本较低,为1.8.X
源码安装
#安装环境依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker -y
2
下载git,并上传到服务器 Releases · git/git (github.com) (opens new window)
wget https://github.91chifun.workers.dev/https://github.com//git/git/archive/refs/tags/v2.33.0.tar.gz
tar -zxvf git-2.33.0.tar.gz
cd git-2.33.0
make prefix=/usr/local/git all #编译
make install prefix=/usr/local/git #安装到指定目录
yum remove git -y #移除yum安装的git,其版本较低为1.8.X
vi /etc/profile
export GIT_HOME=/usr/local/git
source /etc/profile
git --version #查看git的版本
2
3
4
5
6
7
8
9
10
11
12
# 安装gitlab
Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror (opens new window)
# 安装环境依赖
yum install -y curl policycoreutils-python openssh-server perl postfix
systemctl enable sshd
systemctl start sshd
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
systemctl reload firewalld
yum install postfix
systemctl enable postfix
systemctl start postfix
2
3
4
5
6
7
8
9
10
11
参考: Download and install GitLab | GitLab (opens new window)
# 修改yum源
新建 vi /etc/yum.repos.d/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 makecache
sudo yum install gitlab-ce #yum install gitlab-ce-10.8.7 #安装指定版本
2
3
4
5
6
7
8
9
10
11
参考:gitlab安装配置,里面相当多的坑,已排除_哔哩哔哩_bilibili (opens new window)
# 下载gitlab后上传到服务器
rpm -ivh gitlab-ce-10.8.7-ce.0.el7.x86_64.rpm #gitlab-ce-13.9.7-ce.0.el7.x86_64.rpm gitlab-ce-12.9.9-ce.0.el7.x86_64.rpm
# i=install 安装 v=verbose 提示 h=hash 进度条
2
# 配置gitlab
vi /etc/gitlab/gitlab.rb
external_url 'http://192.168.56.160:18000' #修改访问的地址,如git.yemey.cn 端口在nginx位置设置
nginx['listen_port'] = 18000 #修改nginx的监听端口,与上面一样
unicorn['worker_processes'] = 2 #设置cpu工作线程数量,官方建议该值是CPU核心数加一
unicorn['port'] = 9091
gitlab-ctl reconfigure #配置,修改之后使用如下命令重新加载配置且同时启动gitlab所有服务, 要运行较长时间
2
3
4
5
6
7
初始账户: root 密码:5iveL!fe
命令 | 含义 |
---|---|
gitlab-ctl start | 启动全部服务 |
gitlab-ctl restart | 重启全部服务 |
gitlab-ctl stop | 停止全部服务 |
gitlab-ctl restart nginx | 重启单个服务,如重启nginx |
gitlab-ctl status | 查看服务状态 |
gitlab-ctl reconfigure | 使配置文件生效 |
gitlab-ctl show-config | 验证配置文件 |
gitlab-ctl uninstall | 删除gitlab(保留数据) |
gitlab-ctl cleanse | 删除所有数据,从新开始 |
gitlab-ctl tail | 查看服务的日志 |
gitlab-ctl tail nginx | 如查看gitlab下nginx日志 |
gitlab-rails console | 进入控制台 |
参考: CentOS7下yum安装GitLab-CE - 三度 - 博客园 (cnblogs.com) (opens new window)
# gitlab卸载与重装
yum remove gitlab-ce
rpm -qa | grep gitlab #查出
rpm -e gitlab-ce-12.9.9-ce.0.el7.x86_64
ps aux|grep gitlab
rm -rf /opt/gitlab
rm -rf /var/log/gitlab
rm -rf /etc/gitlab
2
3
4
5
6
7
8
彻底卸载GitLab并重装_jia12216的专栏-CSDN博客_gitlab卸载 (opens new window)
# 常见问题
# 端口占用:
使用netstat -ntpl
查看端口,需要更换配置文件里得到端口,并且执行gitlab-ctl reconfigure gitlab-ctl restart 就可以解决
unicorn服务与tomcat端口冲突,配置下unicorn使用端口应该就可以了, unicorn会占用8080端口
unicorn['port'] = 9091
# 报502错误
free -m
查看内存, gitlab13需要4G内存以上,cpu一核也可以gitlab-ctl start 较耗时,控制台上显然有打印,但实际上还没有启动好,需等时间
自建gitlab服务器502错误解决方案_眼眸刻着你的微笑的技术博客_51CTO博客 (opens new window)
【Git学习】解决GitLab内存消耗大的问题_欧阳鹏-CSDN博客_gitlab内存占用过高 (opens new window)
# 添加用户、用户组
Gitlab用户在组里面有5种不同权限:
Guest:可以创建issue、发表评论,不能读写版本库 Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限 Developer:可以克隆代码、开发、提交、push,普通开发可以赋予这个权限 Maintainer:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心开发可以赋予这个权限 Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组组长可以赋予这个权限
# 三、git的日常使用和分支管理
1、忽略文件
在.gitignore里面添加即可,如果文件已add到暂存区中,它不会被忽略,需要先从暂存区删除
git rm --cache *.iml
2、rebase和merge的区别
rebase会把之前分支的提交记录一起在当前重新再提交一次,而merge就只是合并产生新的提交
3、stash 保存进度
4、常用命令
git branch 查看本地所有分支 git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支 git branch -r 查看远程所有分支 git commit -am "init" 提交并且加注释 git remote add origin git@192.168.1.119:ndshow git push origin master 将文件给推到服务器上 git remote show origin 显示远程库origin里的资源 git push origin master:develop git push origin master:hb-dev 将本地库与服务器上的库进行关联 git checkout --track origin/dev 切换到远程dev分支 git branch -D master develop 删除本地库develop git checkout -b dev 建立一个新的本地分支dev git merge origin/dev 将分支dev与当前分支进行合并 git checkout dev 切换到本地dev分支 git remote show 查看远程库 git add . git rm 文件名(包括路径) 从git中删除指定文件 git clone git://github.com/schacon/grit.git 从服务器上将代码给拉下来 git config --list 看所有用户 git ls-files 看已经被提交的 git rm [file name] 删除一个文件 git commit -a 提交当前repos的所有的改变 git add [file name] 添加一个文件到git index git commit -v 当你用-v参数的时候可以看commit的差异 git commit -m "This is the message describing the commit" 添加commit信息 git commit -a -a是代表add,把所有的change加到git index里然后再commit git commit -a -v 一般提交命令 git log 看你commit的日志 git diff 查看尚未暂存的更新 git rm a.a 移除文件(从暂存区和工作区中删除) git rm --cached a.a 移除文件(只从暂存区中删除) git commit -m "remove" 移除文件(从Git中删除) git rm -f a.a 强行移除修改后文件(从暂存区和工作区中删除) git diff --cached 或 $ git diff --staged 查看尚未提交的更新 git stash push 将文件给push到一个临时空间中 git stash pop 将文件从临时空间pop下来
参考: Git 常用命令大全_道的博客-CSDN博客_git常用命令 (opens new window)
# 添加生成ssh公钥
ssh-keygen -t ed25519 -C "qq578521128@163.com"
# 回车三次即可
cat ~/.ssh/id_ed25519.pub #查看公钥
2
3
4
# gitee平台规则
个人开发者可免费创建 1000 个仓库(不限公有、私有),提供最多 5G 的免费代码存储空间
# 提交第一行代码
在创建完仓库之后,用户可以通过如下方式,可以向仓库提交第一行代码。
此处我们以用户账号下命名为 HelloGitee
的仓库为例。对应的仓库地址为:https://gitee.com/用户个性地址/HelloGitee.git
,在实际实践中,你可以将用户个性地址替换为自己的地址。
# 方法1、先将仓库clone到本地,修改后再push到 Gitee 的仓库
$ git clone https://gitee.com/用户个性地址/HelloGitee.git #将远程仓库克隆到本地
在克隆过程中,如果仓库是一个私有仓库,将会要求用户输入 Gitee 的账号和密码。按照提示输入即可。
当然,用户也可以通过配置本地的git配置信息,执行git config
命令预先配置好相关的用户信息,配置执行如下:
$ git config --global user.name "你的名字或昵称"
$ git config --global user.email "578521128@qq.com"
$ git config --list
# 生成ssh key,C:\Users\Administrator\.ssh目录下
ssh-keygen -t rsa -C "578521128@qq.com"
2
3
4
5
6
7
在 Gitee 平台中,强烈建议您在【设置-多邮箱管理】中的“提交邮箱”与上面配置信息中的邮箱地址保持一致,这样平台就能及时地统计您在平台中提交代码的贡献了。
修改代码后,在仓库目录下执行下面命令
$ git add . #将当前目录所有文件添加到git暂存区
$ git commit -m "my first commit" #提交并备注提交信息
$ git push origin master #将本地提交推送到远程仓库
2
3
# 方法2、本地初始化一个仓库,设置远程仓库地址后再做push
和方法1的差别,在于先创建仓库。
$ git init
$ git remote add origin https://gitee.com/用户个性地址/HelloGitee.git
2
这样就完成了版本的一次初始化。 接下去,进入你已经初始化好的或者克隆仓库的目录,然后执行:
$ git pull origin master
修改/添加文件,否则与原文件相比就没有变动。
$ git add .
$ git commit -m "第一次提交"
$ git push origin master
2
3
然后如果需要账号密码的话就输入账号密码,这样就完成了一次提交。此时,你可以在你的个人面板、仓库主页查看到你的提交记录。
在新建仓库时,如果在 Gitee 平台仓库上已经存在 readme 或其他文件,在提交时可能会存在冲突,这时用户需要选择的是保留线上的文件或者舍弃线上的文件,如果您舍弃线上的文件,则在推送时选择强制推送,强制推送需要执行下面的命令(默认不推荐该行为):
$ git push origin master -f
如果您选择保留线上的 readme 文件,则需要先执行:
$ git pull origin master
# 参考文章:
Gitee使用方法 (opens new window) 提交第一行代码 - Gitee.com (opens new window) Git教程 - 廖雪峰 (opens new window)
# github访问慢的问题
原理: 查出github的dns地址,然后设置本地的hosts地址为它,最后刷新dns缓存
1、访问 http://tool.chinaz.com/dns/ ,在输入框中填写 github.com
github.global.ssl.fastly.net
,然后点击检测按钮,会列出响应ip
也可以通过 https://www.ipaddress.com/ 查询 IP
2、编辑C:\Windows\System32\drivers\etc\hosts文件,将列出的响应IP写入该文件中
52.192.72.89 github.com
52.69.186.44 github.com
2
3、在cmd命令行执行 ipconfig /flushdns
,刷新DNS缓存
ipconfig /flushdns
4、以上还是不行的话,重置dns网络
netsh winsock reset
# git工作流
先拉取最新的 develop 分支,然后以最新的 develop 为基准创建两个新的功能分支 feature/f1 和 feature/f2;
git pull origin develop
git checkout -b feature/f1 develop
2
合并分支
git merge --no-ff <分支名feature/f2>
删除分支
git branch -D <分支名feature/f2>
参考文章:
理解 Git 分支管理最佳实践 - 唐小堂 - 博客园 (cnblogs.com) (opens new window)