码云git与svn使用

一、前言
1.软件项目研发中的问题:
1. 公司有个复杂点的软件项目,该项目的两个模块A和B分别由你和小张负责;当小张要用你的代
码调试,或你用小张的代码调试的时候,如何实现代码共享?
2. 加班一个多月编写的源代码不小心删掉,或硬盘损坏了导致文件丢失怎么办?
3. 自己在对代码进行很多修改后,发现还是以前的代码好些,想回到以前的历史版本怎么办?
4. 软件发布了1.0版本给客户之后,项目继续往后演进到2.0。客户发现1.0版本有重大bug,如何
解决并维护1.0版本的源码?
5.
... ...
2.版本和版本控制
版本控制(Revision control)是一种软件工程技巧,籍以在开发的过程中,确保由不同人所编辑的
同一档案都得到更新。它会记录程序各个模组的改动,并为每次改动编上序号,这样可以查看所有的
修改历史记录。软件系统的版本号由3部分构成,即主版本号+次版本号+修改号,如Linux内核源码
linux-4.2.6(主版本号为4,次版本号为2,修订版本号为6):
1. 项目在进行了局部修改或 bug 修正时,主版本号和子版本号都不变,修正版本号加 1;
2. 当项目在原有的基础上增加了部分功能时,主版本号不变,子版本号加 1,修正版本号复位
为 0;
3. 当项目在进行了重大修改或局部修正累积较多,而导致项目整体发生全局变化时,主版本号
加 1;
3.版本控制系统
常见版本控制系统有Git、SVN、CVS、Git、Mercurial,目前主流使用的最多的就是git和svn,下
面是这两种版本控制系统的比较:
GIT是分布式的,SVN是集中式管理;
GIT把内容按元数据方式增量存储,而SVN是按文件; <.svn .git >
GIT分支和SVN的分支不同;
GIT的内容完整性要优于SVN:
git内容存储使用的是SHA-1哈希算法;
SVN有一个全局的整数编号,而git则是一个SHA-1值作编号:
SVN控制粒度可以到某个目录(当然很少这样做);而git一般是整个项目;
二、码云上创建项目
1.码云上创建项目
首先在浏览器上使用自己的帐号登录码云官方站点,然后如下图两种方法创建
项目



2.开启SVN的访问

从这里也可以看到,可以删除这个项目。
三、码云公钥管理
开发者向码云版本库写入最常用到的协议是 SSH 协议,因为 SSH 协议使用公钥认证,可以实
现无口令访问,而若使用 HTTPS 协议每次身份认证时都需要提供口令。
1.Linux上对git进行全局配置
该配置只需做一次且对该Linux主机上所有git管理项目生效:
git config --global user.name "anzhihong"
git config --global user.email " [email protected] "
2.Linux上生成SSH key:
ssh-keygen -t rsa -C "[email protected]"

3.上传Public Key:
查看public key并拷贝,将他添加到码云个人帐号的SSH公钥里:(rsa加密算法(公钥加密))
cat ~/.ssh/id_rsa.pub
ssh-rsa ******** == [email protected]

4.公钥添加测试:
出现如下错误:

解决方法:输入命令:
ssh-add

再执行命令:

在.ssh下存放着公钥和私钥,如果我想在别的虚拟机访问git的话,就可以把这里的公、私钥拷贝我所在的虚拟机就可以访问了,他们就相当于一张身份证。
id_rsa      id_rsa.pub
5.git下载测试:
git clone [email protected] :zhizhi1212213/fl2440.git
用git下载,就复制SSH的地址,用SVN呢,就用SVN的地址
如图:

下载成功证明公钥可用。
svn命令:

下载成功,svn也启用成功。
四、Linux上git基本操作
2.创建FL2440项目源码结构:
mkdir -p {crosstool,bootloader,linux/{kernel,rootfs},driver,3rdparty,program,images}
对于svn,它可以提交空的目录。在码云上不允许提交空的目录,git管理的是文件,要提交的话,文件夹下必须要有内容。
例如:
git commit -m"add 3rdrparty software"

会报错说这个目录是空的。   
如果我在crosstool文件下创建一个文件,如
vim build.sh

#!/bin/bash
# This shell script used to download crosstool-ng install binary and compile it for arm920t
CROSSTOOL=crosstool-ng-centos-LingYun-v1.0.0.bin
if [ ! -f ${CROSSTOOL} ] ; then
sed -i -e "s|^sup_arch=.*|sup_arch=(\"\", \"arm920t\")|g" crosstool-ng-centos-LingYun-v1.0.0.bin
fi
chmod a+x ${CROSSTOOL}
./${CROSSTOOL}
要怎么添加呢:
  • 首先,git add crosstool/build.sh  //添加这个文件
  • git commit -m"add crosstool/build.sh"  //上传
 
如果我对代码进行了修改,可以通过:
git diff
来查看对代码修改的记录。

如果要提交,就 git add crosstool/build.sh 
然后  git commit -m"update build.sh shell script"

更醒后就会打印如图所示信息,添加几次,删除几次。
但这些文件并没有上传到服务器上,只是放在了本地。这些文件存放在了.git文件夹下(不需要连接服务器,只有上传的时候才需要连接服务器)。

使用下面的命令便可以将文件传到服务器上。
git push    //上传
git pull // 别人可以把我修改的代码在服务器上全都下载下来
git commit -m"rem  //删除服务器上的文件
然后就可以看到服务器上有了crosstool这个问价夹。

进入里面后可以看到多出了一个crosstool的问件夹。在crosstool文件夹下,点击build.sh,可以通过历史来查看它的修改记录。

svn上传需要2步
svn add  文件名//添加文件
svn ci -m"add 文件名”  //直接提交到文件上(必须要与服务器连着,不然传不上去)
svn up  //下载服务器的文件
svn ci -m"remove 文件名"  //删除服务器的文件
在每一个svn文件架下都有一.svn文件,在.svn文件夹下有一个entries的文件,里面记录了项目的源码地址。如图:

svn up -r 选择版本  //下载修改的版本

笔记:
工作区和暂存区:
git和其他版本控制系统不一样的就是有 暂存区的概念。
工作区:
就是在电脑中能看到的目录,文件夹等。
版本库
工作区有一个隐藏目录 .git,这个不算工作区,而是Git的版本库。
Git的版本库里存了很多东西,其中最重要的就是称为 stage(或者叫index)的暂存区,还有Git为我们自动创建的的第一个分支 master,以及指向 master
一个指针叫 HEAD
















猜你喜欢

转载自blog.csdn.net/buhuiguowang/article/details/79836771