版本管理-git

一、关于git

Git 与 SVN 区别
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。
Git 与 SVN 区别点:
1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。
2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。
3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。
4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。
5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
在这里插入图片描述

二、指令汇总

git命令:
cd 进入指定文件夹
ls 显示文件夹内容
pwd 查看路径
mkdir 创建文件夹

git init 把当前目录变成Git可以管理的仓库
git add <文件> 将指定文件加入暂存区(stage)
git add . 加入当前文件下所有的修改
git commit -m “<标注>” 告诉Git将加入的文件修改一并提交到仓库
git rm --cached <文件> 将加入暂存的新文件移出暂存区,返回工作区<新文件>

git status 查看过仓库当前的状态
git diff 查看仓库中具体修改的内容
git diff HEAD – <文件> 查看指定文件的
git checkout – <文件> 丢弃对应文件的修改
git log 显示仓库的提交日志,可以看到commit id 和 commit的标注(输入大写Q,退出git log)
git log --pretty=oneline 显示简易的日志记录

git reflog 查看命令历史(关闭终端,再次进入)

git reset HEAD <文件> 将已加入暂存区的文件修改移出暂存区,放入工作区<旧文件的修改>
git reset --hard HEAD^ git回退到上一个版本;HEAD^回退上2个版本;HEAD^^回退上3个版本
git reset --hard HEAD~8 git回退上8个版本

git reset 将commit撤回,代码会回到工作区
git reset --soft 将commit撤回,代码会回到工作区
git reset --hard 撤回commit,对应commit修改的代码丢失。

cat <文件> 查看文件内容
git checkout 丢弃工作区所有的更改
git checkout – <文件> 丢弃未暂存工作区的文件修改

git branch <分支名字> 创建分支
git checkout <分支名字> 切换到指定的分支
git checkout -b <分支名字> 创建分支并切换到该分支
git checkout -b <分支名字> <远程仓库名>/<分支名字> 一创建就关联远程分支

git branch 查看本地分支(会列出所有的分支出来)
git branch -r 查看远程分支
git merge <分支名字> 合并指定的分支到当前分支 (先切换到父分支)
git branch -d <分支名字> 删除指定的分支
git branch -D <分支名字> 强制删除指定的分支
git log --graph --pretty=oneline --abbrev-commit 查看分支合并图(可以看到合并冲突时候的处理图)
git merge --no-ff -m “<标注信息>” <分支名字> 合并分支(–no-ff模式),同事commit了

git branch -m <原分支名> <新分支名> 更改本地分支名字

git pull 拉取远程分支的内容,同步到本地分支
git pull <远程仓库名> <远程分支> :<本地分支>
git pull <远程仓库名> <远程分支>

git stash 储藏该分支上的修改
git stash apply 回复储藏的内容,但不删除stash里面的内容
git stash drop 删除stash里面的内容
git stash pop 恢复隐藏的内容,同时删除stash内容
git stash list 查看stash里面的内容

git remote 查看所有远程仓库名字
git remote -v 查看所有远程仓库具体信息
git remote add <仓库地址> 关联本地项目和远程仓库
git remote add <仓库名字> <仓库地址> 关联本地项目和远程仓库(可以定义仓库名字)
git remote rm <仓库名字> 删除仓库关联
git remote set-url <仓库名字> <仓库地址> 修改仓库地址

git push <仓库> <本地分支>:<远程分支> 将本地分支的修改推送到对应的远程分支上;如果该远程分支不存在,则同时会创建该名字远程分支(这是创建本地分支的同时,就关联了)
git push <仓库> <本地分支> 该本地分支名字在远程仓库存在对应的远程分支
git branch --set-upstream <本地分支> <远程仓库>/<远程分支> 关联本地分支和远程分支(是先创建本地分支再关联)
git checkout -b <本地分支> <仓库>/<远程分支> 在本地创建和远程分支对应的分支(这是先有远程分支,一创建本地分支就关联了远程分支)

标签:
git tag <标签> 给提交的分支或commit id打标签,标签如v0.9
git tag 查看所有的标签
git tag <标注> 给历史提交的commit id 打标签
git show <标签> 查看标签信息
git tag -a <标签> -m “<标签说明>” 创建带有说明的标签
git tag -d <标签> 删除标签
git push origin <标签> 将标签推送到远程
git push origin --tags 将本地全部标签推送到远程
git push origin :refs/tags/<标签> 删除远程标签(先删除本地的 git push origin <标签>,在执行这句)

vi 编辑模式:
vim <文件> 进入vi编辑模式
退出vim 编辑模式 :
1 - control + z
如果文件被修改,则vi保存在返回shell,没有被修改,直接退出vim,返回shell;
2 - 点击esc,输入冒号,进入末行模式
:w 保存当前编辑文件,不退出
:q 直接退出vim,不保存修改,返回shell
:wq 保存,再退出vim,返回shell
3- 撤回: u
4- 删除: 双击 d
5- 搜索:
/ + <需要搜索的字符>
搜索下一个:n

github网站上的仓库操作:
-> 先进入一个远程仓库
-> 点击Fork,在自己git中得到该远程仓库,可对在自己git中的仓库进行读写
-> 在自己的仓库下clone代码到地懊恼本地
-> 在电脑打开修改文件
-> 可推送都自己的远程仓库
-> 通过pull request 给官方仓库贡献代码

git config --global color.ui true 让Git显示颜色,会让命令输出看起来更醒目
压缩和解压文件:
压缩文件的时候,包括git库信息和历史都有压缩进去了
压缩:
tar -cvf edx-app-ios-enterprise-new.20170718.tar.gz edx-app-ios-enterprise-new
解压:
tar -xzvf edx-app-ios-enterprise-new.20170718.tar.gz

git reset:
对比:
仅仅只是撤销已提交的版本库,不会修改暂存区和工作区
git reset --soft 版本库ID

仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --mixed 版本库ID

彻底将工作区、暂存区和版本库记录恢复到指定的版本库
git reset --hard 版本库ID

总结:

1.git使用过程,可以使用一些比较好的管理工具,如sourcetree。
2.Git是目前最好用的分布式版本控制系统(没有之一)。
3.理解git的原理和熟悉相关指令,需要在项目协作开发中去多实践使用。

ps:一篇关于git不错的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值