Git
基础操作
只有设置签名才能提交内容(签名用来标识内容提交的源头)
bash
# 初始化仓库
git init
# 克隆远程仓库
git clone <repo_url>
# 查看当前状态
git status
# 添加全部修改到暂存区
git add .
# 提交到本地仓库
git commit -m "提交说明"
# 查看提交历史(精简版)
git log --oneline
# 查看文件修改差异
git diff
分支管理
bash
# 创建新分支
git branch <branch_name>
# 切换分支
git checkout <branch_name>
# 创建并切换分支
git checkout -b <new_branch>
# 合并分支到当前分支
git merge <branch_name>
# 删除本地分支
git branch -d <branch_name>
# 强制删除未合并分支
git branch -D <branch_name>
# 查看所有分支(含远程)
git branch -a
远程仓库
bash
# 添加远程仓库
git remote add <remote_name> <repo_url>
# 推送本地分支到远程
git push -u <remote_name> <branch_name>
# 强制推送(慎用!)
git push -f
# 拉取远程更新
git pull <remote_name> <branch_name>
# 获取远程分支但不合并
git fetch
# 删除远程分支
git push <remote_name> --delete <branch_name>
撤销操作
bash
# 撤销工作区修改
git checkout -- <file>
# 撤销暂存区文件
git reset HEAD <file>
# 修改最后一次提交
git commit --amend
# 回退到指定提交(保留修改)
git reset --soft <commit_id>
# 彻底回退到指定提交(慎用!)
git reset --hard <commit_id>
# 恢复误删的文件
git checkout <commit_id> -- <file_path>
日志与查询
bash
# 图形化提交历史
git log --graph --all
# 按作者搜索提交
git log --author="name"
# 搜索提交内容
git log -S "keyword"
# 显示某文件的修改历史
git blame <file>
标签管理
bash
# 创建标签
git tag <tag_name>
# 创建带注释标签
git tag -a v1.0 -m "版本说明"
# 推送标签到远程
git push --tags
# 删除本地标签
git tag -d <tag_name>
# 删除远程标签
git push origin :refs/tags/<tag_name>
git add 文件
git commit -m '描述'
工作区
暂存区
本地仓库
Git分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分
支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支
的运行。
合并分支发生冲突
执行 git merge 发生冲突
查看冲突状态 git status
打开冲突文件手动解决
解决冲突后 git add 文件
提交合并 git commit
合并完成
取消合并 git merge --abort
SVN
| 命令 | 作用 | 示例 | 说明 |
|---|---|---|---|
svn checkout (svn co) |
检出仓库到本地 | svn checkout http://svn.example.com/trunk |
第一次获取代码 |
svn update (svn up) |
更新本地副本 | svn update 或 svn up |
同步服务器最新版本 |
svn status (svn st) |
查看工作副本状态 | svn status 或 svn st |
显示修改/新增/删除的文件 |
svn add |
添加新文件到版本控制 | svn add filename.txt |
添加后需要提交 |
svn commit (svn ci) |
提交更改到服务器 | svn commit -m "提交说明" |
提交本地修改到服务器 |
svn delete (svn del) |
删除文件 | svn delete filename.txt |
标记删除,需提交生效 |
svn revert |
撤销本地修改 | svn revert filename.txt |
恢复文件到服务器版本 |
svn copy (svn cp) |
复制文件或目录 | svn copy file1.txt file2.txt |
可用于创建分支/标签 |
svn move (svn mv) |
移动或重命名 | svn move old.txt new.txt |
保持版本历史 |
svn mkdir |
创建目录 | svn mkdir newdir |
创建并添加到版本控制 |
svn diff |
比较差异 | svn diff filename.txt |
查看文件修改内容 |
svn log |
查看提交历史 | svn log 或 svn log -l 5 |
显示历史记录,-l指定条数 |
svn info |
查看工作副本信息 | svn info |
显示URL、版本等信息 |
svn list (svn ls) |
列出目录内容 | svn list http://svn.example.com/ |
显示远程目录结构 |
svn cat |
查看文件内容 | svn cat http://svn.example.com/file.txt |
不检出直接查看文件内容 |
svn blame (svn praise) |
查看文件每行最后修改者 | svn blame filename.txt |
显示每行的作者和版本 |
svn merge |
合并分支 | svn merge http://svn.example.com/branches/feature1 |
将分支合并到当前目录 |
svn resolve |
标记冲突已解决 | svn resolve filename.txt --accept=working |
解决冲突后标记文件 |
svn switch (svn sw) |
切换分支/标签 | svn switch http://svn.example.com/branches/feature1 |
切换到指定分支 |
svn export |
导出干净代码 | svn export http://svn.example.com/trunk ./export |
无.svn目录的纯净导出 |
svn import |
导入项目到仓库 | svn import ./myproject http://svn.example.com/trunk -m "初始导入" |
将本地项目导入仓库 |
svn lock |
锁定文件 | svn lock file.txt -m "锁定说明" |
防止他人修改文件 |
svn unlock |
解锁文件 | svn unlock file.txt |
解除文件锁定 |
svn cleanup |
清理工作副本 | svn cleanup |
修复损坏的工作副本 |
svn help |
查看帮助 | svn help 或 svn help commit |
查看命令帮助信息 |