git和svn学习记录

本文详细介绍了SVN和Git两种版本管理工具的常用命令,包括下载、添加、提交、更新等操作,并提供了遇到问题时的解决办法。此外,还讲解了如何配置Git日志格式和使用gitstash处理开发过程中的临时保存和分支切换。同时,提到了在本地和远程仓库的关联、冲突解决以及.gitignore文件的配置,帮助读者更好地理解和应用这两种版本控制系统。

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

因为组里面两个版本管理工具都有用到,所以写篇文章记录一下学习命令。

svn常用命令

#svn co --username ""  --password "" svn://192.9.9.100:/KXXXWork //下载指定路径的svn
#svn add <新增文件名>	//将文件加入到版本控制
#svn ci -m "hsm"	//提交
#svn st
#svn log
#svn info
#svn diff
#svn up  //更新版本
#svn switch --relocate 旧仓库 新仓库
#svn revert 
#svn revert -R

对应目录执行svn  update 之后, 如果更新源码出现校验和不匹配问题(即更新不下最新的代码)解决方法:

1.进入出现问题的文件所在的目录
2.执行命令svn update --set-depth empty
3.执行命令svn update --set-depth infinity

svn安装配置

//启动svn服务
#svnserve -d -r /home/zx/test_svn
-d:表示在后台运行
-r:指定服务器的根目录

在这里插入图片描述在这里插入图片描述

git常用命令

#git init //将文件设为git本地仓库 会生成一个.git文件
#git add . //该分支下所有文件加入暂存区
#git commit -m "message" //提交到本地仓库
#git push //提交到远程仓库
#git pull //从仓库拉下来
#git checkout dev01 //切换分支
#git log //查看日志
#git status //查看当前分支工作区状态
#git stash
#git pop
#git branch //查看git分支  
#git branch dev01 //若dev01不存在,新建该分支
#git merge //切换到主分支,然后merge子分支到主分支
#vim .gitignore //进入git仓库,建立不需要更新的文件
#git diff //查看 workspace 与 index 的差别

在这里插入图片描述

git log格式设置

#git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative

搞个别名

#git config --global alias.-log "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"

git stash
1 当正在dev分支上开发某个项目,这时项目中出现一个bug,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash命令将修改的内容保存至堆栈区,然后顺利切换到hotfix分支进行bug修复,修复完成后,再次切回到dev分支,从堆栈中恢复刚刚保存的内容。
2 由于疏忽,本应该在dev分支开发的内容,却在master上进行了开发,需要重新切回到dev分支上进行开发,可以用git stash将内容保存至堆栈中,切回到dev分支后,再次恢复内容即可。
总的来说,git stash命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。

问题记录

1、
在这里插入图片描述
原因:没有将本地的分支与远程仓库的分支进行关联。 出现这种情况主要是由于远程仓库太多,且分支较多。在默认情况下,git push时一般会上传到origin下的master分支上,然而当repository和branch过多,而又没有设置关联时,git就会产生疑问,因为它无法判断你的push目标
2、在局域网中搭建git仓库
(1)先在虚拟机linux中初始化仓库

//在`/home/user`中新建`gitsrc.git`目录
#cd ~
#mkdir gitsrc.git
//初始化仓库
#git init --bare xxx.git

(2)在本地window中

//设置全局名字  
#git config --global user.name "hsm" 
//设置邮箱
#git config --global user.email "myEmail@example.com"
//初始化本地仓库
#git init 
// 克隆格式 git clone 用户名字@服务器ip:端口号 仓库地址
#git clone user@192.168.1.17:~/gitsrc.git

(3)在本地创建文件测试

#touch test.txt
#git add .
#git commit -m " add by hsm test.txt"
#git push origin master
//查看日志
#git log

(4)在linux中查看日志,可以看到有提交记录但是看不到提交的test.txt文件
是因为仓库时没有创建工作区(git不是集中式文件系统)
git init --bare xxx.git命令是用于创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库只保存git历史提交的版本信息,纯粹是为了共享,所以不让用户直接登录到服务器上去改工作。
可以clone一个新的文件看到交的test.txt

# git clone newgit gitsrc //newgit 未仓库的文件夹

(5)提交时有冲突
在这里插入图片描述

<<<<<<< HEAD

本地代码

=======

拉下来的代码

>>>>>>>

需要在这个两个版本中选择一个,然后把标记符号也要一起删除

3、配置.gitignore文件
在一些项目中,我们不想让本地仓库的所有文件都上传到远程仓库中,而是有选择的上传,比如:一些依赖文件(node_modules下的依赖)、bin 目录下的文件、测试文件等.为了解决上述问题,git 引入了 .gitignore 文件,使用该文件来选择性的上传文件。

//打开。gitignore文件
# vim .gitignore
//忽略user\o\so结尾的文件
# *.user
# *.o
# *.so
//忽略文件和目录
# folderName : 表示忽略 folderName 文件和 folderName 目录,
//仅仅忽略文件
# foldername 
# !foldername/


常用的通配符有:

(1)星号“*” :匹配多个字符;

(2)问号“?”:匹配除 ‘/’外的任意一个字符;

(3)方括号“[xxxx]”:匹配多个列表中的字符

4、踩坑记录
(1)git push失败
在这里插入图片描述
该报错在git push时出现,一句话解释就是在本地仓库上的修改没有基于远程库最新版本,本地仓库版本落后于远程仓库
在这里插入图片描述

解决方法:
在这里插入图片描述
(2)去掉(master|MERGING)
是因为使用git的时候,git pull合并代码的时候,发生冲突。最后返回一个MERGING状态

#git reset --hard head
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HSMgogogo!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值