Skip to content

Git&SVN

Git相关指令

跳转=>Git基础

bash
# ==============================
# 1. 安装 Git
# ==============================
sudo apt update
sudo apt install git -y   # 安装git

# ==============================
# 2. 配置 Git
# ==============================
# 查看配置信息
git config --list
git config --global --list
git config -l  
git config --global -l	

# 初始化用户信息
git config --global user.name "Your Name"
git config --global user.email "[email protected]"

# 配置代理
git config --global http.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy 'socks5://127.0.0.1:1080'
git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080

# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

# 配置别名
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.cm commit
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --decorate"

# ==============================
# 3. 本地仓库操作
# ==============================
git init   # 创建本地仓库

# 添加文件到暂存区
git add <file>
git add xxx   # 提交某一个文件/文件夹
git add .     # 提交当前目录所有文件
git add -A    # 提交所有文件(包含新增/修改/删除)

# 查看状态
git status

# 提交文件到本地仓库
git commit -m "Commit message"

# ==============================
# 4. 分支操作
# ==============================
git branch                # 查看本地分支
git branch -r             # 查看远程分支
git branch <branch>       # 创建分支
git branch -d <branch>    # 删除分支
git branch -f <branch> <commit>   # 强制修改分支指向

# 切换分支
git checkout <branch>     
git checkout master       
git checkout -b <branch>  # 创建并切换分支

# 合并分支
git merge <branch>        # 合并某分支到当前分支
git rebase <branch>       # 变基到某分支

# 分支关联(设置本地分支跟踪远程分支)
git branch -u origin/<branch>
git branch --set-upstream-to=origin/<branch> <local_branch>

# ==============================
# 5. 远程仓库操作
# ==============================
git remote add origin <url>     # 设置远程仓库
git remote -v                   # 查看远程仓库
git remote show origin          # 查看远程仓库详情
git remote rm origin            # 删除远程仓库
git ls-remote --heads <url>     # 查看远程分支

# 克隆仓库
git clone <url>
git clone -b develop <url>   # 克隆指定分支

# 推送到远程仓库
git push -u origin master    # 首次推送并建立关联
git push origin <source>:<destination>  # 推送到指定分支
git push origin --delete <branch>       # 删除远程分支
git push origin :<branch>               # 删除远程分支(旧写法)

# 拉取远程更新
git pull                        # 拉取更新(fetch+merge)
git pull origin <branch>        # 拉取指定分支
git pull origin main --allow-unrelated-histories  # 合并不相关历史
git pull origin <src>:<dst>     # 拉取远程src到本地dst

# 单独拉取
git fetch origin

# ==============================
# 6. 提交历史与回滚
# ==============================
git log         # 查看提交历史
git reflog      # 查看操作历史(包含回滚)

# 回退到某个版本
git reset --hard <commit_id>
git reset --hard   # 重置到上一次提交
git reset --hard HEAD^   # 回退到上一个提交

# 撤销未提交的修改
git checkout -- <file>  # 恢复文件到上一次提交的状态

# ==============================
# 7. 高级操作
# ==============================
# 分离 HEAD(不依赖任何分支,仅指向某个提交)
git checkout <commit_id>

# 相对引用
git checkout HEAD^   # 上一个提交
git checkout HEAD~3  # 上3个提交

# 撤销变更
git revert <commit>    # 生成一个新的提交,撤销指定提交
git reset --soft HEAD~1   # 回退上一次提交,但保留改动
git reset --mixed HEAD~1  # 回退提交+暂存区,保留工作区改动
git reset --hard HEAD~1   # 完全回退

# Cherry-pick (挑选提交)
git cherry-pick <commit_id>

# 交互式 Rebase(修改历史)
git rebase -i HEAD~3   # 修改最近3次提交

# 标签操作
git tag v1.0.0                 # 创建标签
git tag -a v1.0.0 -m "msg"     # 创建附注标签
git tag                        # 查看标签
git push origin v1.0.0         # 推送标签
git push origin --tags         # 推送所有标签
git tag -d v1.0.0              # 删除本地标签
git push origin :refs/tags/v1.0.0  # 删除远程标签

# Git describe(显示标签信息)
git describe --tags   # 最近的标签及之后的提交

# ==============================
# 8. 常用 Git 工作流
# ==============================

# --------------------------------
# 1) Feature 开发流程 (推荐)
# --------------------------------
git checkout -b feature/xxx develop   # 从开发分支创建功能分支
# (开发 & 提交代码)
git add .
git commit -m "feat: 新增功能 xxx"

git push -u origin feature/xxx       # 推送到远程

# 完成功能后合并到 develop
git checkout develop
git pull origin develop
git merge feature/xxx
git push origin develop

# 清理功能分支
git branch -d feature/xxx
git push origin --delete feature/xxx

