scm command line usage
这里介绍下工作中经常使用的到的代码管理工具svn 和git的常用命令, 本人对svn使用的比较少,工作中主要使用git。
svn command line
将文件从服务器更新到本地版本库:
svn checkout path (path 为svn仓库路径)
例如:
svn checkout file:///F:/svn_test
svn co http://xx.xx.xx.xx/svn/svn_test
添加文件到版本库
svn add file(folder)
例如:
svn add test.c
查看文件或者目录状态
svn status path(file)
svn st test.c
将改动的文件提交到版本库
svn commit -m “LogMessage“ [-N] [—no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)
例如:
svn ci -m "update test.c" test.c
更新版本库
svn update
svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svn update -r 200 test.c(将版本库中的文件test.c还原到版本200)
svn update test.c(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit)
例如:
svn up
删除文件
svn delete file -m “delete file”
例如:
svn del test.c
svn ci -m "delete test.c"
查看日志
svn log path
查看文件信息
svn info path
比较差异
svn diff path
git command line
初始化纯仓库
mkdir project.git && cd project.git
git init --bare
初始化仓库并添加到服务器
cd myproject
git init
git add .
git commit -m "initialize repo"
git remote add origin xxx/project.git
git push origin master
克隆仓库
git clone xxx/project.git
or
git clone xxx/project.git mywork
查看远端分支
git branch -r
新建并切换到远端对应的分支:
git checkout -b new_branch
分支操作
git branch develop #创建一个名为develop的本地分支
git checkout develop #切换到本地的develop分支上
git push origin develop #创建远端develop分支
git checkout --track origin/develop #拉取远端develop分支
git push origin develop:develop #提交分支到远端
git push origin :develop#删除远端develop分支
git fetch --prune #删除已经不存在的远端分支
标签操作
git tags #显示已有标签
git tag v1.1.09 #创建轻量级标签
git tag -a v1.1.0 -m “comments for the tag”the#创建含附注标签
git push origin v1.1.06 #将标签推送到远端服务器
git push origin --tags#一次推送所有本地新增标签
git push origin :refs/tags/v1.1.06#删除远端v1.1.0标签
git tag -d v1.1.06 #删除本地v1.1.0标签
添加.gitignore
通常将不需要纳入git管理,又不希望总是出现在未跟踪文件列表里的文件(如编译过程中生成的文件等等),通过创建.gitignore文件来忽略它们,规则请google。
若.gitignore失效,可如下操作
git rm -rf --cached .
git add .
git commit -m “now .gitignore should working”
服务器地址变更后,工作目录做如下操作
git remote set-url origin git@xxx.xxx.xxx.xxx:/home/git/repositories/project.git
git remote show origin #查看变更后的远程仓库信息
git仓库服务器迁移
git clone --bare git@oldserver:project.git #从原服务器获取纯仓库
cd project.git
git push --mirror git@newserver:newproject.git #以镜像方式将仓库推送到新的服务器
分支工作流程
git pull#获取服务器最新的代码
git checkout -b foobar#创建并切换到一个本地分支
… hack hack hcak …创建并切换到一个本地分支#在本地的该分支上做开发
git status#查看修改
git checkout --files #取消修改
git add files#暂存修改
git reset HEAD xxx#取消暂存
git add xxx #暂存修改
git commit #提交
git checkout master#切换到本地master分支
git merge --no-ff foobar#将foobar分支的merge到master分支
git push origin master#更新到远端master分支
git branch -d foorbar#删除本地foobar分支
git branch -D foobar#若要删除未merge的foobar分支使用-D
撤销未更新到远端的commit
git log #查看提交的commit
git reset --mixed commit#回到待add状态
git reset --soft commit#回到待commit状态
git reset --hard commit#清楚所有修改 (注:会撤销所有的修改)
撤销已更新到远端的commit(注:该操作会丢掉所有该commit之后的更新),若有其他人已更新,则也需要在其工作目录回退到对应的commit。
git log #查看提交的commit
git reset --hard commit#回退到某个commit状态
git push origin develop -foobar#强制更新到远端服务器
撤销已更新到远端的提交:(git revert
git log # 1.查看该次提交的sha1值
commit 2996d7ff2b345c826b51da922b63e8efadb6b146
Author: Wonfee <dasifly@gmail.com>
Date: Thu Jul 2 08:16:52 2015 +0800
remove useless file
git revert 2996d7ff2b345c826b51da922b63e8efadb6b146 # 2.执行revert操作
git push # 3.更新到远端仓库
这样就可以将上次的commit安全的撤销
stash 使用
当你在某个分支进行的开发工作还没完成时,此时主分支发现有bug必须立即去修复,而此时又不想提交还没完成的分支开发,可以使用stash来储存你的开发。
… hack hack hack …
git stash
fix emergency bugs
git commit
git stash pop
… continue hacking …
rebase使用
git checkout -b feature_dev dev
bala bala …
git add xxx
git commit -a “xxxx”xxxx #在临时分支上做开发提交
git checkout dev #切回本地dev分支
git pull origin develop #将远程dev分支更新到本地
git checkout feature_dev #切回临时开发分支
git rebase dev # 执行 rebase操作
git checkout dev #切回本地dev分支
git merge --no-ff feature_dev #合并临时分支
git push origin dev #更新到服务器
git branch -d feature_dev # 删除临时分支
其他常用命令
gitk图形化工具,方便查看项目的更新情况
git diff xxx 查看修改的差异
git log 查看提交的commit
git tag 查看所有的tag
git checkout commit 切换到某个commit
git checkout tag 切换到某个标签
推荐书籍:
progit.zh.pdf
Git权威指南.pdf