svn集中式版本控制系统,git分部式版本控制系统。
svn所有代码集中放在服务器上,工作的时候,从服务器下拉最新代码,完成代码编辑,然后提交到服务器.
git每个PC都有一个clone的版本库,我们在这个版本库打一个分支,完成自己的工作,然后合并到主分支。自己的版本库与他人的版本库怎么协作呢,通过推送。这时候有时会产生冲突,就需要主开发者解决,或者两名普通开发者协作解决,再由一人提交。冲突解决之后由主开发者推送到主服务器。
rm -rf <file>删除当前目录及其子目录
nano/vim <file> 编辑一个文本,当目标文件不存在时会自动创建
1、配置git使用者信息
git config --list //查看所有配置
git config --global user.name "yong.ye"
git config --global user.email "[email protected]"
2、创建本地仓库
git init [仓库名] //带工作区
git init --bare [仓库名] //纯仓库
3、查看工作区状态
git status
4、工作区内容添加缓存区
git add <file> // 指定的文件
git add [--all | -A] // 所有要跟踪的文件
5、缓存区内容提交到版本库
git commit -m "提交说明"
6、查看commit日志
(1)git log
当前分支的commit历史
(2)git reflog
查看整个本地仓储的提交历史, 包括所有branch的提交, 甚至包括已经撤销的commit, 只要HEAD发生了变化, 就会在reflog中记录
7、比较
git diff //工作区和暂存区之间的比较
git diff HEAD //工作区和版本库中最近的commit比较
git diff HEAD^ //工作区和版本库中的上一个commit比较
git diff <commitId> //工作区和指定的commit比较
git diff --cached //暂存区和仓库的比较
8、撤回
(1)git checkout -- <file>... //丢弃工作区的修改(即对工作区进行了修改,尚未add)
(2)git reset HEAD <file>... //撤出暂存区(即将暂存区的内容撤回到工作区修改时的状态)
(3)git reset <mode> <commit>
mode:
--mixed,默认,从版本库直接撤回到工作区
--soft,从版本库撤回到暂存区,即撤回提交
--hard,彻底撤回到指定的commit上 ,仓库、暂存区、工作区均受影响
9、删除(可以通过撤回找回)
git rm --cached <file> //只从暂存区或仓库中删除,但工作区(本地)中的文件保留
git rm <file> //连本地文件一起,从暂存区或仓库中删除
10、分支
(1)查看所有分支
git branch [-v] [-r]
(2)创建分支
git branch <branch-name>
(3)切换分支
git checkout <branch-name>
(4)合并分支
git merge [--no-ff] <branch-name> -m <memo>
要合并到哪个分支,就先切到哪个分支进行合并
(5)删除分支
删除本地分支
git branch -d <branch-name>
例:git branch -d dev
10、标签
(1)查看所有标签
git tag
(2)查看具体标签
git show <tag>
(3)创建标签
标签打在最新的commit上,<tag>指定标签名称:
git tag <tag>
标签打在指定的commit上,<commit>指定commit ID:
git tag <tag> <commit>
打标签时可以指定备注,-a指定标签名称,-m指定备注内容:
git tag -a <tag> -m <memo> [commit]
(4)删除标签
删除本地仓库标签
git tag -d <tag>
10、远程协作
(1)克隆远程仓库(clone)
例:git clone https://github.com/gdyycn/MyTestPro.git
(2)查看远程仓库信息
git remote -v
(3)推送(push)
例:git push origin master
(4)拉取(pull)
例:git pull origin master
(5)删除远程分支
例:git push origin :dev
(6)将标签推送到远程仓库
git push <repository> --tags
(7)删除远程仓库标签
git push <repository> :refs/tags/<tag>