0
点赞
收藏
分享

微信扫一扫

Git与SVN

求索大伟 2022-03-11 阅读 69

Git

Git简介

Git 与 SVN版本控制器区别

git是分布式的版本控制系统,svn是集中式的版本控制系统
集中式与分布式区别:
    你的本地是否有完整的版本库历史!
    假设SVN服务器没了,那你丢掉了所有历史信息,因为你的本地只有当前版本以及部分历史信息。
    假设GitHub服务器没了,你不会丢掉任何git历史信息,因为你的本地有完整的版本库信息。你可以把本地的git库重新上传到另外的git服务商。

安装Git

# ubuntu安装git
sudo apt install git

配置用户信息

git config --global user.name "Your Name"
git config --global user.email "email@example.com"
​
"--global:配置全局。即这台机器所有的Git仓库都会使用这个配置"

创建版本库

版本库:repository。可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
​
# 创建一个空目录作为版本库
cd ~
mkdir learngit
cd learngit
​
# 将这个目录变成Git可以管理的仓库
git init
​
"新增的`.git`目录是Git来根曾管理版本库的。默认是隐藏的,可以通过`ls -a`查看"

添加文件到仓库

# 创建文件,写入内容
vim readme.txt
​
# 文件添加到仓库
git add readme.txt
​
# 文件提交到仓库
git commit -m "wrote a readme file"
" 使用命令git add <file>,注意,可反复多次使用,添加多个文件;使用命令git commit -m <message>,完成。"

时光机穿梭

# 修改文件内容
vim readme.txt
​
# 查看仓库当前的状态
git status
​
# 查看修改内容
git diff
​
# 文件添加到仓库
git add readme.txt
​
# 查看仓库当前的状态
git status
​
# 文件提交到仓库
git commit -m "add distributed"
​
# 查看仓库当前的状态
git status

版本回退

# 修改文件内容
vim readme.txt
​
# 文件添加到仓库
git add readme.txt
​
# 文件提交到仓库
git commit -m "append GPL"
​
# 查看提交历史
git log --pretty=oneline
"--pretty=oneline 每行显示一条commit"
​
# 回退到上一个版本
git reset --hard HEAD^
"Git中,HEAD代表当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^"
​
# 回退到指定版本
git reset --hard <commit id前几位>
​
# 查看命令历史
git reflog

工作区和暂存区

工作区:电脑里看到的目录,如learngit。
版本库:工作区中有一个隐藏目录.git,这个是Git的版本库。其中包含暂存区与分支
​
git add:把提交的所有修改放到暂存区
git commit:一次性把暂存区的所有修改提交到分支

管理修改

每次文件的修改,如果不 git add 到暂存区,就不会加入到 commit 中

撤销修改

## 撤回工作区的文件
vim readme.txt

# 丢弃工作区的修改
git checkout -- readme.txt

## 撤回提交到暂存区的文件
vim readme.txt
git add readme.txt

# 暂存区的修改回退到工作区
git reset HEAD readme.txt

# 丢弃工作区的修改
git checkout -- readme.txt

## 撤回提交到版本库的文件
git reset --hard HEAD^

删除文件

vim test.txt
git add test.txt
rm test.txt
git status
​
# 版本库中删除文件
git rm test.txt
git commit -m "remove test.txt"
​
vim test.txt
git add test.txt
rm test.txt
git status
​
# 恢复误删的文件
git checkout -- test.txt
"git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。"

远程仓库

# 创建SSH Key
~目录中查找是否有.ssh目录。id_rsa:私钥  id_rsa.pub:公钥
ssh-keygen -t rsa -C "youreamil@example"
​
# GitHub配置

添加远程库

# 添加远程库
git remote add origin git@github.com:qingxuly/learngit.git
​
# 本地仓库推送到远程库上
git push -u origin master
"-u:Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。"
​
# 把本地master分支的最新修改推送至GitHub
git push origin master
​
# 查看远程库信息
git remote -v
​
# 删除orign,只是解除了本地和远程的绑定关系
git remove rm origin

从远程库克隆

登陆GitHub,创建新的仓库gitskills
​
# 克隆一个本地库
git clone git@github.com:qingxuly/gitskills.git

分支管理

标签管理

SVN

SVN简介

SVN概念

repository(源代码库):源代码统一存放的地方

Checkout(提取):当你手上没有源代码的时候,你需要从repository checkout一份

Commit(提交):当你已经修改了代码,你就需要Commit到repository

Update (更新):当你已经Checkout了一份源代码, Update一下你就可以和Repository上的源代码同步,你手上的代码就会有最新的变更

安装SVN

# ubuntu安装git
sudo apt install apt-get install subversion

SVN使用

# 文件checkout到本地目录
svn checkout svn_path local_path
​
# 版本库中添加新的文件
svn add file
​
# 改动的文件提交到版本库
svn commit -m "message" [-N] [--no-unlock] PATH
​
# 加锁/解锁
svn lock -m "message" [--force] PATH
svn unlock PATH
​
# 更新版本
svn update -r m PATH
svn update      # 更新到最新版本
svn -r 200 test.php     # 将文件还原到历史版本200
svn update test.php     # 文件更新到最新版本
​
# 查看文件或者目录状态
svn status PATH
"显示文件及子目录的状态,正常不显示"
"? 不在svn的控制中    M 内容被修改     C 发生冲突      A 预订加入到版本库      K 被锁定"
​
# 删除文件
svn delete PATH -m "注释内容"
svn delete test.php +   svn ci -m "message"     (推荐)
​
# 查看日志
svn log PATH
​
# 查看文件详细信息
svn info PATH       # 将修改的文件与仓库中最新版本比较
svn diff -r m:n PATH    # 版本之间对比
​
# 将两个版本之间的差异合并到当前文件
svn merge -r m:n path   # 一般会产生冲突,需要处理一下
​
# 版本库中添加文件夹
svn mkdir PATH
​
# 代码库URL变更
svn switch      # 更新工作副本到不同的URL
# https://www.cnblogs.com/dabaopku/archive/2011/05/21/2052820.html
​
# 解决冲突
svn resolved    # 移除工作副本的目录或文件的“冲突”状态
举报

相关推荐

0 条评论