GIT
Linus:
I’m an egotistical bastard, and I name all my projects after myself. First Linux, now git.
官方指南:https://git-scm.com/book/zh/v2
一图胜千言:
Git 是一个版本控制工具,它能实现团队中的代码协作开发,在代码同步和管理方面功能强大、理念先进。
Git 是当下最流行的分布式版本控制工具,轻量级,但功能强大,由 linux 之父 linus 开发。它的使用特别广泛,尤其开源社区基本都用它作为版本控制工具。我们每个人也要尽量掌握它。
而网站 github.com 是基于 git 工具的一个代码托管网站,目前基本所有知名的开源项目都选择把代码部署到这个网站。这里的代码包罗万象,是个学习的天堂。实属居家旅行、杀人拿塔的必备网站。
如果想用 git 工具下载同步代码,方法如下:
#1. 进入 git bash,切换到相应目录,比如,e 盘下的 course 目录:
cd/e/course/
#2. 如果是第一次下载,执行以下命令
git clone https://github.com/13431/notes.git
#3. 如果不是第一次下载,只是更新代码,执行以下命令。
#ps. 要经常运行这个命令,保持与服务器的同步
cd/e/course/notes/
git pull
这是 Git 的一个教程,大家有时间可以按照上面的看看、练练,以后务必掌握基本用法: Git 廖雪峰 教程
下面总结了一下常用的基本命令:
## 修改 .gitconfig 文件,这是 git 的配置文件
vi~/.gitconfig
## 初始化 版本库
git init
git init-db
## 添加忽略文件。这个文件控制,哪些文件不要被提交
echo "*.svn" > .gitignore
## 将改变增加至索引
git add .
## 从索引写入到库
git commit -m "提交到版本库"
git commit -a -m "提交,连同所有未 add 的修改文件"
git commit --amend -a -m "替换最后一次的提交信息"
## 查看修改了什么东西
git diff
git diff --cached
git status
## 回撤版本,重新提交。后悔药。
git reset HEAD^ # 回撤到上一版本,默认是 --mix 形式,另有 --soft 和 --hard 形式
git status # 可以看到,上一版本提交的文件没有增加到 index 的状态
git add/commit... # 做完处理后,重新提交
## 查看日志,历史记录
git show
git log
git log --pretty=oneline #定制 log 的显示样式
git log -2 -p #显示最近两次提交的详细信息
git log --stat --summary #简要显示每次更新的统计信息(提交过那些文件,有多少行修改)
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset'--abbrev-commit
## 增加/查看/切换/删除 分支
git branch #查看分支
git branch 1234 #创建分支 1234
git branch 1234 343223 #以 343223 为起点创建1234 分支
git checkout 1234 #切换到分支 1234
git checkout -b tmp #创建并切换到分支 tmp
git branch -D tmp #删除分支 tmp
## 合并工作到主分支(1234 -> master)
git checkout master #切换到主分支
git merge HEAD 1234 #将 1234 的最新版本合并到当前分支
git pull.1234 #相当于 git fetch && git merge
## 生成并应用补丁,这是另外一个合并工作的方法。暂时不需要搞太清楚。
git format-patch master>A.patchgit checkout master #先生成补丁文件,再切换到分支目录
git apply A.patch #应用补丁文件到当前分支
git add/commit... #然后提交修改
## 下载/上传/更新 信息到指定版本库
git clone git://192.168.1.1/repo.git
git push git://192.168.1.1/repo.git 1234:master
git pull git://192.168.1.1/repo.git master:1234
git fetch public
## 其他命令:
git tag #将某个版本做个标记,即赋予一个好记的名字
git gc #垃圾收集,能大大减小版本库大小
git repack #同上,也能大大减小版本库大小
git ls-tree HEAD #查看版本库中的文件结构,下面语句是跟 awk 合作,打印整个目录结构
git ls-tree -r HEAD|awk'{print $4}'>d:/home/index/repTree
git whatchanged #显示某个版本改变了哪些文件
git show-branch #显示分支变动情况
git reflog #显示所有变更历史(跟 git log 不同)
git clone #相当于 git init && git fetch
git pull #相当于 git fetch && git merge
git rebase #git merge 外,合并仓库的另一种形式
## 下面的例子是建立一个纯仓库,并作为开发的中心仓库(即 GIT 服务端)
git clone --bare /workspace/hnpmi /repo/1234.git #创建一个新的纯仓库,用于备份、共享
cd/workspace/1234 #这是我们的工作目录
git remote add origin /repo/1234.git #将刚才新建的仓库添加为我们的远程分支
git push origin master #本地的 master 分支有更新,同步到远程分支
Subversion
首先,下载可爱的小乌龟:
wget https://nchc.dl.sourceforge.net/project/tortoisesvn/1.9.5/Application/TortoiseSVN-1.9.5.27581-x64-svn-1.9.5.msi
其次,如果想使用 svn 从服务器上下载东西:
svn checkout http://svn.apache.org/repos/asf/struts/struts2
svn co http://svn.apache.org/repos/asf/struts/struts2
如果想同步代码:
svn update
查看当前代码的修改情况:
svn status
svn st
如果想提交代码:
svn commit -m 我的注释
svn ci -m "My Message"
查看日志:
svn log
寻求帮助
svn --help
svn update --help
搭建服务器
首先,创建一个 svn 库:
svnadmin create /var/svn/aaa
修改下面的 conf/svnserver.conf 文件,将下面几条注释去掉
anon-access = read # 匿名用户只能读,不能改
anon-access = write # 已登录用户,可以修改
password-db = passwd # 指明验证文件的名字
其次,开启服务:
svnserve --daemon --root /tmp/bbb
然后,就可以访问了
svn co svn://ip
导入文件夹到项目,可以用 import 命令:
svn import ~/hello svn://ip/hello