git和svn基础

git常见命令

初始化仓库:git init 指定目录下初始化仓库:git init newrepo【newrepo下初始化】
添加文件:git add filename,例如:git add *.c【添加所有以.c结尾的文件】

  • git add . :提交所有修改的和新建的数据暂存区
  • git add -u :提交所有被删除和修改的文件到数据暂存区
  • git add -A:提交所有被删除、被替换、被修改和新增的文件到数据暂存区
    提交文件到仓库:git commit -m “注释信息”【如果您不使用-m,会出现编辑器来让你写自己的注释信息。当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改,我们可以使用-a标识。】
    git commit -a -m “Changed some files”【git commit 命令的-a选项可将所有被修改或者已删除的且已经被git管理的文档提交到仓库中。千万注意,-a不会造成新文件被提交,只能修改。一般不建议用】
  • 查看分支:git branch
  • 创建分支:git branch
  • 切换分支:git checkout
  • 创建+切换分支:git checkout -b
  • 合并某分支到当前分支:git merge
  • 删除本地分支:git branch -d <分支name>
  • 删除远程分支:git push origin --delete <分支name>
  • 查看记录:git status
  • 合并分支:git merge <分支name>
  • 查询分支:git remote -v
  • 推送分支到远程服务器:git push origin <本地分支name>:<远程服务器分支name>
  • 解决冲突:先修改冲突文件,再 git add,接着 git commit,最后 git push origin
  • 分支同步主干master代码:git checkout master
  • 拉取master最新代码:git pull 【或者git pull xxx ;注释:xxx为git代码所在路径】
  • 拉取某个分支最新代码:git pull origin <分支name>
  • git checkout <分支name>
  • git merge master 合并主干代码到当前所在分支
  • 拉取分支代码:git clone -b <分支name> <git仓库路径>
  • 问题:已经过时,请先merge主干到分支生成新的btag 或 发现未合并内容?
    拉取远程分支并创建本地分支
    git checkout -b feature/zhengyuhui5 origin/master
    git push origin feature/zhengyuhui5:feature/zhengyuhui5_1.0.0
  • Linux中,这时把全局要忽略的文件列表.gitignore放当前用户根目录下:
    git config --global core.excludesfile ‘~/.gitignogtire’
    查询全局的配置 git config --list,发现gitignore已经为全局文件
  • git log # 查看修改的历史记录:从最近到最远的提交依次显示。仅显示commit的版本号
  • git log --pretty=oneline # 字面意思:将记录以一行的方式显示,只会显示版本号和提交时的备注信息
  • git reset --hard HEAD^ # 回退到上一个版本;HEAAD^^为回退到上上一个版本;HEAD~100为回退到上100个版本
  • git reset --hard 4fa142c # 4fa142c为某次修改事件A的版本号(commit ID)。对应git log命令下显示的前七位数。那么此时会回退到事件A时刻的修改记录
  • git reflog # 查看每次修改对应的版本号(commit ID),包含删除、分支切换、分支pull的版本号

git操作流程

1、git clone 分支代码到本地
2、更新代码前,git pull origin master 分支上的代码,更新最新代码
3、git add .添加所有新增加的文件夹
4、git commit -m “描述”
5、git push 推送到远程仓库

操作总结

1、若gitignore只能忽略未曾被暂存的文件,如果曾经提交过产生版本库,那先把本地缓存删除(改变成未track状态)如下:

  • git rm -r --cached .
  • git add .
  • git commit -m ‘update .gitignore’

2、若修改了某个文件不想提交,则:

  • 先git add . 或者git add -u等提交所有文件
  • 再git reset filename(filename路径可以使用git status查到)
  • 再进行commit

3、删除了某个文件,恢复文件

  • 先使用git status查看删除的文件路径/文件名
  • git reset HEAD 文件路径/文件名
  • git checkout 文件路径/文件名

4、远程修改了某个文件,本地也修改了这个文件,此时使用git pull会有冲突,可以解决冲突:

  • git stash:将工作区恢复到上次提交的内容,同时备份本地所做的修改
  • git pull
  • git stash pop:将之前本地做的修改应用到当前工作区
    或者放弃本地代码的方法
  • git reset --hard
  • git pull

服务器上git的安装

安装git:
yum install -y git
git --version 查看git版本
yum安装git被安装在/usr/libexec/git-core目录下

ssh配置:
ls -al ~/.ssh
服务器配置ssh:
原理:SSH?Key的基本原理是这样的:在你的本机上创建两个Key文件,一个是私钥,一个是公钥,私钥放在本地,公钥放在远程服务器。当你通过SSH?Key登录到远程服务器时,远程服务器使用公钥创建了一个加密的随机消息,然后发送到本地机器,本地机器使用私钥解密消息,发送解密的消息到远程服务器。远程服务器验证这个解密后的消息,然后授权访问
步骤:
1、cd ~/.ssh
2、ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
3、然后回车三连击…可以看到当前目录下多出两个文件id_rsa.pub 和 id_rsa 带后缀是公钥,不带是私钥
注:要是已经有公钥了,那就rm -f删掉,再生成
4、然后将公钥配置在gitlab中

更新代码:
5、git clone -b test 仓库地址
6、拉取某个分支最新代码:git pull origin test

遇到的问题

1、远程仓库修改分支名称,例如修改从main->master,本地仓库需要做如下同步修改,才可以pull代码
git branch -m main master
git fetch origin
git branch -u origin/master master
git branch --set-upstream-to=origin/ master 为本地分支名称

2、从分支A切换到分支B时,若在分支A合并到分支B的时候出现了 冲突,那此时会出现报错提示:you need to resolve your current index first,停留在merge状态,所以需要回到merge前
git reset --merge

3、合并test分支到master分支的时候,提示冲突,怎么取消合并?
git merge --abort

4、分支合并原理
修改了同一个地方才会冲突,如果a没动,b添加了代码,则会追加不会冲突
冲突
5、删除本地文件后,想从远程仓库中重新Pull最新版文件。Git提示:up-to-date,但未得到删除的文件
原因:当前本地库处于另一个分支中,需将本分支的Head重置至master.
git checkout master
git reset --hard

svn

1)安装:yum -y install svn
2)下载代码到本地指定路径:svn checkout +svn路径+本地路径
下载指定版本代码到本地指定路径:svn checkout + svn路径+本地路径 -r 版本号
例:svn checkout svn://xxxx/ ./xxxx -r 505
3)更新代码到本地指定路径:svn update + svn路径+本地路径
更新指定版本代码到本地指定路径:svn update + svn路径+本地路径 -r 版本号
svn update svn://xxxx/ ./xxxx-r 500

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值