基于工作需求,在下常常需轮替使用git和svn两个版本控制工具,不时用到一些指令,遂在此作些记录,不定期更新。
一、git
1、远程仓建立
git init --bare project1.git # 加.git后缀属于约定俗成,其本质是文件路径。
2、清理与 git 相关的文件和目录
find ./ -iname .gitignore | xargs rm
find ./ -iname .git | xargs rm -rf
在下把原在svn库中的项目,上传到git远程库时,常常用到上述指令。
第一条指令,在当前目录及其所有子目录中查找所有名为 .gitignore
的文件(不区分大小写),并将这些文件删除。
第二条指令,在当前目录及其所有子目录中查找所有名为 .git
的文件和目录(不区分大小写),并强制递归删除它们。
3、建立仓库
git clone git@server:project1.git
git init
git add .
git commit -m "init commit"
vim .git/config
增加以下内容
[remote "origin"]
url = git@xxx.xxx.xx.xxx:/git/android
fetch = +refs/heads/*:refs/remotes/origin/*
ssh-keygen -t rsa
ssh-keygen -t rsa -C "xxx@xxx.com"
git push origin master
上述命令,主要用于:
克隆远程新建立好的仓库;
初始化这个Git 本地仓库;
添加文件并提交到本地仓库;
配置远程仓库信息;
生成 SSH 密钥进行身份验证;
最后将本地仓库的内容推送到远程仓库。
4、git常用命令
git log 查看历史提交中的修改记录
git show <commit-hash> 查看某个特定提交的差异性
git diff <commit1> <commit2>查看两次提交之间的差异
git diff <branch1> <branch2> 查看两个分支之间的差异
git status -uno 只查看修改的文件
二、svn
1、svn patch 到 git 的合并方法
svn diff -r 3563:3564 > 1_test.patch 生成从版本 3563 到 3564 的补丁文件
patch -p0 < 1_test.patch -p0 表示不剥离任何路径前缀(我常用)
patch -p1 < 1_test.patch -p1表示要从当前目录查找目的文件,不包含patch中的最上级目录(夹)
2、svn常用命令
svn revert -R . 将本地svn代码库中所有修改清理掉,恢复到与 SVN 服务器上最新版本一致
没有列出来的,或是过于简单,或是没怎么用得到。
至此,待续......