版本控制& Git

这篇博客介绍了如何使用Git初始化一个裸仓库,通过`git init --bare`命令,你可以快速创建一个不含工作目录的Git仓库,适用于远程仓库或者团队协作的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 .  SVN  
VisualSVN  Server   服务器
TortoiseSvn   小乌龟---客户端
  .svn 这个隐藏目录记录着两项关键的信息: 工作文件的基准版本和一个本地副本最后更新的时间戳。
如果把这个文件删除,那这个目录就和服务器没有关系了,就是一个普通文件夹。

第1课    建立仓库,创建人员
1. usr1 怎么往服务器添加一个文件?
 ① 在该目录下(有.svn的目录) 创建一个文件,它会有一个问题,说明是未知文件。
 ② 点击文件右击,TortoiseSVN-->add 把这个文件添加到版本控制中,标签变成了“+”
 ③  再右击 --> commit, 写一个Log ,登录授权后,文件标签变成了"勾"

2. use2  那怎么把数据从服务器取出来呢?
①  在一个空目录下右击 ---> SVN checkout ----> 填写 URL  ,用usr2授权 就取出来了

第2课
1. 怎么设置人员的读、写权限?
  在要设置的仓库上右击---> Properties ---> Security  设置下面的Permissions   设成只读
 现在这个用户只能取数据,一旦要commit 就会出现403错误。

2. 怎么从服务器取出更新的数据?
目录右键--> SVN update 就可以了。

3.  Groups  组
 可以快速分配权限,给组分配权限,组下的人都有权限了。

4.多人同时修改时冲突问题。
 文件在修改时,别人已经修改完提交了,你的文件已经和服务端的不一样了。
合并  Merger
版本每提交一次就增加1.

如果和多个版本有冲突,提交是会出错的。
TortoiseSVN-->Edit conflicts. 查看冲突。 黄色的可以忽略。
修改好之后,黄色叹号还是没有消息,右键 TortoiseSVN--->Resolved ,O了解决了,再SVN Commit提交。


5. 恢复以前的版本
① 先查看以前修改的版本: TortoiseSVN -->Show log    
② 进入Log后,再查看和前一个版本的修改之处:选中某个版本记录,右键--> Compare with Previous revison
③ 恢复到某个版本,选中要恢复到的版本记录 右键---> Revert to this revision.
既可看某一个文件的版本记录。也可看整个工程的记录。

第3课
1. SVN 与 Eclipse 整合
 eclipse_svn_site  插件。
问1:怎么确定插件是否装成功了?
答:启动Eclipse, preferences-->Team --> 如果看到有SVN 就成功了。
 
问2:怎么在Eclipse 中使用 SVN呢?
答:①打开 Open perspective,选中 SVN资源库。然后在打开的界面中,添加SVN资源库,把仓库地址写入。
②  在仓库文件上右键 -->检出为 ....  -->填写相应信息---->做为工作空间中的项目检出。最后在Eclipse 项目中就可以看到这个项目了。

问3:在Eclipse 中怎么提交?
答:修改了之后,文件前会出现一个标签,选中要提交的文件,右键--->Team会出现很多菜单。

问4:在Eclipse 中怎么解决冲突?
答:①提交不成功时,有冲突,先update 一下,就会合并。
② 同行冲突:
选通过 “编辑冲突” 查看冲突的地方,编辑好文件; 再 用“标记为解决” 消除冲突。

问5:Eclipse怎么删除文件?
答:直接在工程中把文件删除了,再提交更新。注意不要把.proxxx配置文件给删除了。

第四课   实例演示
Subversion目录规范
创建三个顶级目录
/trunk 存放开发的“主线”
/branches 存放支线副本
/tags 存放标签副本
1、 新建一个仓库,在仓库下新建上面3个目录
2.    在Eclipse 中导入svn项目,并检出为工程
    在Eclipse 的工程中开发 1.0。
3.    发布版本1.0
  工程,右键--->  Team  -->  分支/标记 --> 填入URL,授权 --> 发布到 tags/v1.0
  在SVN的工程仓库的 tags目录下就有了v1.0目录,里面就有了代码。
4. 修改代码,发布版本2.0
① 在Eclipse 的工程中开发2.0,并提交 [在/trunk目录下]
② 修改版本1.0中的Bug
  1)选择工程 ,右键---> 切换---> 选择 tags/v1.0的URL ,就切换到了 [tags/v1.0] 
