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