版本管理:
SCCS:unix的标准
RCS:gnu的版本控制系统,适合个人本地开发
CVS:适合联网开发
SVN(开源):subversion,并发式版本控制系统,取代CVS
GIT(开源):分布式版本控制系统,适合linux开发
###############################################################
Git:它是一个免费的、分布式的版本控制工具
git的linux客户端gitk
新版本系统安装:
sudo apt-get install git
sudo apt-get install gitk
旧版本安装:
sudo apt-get install git-core
添加自己的姓名和邮箱:
git config --global user.name “yourname”
git config --global user.email “youremail”
-----------------------------------------------------------------------------------------------
如果要使用github需要到网站注册:
-
注册github帐号
-
在本地创建sshkey并复制公钥
ssh-keygen -t rsa -C youremail
eval"$(ssh-agent -s)"
ssh-add~/.ssh/id_rsa
xclip -sel clip < ~/.ssh/id_rsa.pub
-
到github网站添加~/.ssh/id_rsa.pub并验证
###############################################################
上传自己的项目:
1.完成自己本地的项目
2.在github创建自己的仓库获取仓库地址:
git@github.com:XXX/XXX.git
3.上传本地已完成的项目
cd project-dir/
创建本地仓库:
git init
git add -A .
git commit -a -m “string”
将当前仓库和远程仓库地址关联,并为远程仓库取名:
git remote add repo_name(origin) git@github.com:XXX/XXX.git
(同一个远程仓库地址可以有多个远程仓库)
git remote -v #查看远程仓库地址上的所有仓库信息
git remote show repo-name #查看远程仓库信息
git remote rm repo-name #删除远程仓库
git remote rename old-repo-name new-repo-name #重命名远程仓库
将当前分支推送到远程仓库的指定分支:
git push -u repo_name(origin) local_branch(master)
git@github.com:XXX/XXX.git
-----------------------------------------------------------------------------------------------
参与一个开源项目:
1.fork一个分支仓库,获取地址url:
2.将远程fork的仓库克隆到本地:
cd project_dir/
git clone git@github.com:XXX/XXX.git
3.在本地fork一个开发分支并进行开发:
git checkout -b local_branch
git branch -r #查看远程分支
git branch -a #查看本地和远程的所有分支
4.将远程分支取回到本地分支
将远程仓库的所有分支取回到本地
git fetch repo_name(origin)
将远程的仓库的指定分支取回到本地的当前分支
git fetch repo_name(origin) remote_branch(master)
将远程的仓库的指定分支取回到本地与本地指定分支合并
git pullrepo_name(origin) remote_branch(master):local_branch(master)
如果本地和远程都只有一个仓库:
git pull
如果指定远程仓库和本地对应的仓库都只有一个分支:
git pullrepo_name(origin)
如果本地分支就是当前分支(或本地只有一个分支),本地分支和冒号可省略
git pullrepo_name(origin) remote_branch(master)
5.将本地的开发分支和本地的主干合并
将当前分支合并到主干master
git merge master
6.将本地分支上传到远程分支
将本地的分支上传到远程的仓库的指定分支
git push repo_name(origin) local_branch(master):remote_branch(master)
如果远程只有一个分支:
git pushrepo_name(origin) local_branch(master)
git pushrepo_name :remote_branch #删除远程分支
git pushorigin - - delete remote_branch(master) #删除远程分支
7.在github请求pullrequests
###############################################################
git的具体用法:
将新增文件和修改之后的文件添加到索引:
git add -A
git add .
git add -A .
git add -u #添加追踪的文件到索引,忽略未追踪的文件
git add -i #查看被修改或删除但没有提交的文件
git diff #提交前可以查看更改
将索引中的变化提交到仓库中的主干或分支:
git commit -a
git commit -m “string”
git commit -a -m “string”
查看仓库当前状态:
git status
-------------------------------------------
git branch branch_name #创建一个分支
git checkout branch_name #切换到创建的分区
git checkout -b branch_name #创建分支并切换到该分支
git branch #显示分支,查看当前分支
git checkout master #切换到主干master
git merge branch_name #合并分支
git merge --no-ff -m “string” branch_name
git branch -d branch_name #分支合并到主干后删除分支
git branch -D branch_name #强行删除分支
git status #可以查看合并时出现的冲突
git log #查看分支合并的情况
git log --graph --pretty=online --abbrev-commit
--------------------------------------------------
git stash #隐藏当前的工作区
从当前分区切换到某个分支紧急修复bug,在该分支创建一个分支来修复bug,
修复完成后合并,然后再返回到原来的工作分区。
git stash list #查看隐藏的工作区
git stash apply #恢复
git stash pop #同上
-------------------------------------------------
git log v3…v5 #显示在v3到v5之间的历史记录
git log branch1..branch2#显示在branch2中但不在branch1中的历史记录
git log -since=”2 weeks ago” #显示2周的历史记录
git show branch_name #根据分支名查看详细信息
git show 385eb3bad99c18d2aee08716f8b4c1ba11bff112 #根据commit名查看更详细的信息,也就是HEAD。
git show HEAD #同上,HEAD是当前的commit名
git show HEAD^ #查看上一次的commit信息
git show HEAD^^ #查看上上一次的commit信息
git show HEAD~n #查看从第n代的信息
git show HEAD^1 #查看第一个父母
git show HEAD^2 #查看第二个父母
git tab new_name old_name #给复杂名称取别名
git grep pattern dir #在dir中搜索包含pattern的行
--------------------------------------
直接从版本库删除文件
git rm filename
错误删除了当前工作区的文件,但是还没有commit,版本库还有,可以恢复:
git checkout - - filename #从版本库恢复到当前工作区
在当前分支获取branch_name分支的filename文件。
git checkout branch_name -- filename
未完待续......