但是/tags 下是发布版本的目录,不应该在这修改
  2) 再右键工程  --> 分支与标记 ---> 在URL时选择 /branches,并在后面建一个文件夹,例如[/branches/v1.0_fixup]
  3)  工程中 右键-->切换 --->选中[/branches/v1.0_fixup],里面的就是v1.0版本了,就可以在这里修改了。
  4)  v1.0修改好了,就提交到分支的 v1.0版本中。
  5) 把修改好的 发布到 [/tags/v1.1] 版本中
  工程 右键---> 分支/标记 --> 选择路径 [/tags/v1.1] ,就发布成功了
  6)  回到主线 [trunk]  --- 用切换
    把修改的代码合并进来:  工程右键 --> 合并 --> 选择合并的来源 ([/branches/v1.0_fixup中的哪个文件) ,其它默认 -----   合并完后,提交

第五课  用SVN 管理Android项目
1.  在SVN_server 中新建一个Repository  ---命名Demo
 选择 Single-project repository.
2.  把Android 工程上传到上面新建的Demo仓库中。
  在Eclipse 的SVN资源库 中加入仓库,把URL加入进去。
3. 把工程提交到 [/trunk] 目录
  Demo工程 右键----> Team ---> share project  --> 先把SVN ---> 选择要把 项目共享到SVN的位置 -->然后选择 /trunk 目录   --->确定之后 会弹出一个同步视图---> 需要把资源都提交一下,选择工程右键,提交--->把不需要提交的去掉.  
 文件前有个红色地'f', 就是已经提交了。

4. 怎么把这个提交了的Android工程,在本地拿到呢?
 在本地新建一个文件夹 ,右键---> svn checkout...  --->  填入 URL 地址--->确定 就可以拿下来了。

SVN 可以把URL 拷到浏览器,文件都可以在浏览器中看到。

第二篇   Git

第6课  
问1.  什么是分布式?
答:在SVN的基础上增加一个功能,服务器有一个仓库,本地开发者也有一个仓库,可以在本地操作,只要不push推送上去就不会影响服务器的数据。
SVN 必须与服务器连接,要不断推送。

问2: Clone 和 PULL 都可以从服务器取数据,它们之间有什么区别?
答:Clone 就想当于SVN中的checkout ----- 和服务器先建立连接,然后从服务器把数据都取下来。
  只有Clone 之后才能 PULL,PULL 就是本地数据和服务器数据同步更新一下。

问3:怎么把本地修改的数据 推到服务器?
答:① 先 Commit 一下,把修改的数据提交到本地仓库
② 再Push 一下,推送到服务器

Git  常用命令:
1. 创建git资源库

  git init --bare 库名称  

2. 在用户文件夹下把资源clone下来
  git clone <仓库目录> /g/software/repository/git/itheima <用户目录> .
  注意:clone时候用户目录必须为空

3. 创建一个文件,纳入到版本控制中。
  git add <文件名>
  第一次执行会出警告:warning: LF will be replaced by CRLF in readme.txt.
            The file will have its original line endings in your working directory.
  警告处理:需要配置用户信息
          git config user.name = "zhangsan"
          git config user.email = "itheima@gmail.com"
          
4. 提交到本地版本库里。
  git commit <文件名>
  
5. 推送到远程共享版本库中
  git push origin master
  
6. 切换用户,拉取最新的文件
  git pull
  

第8课  使用小乌龟 操作Git
1.  创建一个本地仓库
新建一个目录myGit,右键---> Git create respority here --->弹出一个框,点确定。
就在本地创建了一个仓库。
2.  把这个仓库中的内容 取出来
 在其它地方再建一个文件夹 user1,右键-->Git clone..---> 选择仓库路径和目标路径--->成功之后,user1路径下就多了一个 .git 目录。
3.  在 user1 下新建一个文件 read.txt, 选中右键 ---> TortoiseGit -->Add  就添加进去了--->再右键---> Git commit --> 成功之后,图标就变了,就提交到本地了 --->再右键 ,Git push,就推送到服务器了。   本地是master,服务器是 origin

冲突问题:出错  exit code 1
刷新一下,Git pull.   成了小三角形黄色!号----->选中文件 右键---> tortoiseGit   Edit conflicts
  把红色的都改掉,保存一下就可以了。 ----> 多了几个文件,分别是冲突的文件 ,还是点击那个文件,右键 ---->TortoiseGit --->Resolve... 标记为解决  ----> 再Commit  就成功了,再push 。


补丁: 没网的时候 不通过服务器 让两个人的数据同步
在user1中    TortoiseGit --->Create Patch serial...   生成补丁
在user2中    TortoiseGit --->Apply  Patch serial...    --->Add  选中补丁     就同步了。

第9课   Git 和 Eclipse 整合
1. 建立环境
 在Open Perspective 中 打开 Git Repository Exploring.   并建立本地仓库。
2. 导入Android工程 ,import projects
3. 创建文件,add  --> commit --> remote   --push.

遇到的问题:
① 当 hard revert 后,修改 再提交,(+1  -1),再提交 就失败了--- rejected no-fast-forward?
解决:这是因为本地的代码和 服务器的上不一样了,可以用 强制覆盖 就可以了 --- push 时勾选:Force overwrite of baranch on remote if it exists and has diverged.





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值