# --------------------------------
# 2) Release 发布流程
# --------------------------------
git checkout -b release/1.0.0 develop   # 从 develop 创建 release 分支
# (修复 bug & 文档更新)
git commit -m "chore: release 1.0.0"

git checkout main                       # 切到主分支
git merge release/1.0.0                 # 合并 release 到 main
git tag -a v1.0.0 -m "Release 1.0.0"    # 打标签
git push origin main
git push origin v1.0.0                  # 推送标签

git checkout develop
git merge release/1.0.0                 # 将 release 分支的修改合并回 develop
git branch -d release/1.0.0             # 删除本地 release
git push origin --delete release/1.0.0  # 删除远程 release

# --------------------------------
# 3) Hotfix 紧急修复流程 (补丁patch分支)
# --------------------------------
git checkout -b hotfix/1.0.1 main       # 从主分支创建 hotfix
# (修复 bug)
git commit -m "fix: 紧急修复 xxx"

git checkout main
git merge hotfix/1.0.1
git tag -a v1.0.1 -m "Hotfix 1.0.1"
git push origin main
git push origin v1.0.1

git checkout develop
git merge hotfix/1.0.1                  # 将 hotfix 也合并到 develop
git branch -d hotfix/1.0.1
git push origin --delete hotfix/1.0.1

项目开发流程

1.项目负责人先创建中央仓库并增加协作者

2.小组成员基于$ git clone 把远程仓库及其内容克隆到本地一份(解决了三件事情:初始化本地仓库;与对应的远程仓库保持了关联;把远程仓库默认内容拉取到本地)

3.每个成员写完自己的程序后,基于“git add / git commit”把自己修改的内容存放到历史区,然后通过“git pull / git push”把本地信息和远程仓库信息保持同步(可能涉及冲突s的处理)

SVN相关指令

bash
sudo apt install subversion  # 安装

# 查看版本
svn --version

# 检出(checkout)远程仓库到本地目录
svn checkout <repository_url>
svn co <repository_url>     # 简写

# 向远程仓库导入本地目录(首次提交用)
svn import <path> <repository_url> -m "import message"

# 查看仓库信息
svn info

# 添加文件或目录到版本控制
svn add <file_or_dir>

# 删除版本控制的文件或目录
svn delete <file_or_dir>
svn del <file_or_dir>       # 简写

# 提交更新到仓库
svn commit -m "commit message"
svn ci -m "commit message"  # 简写

# 更新本地工作副本
svn update
svn up                      # 简写

# 查看修改状态
svn status
svn st                      # 简写

# 查看文件差异
svn diff <file>
svn di <file>               # 简写

# 还原修改(回退工作副本的更改)
svn revert <file_or_dir>

# 查看提交日志
svn log
svn log -l 5                # 查看最近5条日志记录

# 查看文件历史记录
svn blame <file>
svn praise <file>           # 等效命令

# 创建分支或标签
svn copy <src_url> <dst_url> -m "create branch or tag"

# 合并其他分支的修改
svn merge <branch_url>

# 切换工作副本到其他分支或标签
svn switch <branch_url>

# 显示工作副本中文件的锁定状态
svn status -u

# 锁定文件(防止他人修改)
svn lock <file> -m "lock reason"

# 解锁文件
svn unlock <file>

# 清理工作副本(解决update或revert失败时)
svn cleanup

SVN 与 Git 命令对照表

操作Git 命令SVN 命令
安装sudo apt install gitsudo apt install subversion
初始化仓库git init无(通过 svn import 上传到仓库,或 svn checkout 检出)
克隆远程仓库git clone <url>svn checkout <url>svn co <url>
添加文件到版本控制git add <file>svn add <file>
查看状态git statussvn statussvn st
提交更改git commit -m "message"svn commit -m "message"svn ci -m "message"
更新本地代码git pullsvn updatesvn up
推送到远程仓库git push自动提交,无需单独推送
删除文件git rm <file>svn delete <file>svn del <file>
查看日志git logsvn log
查看差异git diffsvn diffsvn di
回退文件更改git checkout <file>svn revert <file>
创建分支git branch <branch> + git checkout <branch>git checkout -b <branch>svn copy <trunk_url> <branch_url> -m "create branch"
合并分支git merge <branch>svn merge <branch_url>
删除分支git branch -d <branch>svn delete <branch_url> -m "delete branch"
切换分支git checkout <branch>svn switch <branch_url>
查看远程仓库git remote -v无,直接通过 URL 管理
查看文件历史git blame <file>svn blame <file>
处理锁无对应命令(Git 不锁文件)svn lock <file> / svn unlock <file>
清理工作区无需,Git自动处理svn cleanup
设置用户名邮箱git config --global user.name全局配置,不通过命令设置,通常通过认证方式输入
设置代理git config --global http.proxy通过环境变量设置,如 http_proxy