Git是分布式的版本控制系统,实际上是不需要固定的服务器的,Git与svn的最大区别是,它的使用流程不需要联机,可以先将对代码的修改,评论,保存在本机。等上网之后,再实时推送过去。同时它创建分支与合并分支更容易,推送速度也更快。
Gitosis则是方便通过Git与ssh架设中央服务器的软件。
一、Linux下git安装配置
1、yum安装
yum install git git-svn git-email git-gui gitk
2、源码安装
安装依赖
yum -y install zlib-devel
yum -y install libcurl-devel
yum -y install expat-devel
yum -y install perl-ExtUtils-MakeMaker
yum -y install tcl
yum -y install gettext
从https://www.kernel.org/pub/software/scm/git/下载最新git-1.8.0.tar.gz ,执行下面命令
tar -xzf git-1.8.0.tar.gz
cd git-1.8.0
./configure -prefix=/usr/local/git --with-curl --with-expat
make && make install
修改/etc/profile,在PATH中加入git路径,并执行source /etc/profile
GIT_HOME=/usr/local/git
PATH=$PATH:$GIT_HOME/bin:$GIT_HOME/libexec/git-core
export PATH GIT_HOME
确认是否安装成功
git --version
git version 1.8.0
可能碰见的错误:
a、GIT错误
usr/local/git/share/locale'
Can't locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at Makefile.PL line 3.
BEGIN failed--compilation aborted at Makefile.PL line 3.
解决:yum install perl-ExtUtils-MakeMaker
b、tclsh failed; using unoptimized loading
MSGFMT po/de.msg make[1]: *** [po/de.msg] Error 127
解决:yum install tcl
c、/bin/sh: msgfmt: command not found
make: *** [po/build/locale/da/LC_MESSAGES/git.mo] Error 127
解决:yum install gettext-devel
d、git clone时候提示fatal: Unable to find remote helper for 'https'
解决:yum install libcurl-devel
3、复制命令补全脚本 并执行脚本
cp contrib/completion/git-completion.bash /etc/
sh /etc/git-completion.bash
试试输入”git li”, 再按下 TAB 就可以自动提示补全。
二、Windows下git使用
windows下有下个几个git客户端,我选择的是Cygwin。
Cygwin http://www.cygwin.com/ 安装参考 cygwin安装说明
msysGit http://msysgit.github.com/
TortoiseGit http://code.google.com/p/tortoisegit/
三、git使用说明
1、添加git配置信息
git config --global user.name "Steven"
git config --global user.email seyo816@email.com
Git的配置信息分为全局和项目两种,上面命令中带了“--global"参数,这就意味是在进行全局配置,它会影响本机上的每个一个Git项目。
查看全局配置信息,可以看到我们配置的用户名和邮箱。
$ cat ~/.gitconfig
[user]
name = Steven
email = seyo816@email.com
2、创建本地仓储
#创建版本库目录
mkdir -p gitdemo
cd gitdemo
echo “README” > readme.txt
#初始化版本库
git init
Initialized empty Git repository in /data/gitdemo/.git/
#把前目录下的所有文件全部添加到暂存区
git add .
#创建提交
git commit -m 'init'
[master (root-commit) 55f9dbb] init
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
#查看git文件信息
git show
commit 55f9dbb575f536702eb02a09fe65d8d060769380
Author: Steven <seyo816@email.com>
Date: Thu Nov 15 23:11:55 2012 +0800
init
diff --git a/readme.txt b/readme.txt
new file mode 100644
index 0000000..6372732
--- /dev/null
+++ b/readme.txt
@@ -0,0 +1 @@
+“README”
3、git基本操作
#clone一个项目
git clone ssh://git@lifeba_vps:bqueue.git
添加文件到版本库
git add test2.txt
git commit -m "add test2.txt"
git push
获取最新代码
git pull
git fetch git路径
更新文件提交
git commit -a 或 git commit -a -e 提交全部修改文件,并调用vim编辑提交日志。
git push
查看状态
git status #查看版本库的状态。可以得知哪些文件发生了变化,哪些文件还没有添加到git库中等等。 建议每次commit前都要通过该命令确认库状态。
查看未版本控制
git clean -dxf 用于清除未跟踪文件。
git clean -dnf 可以显示需要删除的文件,但不包括被.gitignore忽略的。
冲突解决
git rebase
git add -u 表示把所有已track的文件的新的修改加入缓存,但不加入新的文件。
git rebase --continue #有冲突继续解决,重复这这些步骤,直到rebase完成。
如果中间遇到某个补丁不需要应用,可以用下面命令忽略:
git rebase --skip
如果想回到rebase执行之前的状态,可以执行:
git rebase --abort
注:rebase之后,不需要执行commit,也不存在新的修改需要提交,都是git自动完成。
四、gitosis安装和配置
1、gitosis安装
cd /disk/src
git clone https://github.com/res0nat0r/gitosis.git
cd gitosis/
python setup.py install
2、gitosis配置
a、
因为要涉及到ssh操作,使用必须建个单独的用户,不能使用超级用户。
#创建目录
mkdir /data/git
#添加git用户,并且制定到/data/git目录下
useradd \
-r \
-s /bin/sh \
-c 'git version control' \
-d /data/git \
git
#对git目录设置用户和组为git
chown git:git /data/git
#设置成功后,执行ll看到用户和组都是git
ll
drwxr-xr-x 2 git git 4096 Nov 16 00:41 git
b、
在本机的客户端上面生成ssh的key,然后上传到gitosis的服务器上面。
#生成pub文件,将pub文件放置到:/tmp/id_rsa.pub
ssh-keygen -t rsa
gitosis的服务器切换到git用户:
su - git
然后执行
-sh-4.1$ gitosis-init < /tmp/id_rsa.pub
Initialized empty Git repository in /data/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /data/git/repositories/gitosis-admin.git/
注意在root中执行:sudo -H -u git gitosis-init < /tmp/id_rsa.pub ,会出现下面异常,所以切换到git用户。
File "/usr/local/bin/gitosis-init", line 8, in <module> 异常。
执行成功后查看key是不是已经设置成功,执行下面命令后可以看到我们提交的id_rsa.pub内容
cat ~/.ssh/authorized_keys
对post-update目录设置权限
chmod 755 /data/git/repositories/gitosis-admin.git/hooks/post-update
五、本机操作gitosis-admin项目
通过上面的操作后,本机的客户端已经可以通过ssh访问到服务器的gitosis-admin项目(本身也是通过git来管理的),这样可以通过本机的git操作来同步到服务器的gitosis中。
1、Creating new repositories,本地拉下gitosis-admin项目。
git clone git@lifeba_vps:gitosis-admin.git
Cloning into 'gitosis-admin'...
注意,可能出现下面的错误:
Traceback (most recent call last):
File "/usr/local/bin/gitosis-serve", line 8, in <module>
load_entry_point('gitosis==0.2', 'console_scripts', 'gitosis-serve')()
File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 24, in run
return app.main()
File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/app.py", line 38, in main
self.handle_args(parser, cfg, options, args)
File "/usr/local/lib/python2.7/site-packages/gitosis-0.2-py2.7.egg/gitosis/serve.py", line 213, in handle_args
os.execvp('git', ['git', 'shell', '-c', newcmd])
File "/usr/local/lib/python2.7/os.py", line 344, in execvp
_execvpe(file, args)
File "/usr/local/lib/python2.7/os.py", line 380, in _execvpe
func(fullname, *argrest)
OSError: [Errno 2] No such file or directory
fatal: The remote end hung up unexpectedly
解决方法:在gitosis服务器上面建个软连接
ln -s /usr/local/git/bin/git /usr/local/bin/git
2、gitosis-admin项目说明
a、文件说明
cd gitosis-admin
Administrator@Steven-PC /cygdrive/e/research/gitosis-admin
$ ls -l
总用量 1
-rw-r--r-- 1 Administrator None 93 十一 16 01:49 gitosis.conf
drwxr-xr-x+ 1 Administrator None 0 十一 16 01:49 keydir
gitosis.conf是gitosis的配置文件,用于配置用户和权限
keydir/是所有组成员的公钥
我们可以在本地修改配置更改权限,然后push到服务端后,服务器端就立刻生效
b、添加一个其他客户端ssh支持,这样其他的客户端可以访问到gitosis的对应项目。
先查看现有的配置,下面只有一个gitosis-admin组,members中的Administrator@Steven-PC就是本机客户端名,writable,表示对gitosis-admin项目有读写操作权限。这些都是上面我们通过ssh来配置生成的。
$ cat gitosis.conf
[gitosis]
[group gitosis-admin]
members = Administrator@Steven-PC
writable = gitosis-admin
c、现在我们往gitosis上面提交一个bqueue项目。
先定义账号权限,我们在后面自定义一个组bqueue,同样指定Administrator@Steven-PC可以读写bqueue项目。
[group bqueue]
members = Administrator@Steven-PC
writable = bqueue
然后push到服务器,将本地的配置push到gitosis服务器上面。
git commit -a -m "Allow Steven write access to bqueue"
[master 9b1959b] Allow Steven write access to bqueue
1 files changed, 4 insertions(+), 0 deletions(-)
$ git push
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 378 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@173.230.147.166:gitosis-admin.git
507d7cf..9b1959b master -> master
上面的操作就更新了服务端的权限。
d、push本地的bqueue项目到gitosis服务器上面。
完成了上面的权限设置后,就可以通过下面命令,将本地的bqueue项目提交给gitosis服务器。
git remote add origin ssh://git@lifeba_vps/bqueue.git
git push origin master
Initialized empty Git repository in /data/git/repositories/bqueue.git/
Counting objects: 192, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (181/181), done.
Writing objects: 100% (192/192), 921.81 KiB, done.
Total 192 (delta 54), reused 0 (delta 0)
To ssh://git@lifeba_vps/bqueue.git
* [new branch] master -> master
六、访问bqueue项目
上面我们已经提交了一个bqueue项目到gitosis服务器,如何让其他用户访问并操作该项目呢?
首先必须先配置ssh权限,在需要访问该bqueue项目的客户端上面,同样要生成一个ssh的key。
在目标客户端机上面执行下面命令,将生成id_rsa.pub提交给拥有gitosis-admin控制权限的用户,这里就是:Administrator@Steven-PC用户。
#生成ssh的key
ssh-keygen -t rsa
在Administrator@Steven-PC的机子上面做如下操作,先切换到gitosis-admin项目下:
cd keydir/ #将 我们将id_rsa.pub重名为 lifeba@vps.pub ,并放到这里。
git add keydir/lifeba@vps.pub #添加到git缓存中。
修改gitosis.conf 加入lifeba@vps
[group bqueue]
members = Administrator@Steven-PC lifeba@vps
writable = bqueue
提交并推送到gitosis服务器
git commit -a -m "Allow lifeba@vps write access to bqueue"
git push
完成上面的操作后,目标客户端就可以通过git clone来访问bqueue项目了。执行下面命令来clone项目。
git clone git@lifeba_vps:bqueue.git
可能出现的错误:
1、Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
fatal: Could not read from remote repository.
ssh的权限没配置好。
2、ERROR:gitosis.serve.main:Repository read access denied
fatal: Could not read from remote repository.
gitosis.conf中的members与keydir中的用户名不一致,如gitosis中的members = lifeba@vps,但keydir中的公密名却叫id_rsa.pub
七、git常用命令
git pull --rebase
git rebase --continue
git pull --rebase其实就等于git fetch + git rebase
git diff 查看修改和缓存中的修改信息
git diff cache 查看缓存中的和commit中的修改信息
git branch -a 查看所有分支。
git branch new_branch 创建新的分支。
git branch -d branch 删除分支。
git checkout branch 切换当前分支。-f参数可以覆盖未提交内容。
git branch -v
git remote -v
.gitignore 在规则建立之前的就已经在代码库中的文件不会受到忽略规则的影响,要移除这些文件,只能输入git rm filename来移除。
git rm -f *.o 取消跟踪并在工作目录中删除
git rm --cached readme.txt 取消跟踪不在工作目录中删除
git mv file_from file_to 相当于 mv README.txt README $ git rm README.txt $ git add README
git log -p -2 -p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新:
git log --stat 简要显示
git log --pretty=format:"%h - %an, %ar : %s"
git log --pretty=format:"%h %s" --graph
git log --since=2.weeks
git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \
--before="2008-11-01" --no-merges -- t/
git reset HEAD benchmarks.rb 取消已经暂存的文件
git checkout -- benchmarks.rb 取消对文件的修改
git remote -v 查看现有的远程仓库
git remote add pb git://github.com/paulboone/ticgit.git 添加一个远程仓库 并用pb命名。
git remote rm paul 删除远程仓库
git remote rename pb paul 重名远程仓库 本地也会跟着修改
git remote 查看远程参考
git remote show
git branch 显示所有开发分支
git branch experimental 创建新的开发分支
git checkout experimental 切换到”experimental”分支
git merge experimental 合并分支,如果这个两个分支间的修改没有冲突(conflict), 那么合并就完成了。如有有冲突,输入下面的命令就可以查看当前有哪些文件产生了冲突:$ git diff,git commit -a
git branch -d experimental 删除分支(合并过才删除)
git branch -D crazy-idea 强制删除分支
相关推荐
内容概要:本文全面介绍了Scratch编程语言,包括其历史、发展、特点、主要组件以及如何进行基本和进阶编程操作。通过具体示例,展示了如何利用代码块制作动画、游戏和音乐艺术作品,并介绍了物理模拟、网络编程和扩展库等功能。 适合人群:编程初学者、教育工作者、青少年学生及对编程感兴趣的各年龄段用户。 使用场景及目标:①帮助初学者理解编程的基本概念和逻辑;②提高学生的创造力、逻辑思维能力和问题解决能力;③引导用户通过实践掌握Scratch的基本和高级功能,制作个性化作品。 其他说明:除了基础教学,文章还提供了丰富的学习资源和社区支持,帮助用户进一步提升技能。
mmexport1734874094130.jpg
基于simulink的悬架仿真模型,有主动悬架被动悬架天棚控制半主动悬架 [1]基于pid控制的四自由度主被动悬架仿真模型 [2]基于模糊控制的二自由度仿真模型,对比pid控制对比被动控制,的比较说明 [3]基于天棚控制的二自由度悬架仿真 以上模型,说明文档齐全,仿真效果明显
内容概要:本文档是《组合数学答案-网络流传版.pdf》的内容,主要包含了排列组合的基础知识以及一些经典的组合数学题目。这些题目涵盖了从排列数计算、二项式定理的应用到容斥原理的实际应用等方面。通过对这些题目的解析,帮助读者加深对组合数学概念和技巧的理解。 适用人群:适合初学者和有一定基础的学习者。 使用场景及目标:可以在学习组合数学课程时作为练习题参考,也可以在复习考试或准备竞赛时使用,目的是提高解决组合数学问题的能力。 其他说明:文档中的题目覆盖了组合数学的基本知识点,适合逐步深入学习。每个题目都有详细的解答步骤,有助于读者掌握解题思路和方法。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
操作系统实验 Ucore lab5
基于matlab开发的学生成绩管理系统GUI界面,可以实现学生成绩载入,显示,处理及查询。
老版本4.0固件,(.dav固件包),支持7700N-K4,7900N-K4等K51平台,升级后出现异常或变砖可使用此版本。请核对自己的机器信息,确认适用后在下载。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
YOLO算法-杂草检测项目数据集-3970张图像带标签-杂草.zip
E008 库洛米(3页).zip
内容概要:本文详细阐述了基于西门子PLC的晶圆研磨机自动控制系统的设计与实现。该系统结合了传感器技术、电机驱动技术和人机界面技术,实现了晶圆研磨过程的高精度和高效率控制。文中详细介绍了控制系统的硬件选型与设计、软件编程与功能实现,通过实验测试和实际应用案例验证了系统的稳定性和可靠性。 适合人群:具备一定的自动化控制和机械设计基础的工程师、研究人员以及从事半导体制造的技术人员。 使用场景及目标:本研究为半导体制造企业提供了一种有效的自动化解决方案,旨在提高晶圆研磨的质量和生产效率,降低劳动强度和生产成本。系统适用于不同规格晶圆的研磨作业,可以实现高精度、高效率、自动化的晶圆研磨过程。 阅读建议:阅读本文时,重点关注晶圆研磨工艺流程和技术要求,控制系统的硬件和软件设计方法,以及实验测试和结果分析。这将有助于读者理解和掌握该自动控制系统的实现原理和应用价值。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
深圳建筑安装公司“挖掘机安全操作规程”
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
大题解题方法等4个文件.zip
保障性安居工程考评内容和评价标准.docx
监督机构检查记录表.docx
该项目适合初学者进行学习,有效的掌握java、swing、mysql等技术的基础知识。资源包含源码、视频和文档 资源下载|如果你正在做毕业设计,需要源码和论文,各类课题都可以,私聊我。 商务合作|如果你是在校大学生,正好你又懂语言编程,或者你可以找来需要做毕设的伙伴,私聊我。。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
218) Leverage - 创意机构与作品集 WordPress 主题 2.2.7.zip