环境:centos7.3
git:分布式版本控制系统,是当前最流行的版本控制软件
创始人:林纳斯.拖瓦兹
[root@localhost ~]# yum -y install git
不一定是data目录,但是尽量设为data命名的目录,可视度比较高
[root@localhost ~]# mkdir /data
[root@localhost ~]# cd /data/
[root@localhost data]# git init
初始化空的 Git 版本库于 /data/.git/
[root@localhost data]# ls -a .git/
. .. branches config description HEAD hooks info objects refs
自动生成的git文件,是隐藏的文件,需要ls -a才可以列出
branches 分支目录
config 定义目录特有的配置选项
description 仅供git web使用
HEAD 指定当前的分支
hooks git钩子文件
info 包含一个全局排除文件(exclude)
objects 存放所有的数据内容
refs 指针文件
index 暂存区文件 当缓存区存在内存才会存在
[root@localhost data]# git config --global user.name "test"
[root@localhost data]# git config --global user.email "132644323@qq.com"
[root@localhost data]# vi readme.txt
<html>
<head>
<title> test </title>
</head>
<body>
<h1>hello world<\h1>
</body>
</html>
[root@localhost data]# git add readme.txt
或使用:git add . #当前目录所有文件上传
[root@localhost data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: readme.txt
#
[root@localhost data]# git rm --cached readme.txt
rm 'readme.txt'
[root@localhost data]# git status
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# readme.txt
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
[root@localhost data]# git add .
[root@localhost data]# vi readme.txt
[root@localhost data]# cat readme.txt
<html>
<head>
<title> test </title>
</head>
<body>
<h1>hello world<\h1>
<h1>error</h1>
</body>
</html>
[root@localhost data]# git checkout -- readme.txt
[root@localhost data]# cat readme.txt
<html>
<head>
<title> test </title>
</head>
<body>
<h1>hello world<\h1>
</body>
</html>
[root@localhost data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: readme.txt
#
[root@localhost data]# git commit -m "new readme.html"
[master 5210983] new readme.html
1 file changed, 1 insertion(+)
[root@localhost data]# git status
# 位于分支 master
无文件要提交,干净的工作区
-:代表缺少的行
+:代表增加的行
[root@localhost data]# git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 1dc5795..1c5dd62 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,6 +4,6 @@
</head>
<body>
<h1>hello world<\h1>
- <hr>
+ <p><\p>
</body>
</html>
[root@localhost data]# git log #详细信息
commit 5210983213165a4304502faa0aed6579de140b7d
Author: test <132644323@qq.com>
Date: Tue Feb 28 16:48:34 2023 +0800
new readme.html
commit 936abac869ae93ce04904545c0720cba2faa78c0
Author: root <root@localhost.localdomain>
Date: Tue Feb 28 16:42:49 2023 +0800
new readme.html
[root@localhost data]# git log --oneline #ID号的前七位 和文件名
5210983 new readme.html
936abac new readme.html
[root@localhost data]# git reset --hard HEAD^ #回滚到上一个版本,HEAD^^上上版本,HEAD~10回滚到上10个版本
HEAD 现在位于 936abac new readme.html
[root@localhost data]# vi readme.txt
[root@localhost data]# git reset --hard 936abac #指定回滚的ID
HEAD 现在位于 936abac new readme.html
[root@localhost data]# vi readme.txt
[root@localhost data]# git log --oneline
936abac new readme.html
[root@localhost data]# git reflog
936abac HEAD@{0}: reset: moving to HEAD^
5210983 HEAD@{1}: commit: new readme.html
936abac HEAD@{2}: commit (initial): new readme.html
git config -e 编辑配置文件
git config --local -e 编辑仓库级别配置文件
git config --global -e 编辑用户级别配置文件
git config --system -e 编辑系统级别配置文件
git config 添加配置项目
git config --global user.email “you@example.com”
git config --global user.name “Your Name”
git config 添加别名
git config --global -e
添加:
[alias]
st = status
co = checkout
br = branch
mg = merge
ci = commit
md = commit --amend
dt = difftool
mt = mergetool
last = log -1 HEAD
cf = config
line = log --oneline
master:为默认主分支,不可以删除
[root@localhost data]# git branch
* master
[root@localhost data]# git branch ops
[root@localhost data]# git branch
* master
ops
[root@localhost data]# git checkout ops
切换到分支 'ops'
[root@localhost data]# git branch
master
* ops
[root@localhost data]# git checkout -b dev
切换到一个新分支 'dev'
[root@localhost data]# git branch
* dev
master
ops
[root@localhost data]# git checkout dev
切换到分支 'dev'
[root@localhost data]# vi readme.txt
[root@localhost data]# git add .
[root@localhost data]# git commit -m "dev readme.html"
[dev c0af69f] dev readme.html
1 file changed, 1 insertion(+)
[root@localhost data]# git checkout master #切换到主分支
切换到分支 'master'
[root@localhost data]# git merge dev #合并dev分支
更新 936abac..c0af69f
Fast-forward
readme.txt | 1 +
1 file changed, 1 insertion(+)
[root@localhost data]# git log --oneline
c0af69f dev readme.html
936abac new readme.html
当复制被合并完之后,就没有任何作用了,除非还要继续使用
[root@localhost data]# git branch -d dev
已删除分支 dev(曾为 c0af69f)。
制造冲突:先在分支修改文件,提交;然后回到master,再修改文件相应内容,提交;最后,合并分支,出现冲突。
删除冲突文件内容:带>>>>>>>>> ================= 行,保留想要的内容,再commit
注:为了避免合并冲突,尽量不要在master分支修改代码
gitlab:gitlab是一个利用ruby on rails开发的开源应用程序,实现一个自托管的Git项目仓库,可通过web界面进行访问公开的或私人的项目
[root@localhost data]# yum install curl policycoreutils openssh-server openssh-clients postfix -y
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
[root@localhost mnt]# yum -y install gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
[root@localhost mnt]# vi /etc/gitlab/gitlab.rb
external_url 'http://192.168.2.1' #将字段设置为本机IP来供浏览器访问
[root@localhost mnt]# gitlab-ctl reconfigure
[root@localhost mnt]# gitlab-ctl status
run: gitaly: (pid 112529) 104s; run: log: (pid 112168) 126s
run: gitlab-monitor: (pid 112553) 103s; run: log: (pid 112319) 117s
run: gitlab-workhorse: (pid 112511) 104s; run: log: (pid 112003) 140s
run: logrotate: (pid 112081) 132s; run: log: (pid 112080) 132s
run: nginx: (pid 112026) 138s; run: log: (pid 112025) 138s
run: node-exporter: (pid 112229) 124s; run: log: (pid 112228) 124s
run: postgres-exporter: (pid 112581) 102s; run: log: (pid 112385) 114s
run: postgresql: (pid 111637) 165s; run: log: (pid 111636) 165s
run: prometheus: (pid 112564) 103s; run: log: (pid 112361) 115s
run: redis: (pid 111541) 171s; run: log: (pid 111540) 171s
run: redis-exporter: (pid 112341) 116s; run: log: (pid 112340) 116s
run: sidekiq: (pid 111975) 142s; run: log: (pid 111974) 142s
run: unicorn: (pid 111905) 148s; run: log: (pid 111904) 148s
[root@localhost mnt]# gitlab-ctl start #开启gitlab
[root@localhost mnt]# gitlab-ctl stop #关闭gitlab
[root@localhost mnt]# gitlab-ctl restart #重新加载gitlab
登录
成功进入界面
为什么取消注册功能,在大多数生产环境中,是不允许每个用户都有自己的账号的,如果需要,登录root用户来管理员自行创建
登录gitlab--admin area(顶部菜单栏小扳手图标)--左侧面板settings--Sign-up Restrictions--去除勾选sign-up enabled --下拉选save保存
登录gitlab--admin area--Appearance--填写管理员联系方式和logo--save
退出登录:点击右上角的个人头像--》sign out
登录gitlab--admin area--new group
登录gitlab--admin area--new user--添加用户名、邮箱--create--edit--修改密码
注意:用户名不能与组名相同
登录gitlab--admin area--new project--注意选择组
Guest:可以创建issue、发表评论,不能读写版本库
Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限
Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
Gitlab中的组和项目有三种访问权限:
Private:只有组成员才能看到
Internal:只要登录的用户就能看到
Public:所有人都能看到
这样当用户下载仓库项目时可以实现免密码登录
本地用户创建秘钥:ssh-keygen -t rsa
复制公钥内容:cat /root/.ssh/id_rsa.pub
黏贴到web界面:右上角--用户--settings--SSH Keys
[root@localhost data]# git clone git@192.168.2.1:dev/test.git
正克隆到 'test'...
The authenticity of host '192.168.2.1 (192.168.2.1)' can't be established.
ECDSA key fingerprint is SHA256:zrvQnhSEBUrxCxdIZ3HbTLxZfWnaKv7tbeFl/asoDw8.
ECDSA key fingerprint is MD5:b1:65:c6:c0:91:f3:a6:5e:6e:2b:27:65:8f:0a:8d:15.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.1' (ECDSA) to the list of known hosts.
warning: 您似乎克隆了一个空版本库。
[root@localhost data]# ls
readme.txt test
[root@localhost data]# cd test/
[root@localhost test]# ls
[root@localhost test]# cd ..
[root@localhost data]# cd test/
[root@localhost test]# echo "test file" > new.txt
[root@localhost test]# git add .
[root@localhost test]# git commit -m "add new.txt"
[master(根提交) 045fd6f] add new.txt
1 file changed, 1 insertion(+)
create mode 100644 new.txt
[root@localhost test]# git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 213 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.2.1:dev/test.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
前提
需要将用户添加到dev组中,要不同步时无法使用
登录管理员用户--》小扳手-》groups:1--》dev--》add users to group-——》设置用户和权限--》add users to group
本地用户创建秘钥:ssh-keygen -t rsa
复制公钥内容:cat /root/.ssh/id_rsa.pub
dev01登录:右上角--用户--settings--SSH Keys
[root@git-client ~]# mkdir /data
[root@git-client ~]# cd /data/
[root@git-client data]# git init
初始化空的 Git 版本库于 /data/.git/
[root@git-client data]# git remote add origin git@192.168.2.1:dev/web.git
[root@git-client data]# git pull origin master
[root@git-client data]# git config --global user.name "zhangsan"
[root@git-client data]# git config --global user.email "1234@qq.com"
[root@git-client data]# git checkout -b ops
切换到一个新分支 'ops'
[root@git-client data]# echo " test2 file" > new.txt
[root@git-client data]# git add .
[root@git-client data]# git commit -m "add new name-zhangsan"
[ops 8b42e8e] add new name-zhangsan
1 file changed, 1 insertion(+), 1 deletion(-)
[root@git-client data]# git push -u origin ops
Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 278 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for ops, visit:
remote: http://192.168.2.1/dev/test/merge_requests/new?merge_request%5Bsource_branch%5D=ops
remote:
To git@192.168.2.1:dev/test.git
* [new branch] ops -> ops
分支 ops 设置为跟踪来自 origin 的远程分支 ops。
登录dev用户的gitlab--》merge request--》create merge request
在左侧面板--》merge requests --》merge
git remote add [remote] [url] #添加(关联)远程库
git remote set-url [remote] [url] #修改远程仓库
git clone [url] #克隆远程仓库项目
git remote #查看指定远程仓库命名简写
git remote –v #查看远程仓库详细信息以及名称对应URL
git push -u remote master #第一次推送master分支的所有内容
git fetch remote [branch/tag] #下载远程仓库的所有变动
git pull remote [branch/tag] #拉取主分支最新版本(可以拉取其他分支)
git push remote [branch/tag] --force #强行推送当前分支至远程分支,及时冲突
git push remote [branch/tag] --all #推送所有分支到远程仓库
git remote rename [oldname] [newname] #修改远程仓库名称
git remote remove [name] #删除远程仓库名称以及URL地址
git remote add [remote] [url] #添加(关联)远程库
git remote set-url [remote] [url] #修改远程仓库
git clone [url] #克隆远程仓库项目
git remote #查看指定远程仓库命名简写
git remote –v #查看远程仓库详细信息以及名称对应URL
git push -u remote master #第一次推送master分支的所有内容
git fetch remote [branch/tag] #下载远程仓库的所有变动
git pull remote [branch/tag] #拉取主分支最新版本(可以拉取其他分支)
git push remote [branch/tag] --force #强行推送当前分支至远程分支,及时冲突
git push remote [branch/tag] --all #推送所有分支到远程仓库
git remote rename [oldname] [newname] #修改远程仓库名称
git remote remove [name] #删除远程仓库名称以及URL地址
1、git clone 与 git pull 相同点
相同点:都是从远程服务器拉取代码到本地
2、git clone 与 git pull 不同点
git clone
是在本地没有版本库的时候,从远程服务器克隆整个版本库到本地,是一个本地从无到有的过程。
git pull
在本地有版本库的情况下,从远程库获取最新commit 数据(如果有的话),并merge(合并)到本地。
git pull = git fetch + git merge
3、使用场景
通常情况下,远程操作的第一步,是使用git clone从远程主机克隆一个版本库到本地。
本地修改代码后,每次从本地仓库push到远程仓库之前都要先进行git pull操作,保证push到远程仓库时没有版本冲突。
git config --global user.name 'cjx' #声明用户
git config --global user.email 'cjx@qq.com' #声明邮箱
git init #git初始化
git add . #将当前所有文件上传到暂存区
git status #查看暂存区的文件
git rm --cached readme.txt #删除暂存区中的文件
git checkout -- readme.txt #把文件从暂存区中撤销
git commit -m "add readme.txt" #上传到本地版本库
git diff readme.txt #对比版本库中的文件与本地有哪些区别
git log #显示详细信息
git log --oneline #显示摘要信息
git reset --hard HEAD^ #版本回滚
git reset --hard 版本号 #回滚到执行的版本 注:版本回滚前的,会被自动删除
git reflog #查看动作命令日志
git branch #查看当前分支
git branch ops #创建ops分支
git checkout ops #切换到ops分支
git checkout -b dev #创建并切换到dev分支
git merge dev #合并dev分支
git branch -d dev #删除dev分支
git push -u origin master #推送代码
git remote add origin git@192.168.2.1:dev/web.git #关联远程仓库
git pull origin master #下载同步代码
git push -u origin master #推送合并代码
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主
文章目录git常用命令(简介,详细参数往下看)Git提交代码步骤gitpullgitstatusgitaddgitcommitgitpushgit代码冲突合并问题方法一:放弃本地代码方法二:合并代码常用命令以及详细参数gitadd将文件添加到仓库:gitdiff比较文件异同gitlog查看历史记录gitreset代码回滚版本库相关操作远程仓库相关操作分支相关操作创建分支查看分支:gitbranch合并分支:gitmerge删除分支:gitbranch-ddev查看分支合并图:gitlog–graph–pretty=oneline–abbrev-commit撤消某次提交git用户名密码相关配置g
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
关于如何使用git设置类似Dropbox的服务,您有什么建议吗?您认为git是解决此问题的合适工具吗?我在考虑使用git+rush解决方案,你觉得怎么样? 最佳答案 检查这个开源项目:https://github.com/hbons/SparkleShare来自项目的自述文件:Howdoesitwork?SparkleSharecreatesaspecialfolderonyourcomputer.Youcanaddremotelyhostedfolders(or"projects")tothisfolder.Theseprojec
我编写了一个非常简单的“部署”脚本,作为我的裸git存储库中的post-updateHook运行。变量如下livedomain=~/mydomain.comstagingdomain=~/stage.mydomain.comgitrepolocation=~/git.mydomain.com/thisrepo.git(bare)core=~/git.mydomain.com/thisrepo.gitcore==addedremoteintoeachlive&stagegitslive和stage都初始化了gitrepos(非裸),我已经将我的裸仓库作为远程添加到它们中的每一个(名为co
我正在安装gitlabhq,并且在Gemfile中有对某些资源的“git://...”的引用。但是,我在公司防火墙后面,所以我必须使用http://。我可以手动编辑Gemfile,但我想知道是否有另一种方法告诉bundler使用http://作为git存储库? 最佳答案 您可以通过运行gitconfig--globalurl."https://".insteadOfgit://或通过将以下内容添加到~/.gitconfig:[url"https://"]insteadOf=git://