git的基础知识及简单用法

使用分布式版本控制的好处
1.就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。
2.大部分操作的可以本地执行 -快速高效

git命令

git help(帮助)
例 git help clone 查看clone指令的所有操作文档(按Q退出)
//使用
先初始化本地仓库 `git init`
`git status` 可查看文件状态
`git add 文件名` 纳入git管理
`git commit -m "注释"` 提交到本地
一般使用时为了方便  直接`git commit -a -m “备注信息"`来提交到本地
`git diff` 查看尚未暂存的文件更新了哪些部分
`git diff --cached`查看已经暂存起来的变化
git log 查看日志
    红色文件:文件没有被纳入git管理中
    modified红色 修改后的文件(需要先添加在提交)
    绿色文件:文件已经加入到了 ' 暂存区 '
    工作区 除了 .git文件夹以外
    版本库 git 目录 存储所有版本记录
    版本号: 黄色commit 40位(哈希值) 唯一的 只要服务器版本不一样就可以提交到远程服务器
`git log -p -2`
-p 选项展开显示每次提交的内容差异,用 -2 则仅显示最近的两次更新
`git log --pretty=oneline`将每个提交放在一行显示
`git log --pretty=format:"%h - %an, %ar : %s"`格式化输出

常用的格式占位符
常用的格式占位符
添加日志搜索条件
这里写图片描述

*配置账号信息(一般来讲只需要配置一次全局的账号即可)

配置局部: 保存在.git --->config
`git config user.name "tangseng" `配置用户名(区分责任人)
`git config user.email "tangseng.@xitian.com"` 配置邮箱 用于联系开发者
配置全局 finder -> 前往 -> 个人-> .gitconfig(修改的是默认 不会在文件局部中出现)
`git config --global user.name "wukong"`
`git config --global user.email "wukong.@xitian.com"`
* 如果同时配置了 局部全局 优先局部
**版本回退**

`git reset --hard HEAD^` 一个^代表一个版本
`git reset --hard 版本号` (7位版本号)
`git reflog` 查看历史记录(如果git回到早起版本 后面的版本将不存在 如果要回退到之前 那么通过这个指令来查看版本号来进行回退)

tag标签

显示的标签按字母顺序排列,所以标签的先后并不表示重要程度的轻重。
列出现有标签的命令非常简单,直接运行 git tag 即可(如果没有任何反应 就证明没有标签)
新建标签:git tag -a v1.4 -m 'my version 1.4'
-m 选项则指定了对应的标签说明
可以使用git show命令查看相应标签的版本信息,并连同显示打标签时的提交对象。
git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库git push origin v1.5
这样其他开发者在数据同步后 也可以看到这个标签
如果要一次推送所有本地新增的标签上去,可以使用 –tags 选项
git push origin --tags
删除远程标签 git push origin :v1.5
删除本地标签 git tag -d v1.5

分支

git branch查看本地分支
git branch -r查看远程分支
git branch -a查看所有分支
git branch test 创建名为test 分支
git checkout test 切换到 test分支
git branch -D test删除本地分支
git branch -v 查看各个分支最后一个提交对象的信息
git branch --merge查看哪些分支已被并入当前分支
git branch --no-merged查看尚未合并的分支
git push origin :test删除远程分支(推送个空的分支到远程)
git checkout -b test相当于新建test分支并且切换到test分支
分支的合并
如果要将开发中的分支(develop),合并到稳定分支(master),
首先切换的master分支:git checkout master
然后执行合并操作:git merge develop

远程
git remote -v 查看远程主机网址
git remote rm 主机名 删除远程主机
git remote rename 源主机名 新主机名 更改远程主机的名称
git remote add 主机名 网址 添加远程主机
git remote show 主机名 可以查看主机的详细信息

git fetch
将远程主机版本库更新取回本地
git fetch 远程主机名 将远程更新全部取回本地
git fetch 远程主机名 分支名 取回特定分支更新
fetch 命令只是将远端的数据拉到本地仓库,并不自动合并到当前工作分支,只有当你确实准备好了,才能手工合并。

git pull
取回origin主机的next分支 与本地的master分支合并
git pull origin next:master
如果远程分支是当前分支 则冒号后面的部分可以省略
git pull origin next
如果当前分支与远程分支存在追踪关系 可省略远程分支名
git pull origin
等价于 下两部操作
gitfetchorigin git merge origin/next

git push 将本地分支更新推送到远程主机
git push 远程主机名 本地分支名:远程分支名
如果省略远程分支名 则如果不存在 会自行创建
如果省略本地分支名 则表示删除指定的远程分支(等同于推送一个空的本地分支到远程分支)
git push origin :master 删除origin主机上的master分支

起别名
git config --global alias.co checkout这样在使用checkout命令时 只需 git co (个人不推荐使用起别名)

手动建立追踪关系 tracking
git branch --set-upstream master origin/next 指定master 追踪origin/next分支

如果合并需要采用rebase模式 可以使用 –rebase
git pull --rebase 远程主机名 远程分支名:本地分支名

git merge和rebase的区别
对于两个分支而言,rebase和merge没有区别,但是rebase更干净,因为log hisitory是线性的,但commit不一定按日期先后排,而是local commit总在后面,merge之后history变得比较复杂,但是commit按日期排序,stackoverflow上有个图示很好:
这里写图片描述

git pull -p在本地删除远程已经删除的分支

多人开发配置

- 初始化服务器: git init --bare(到指定文件夹中 不需要隐藏)
- 克隆代码(下载): git clone 服务器路径(第一步指定位置)
- 设置忽略文件 (Github -> .gitignore )
- 保证.gitignore 根.git 在同一目录下(.git负责管理)
- 配置个人信息config
- 将.gitignore 推送给远程服务器

实际开发

1.发布版本
2.开发新需求
3.发现重大BUG
解决步骤:
首先发布版本之后 创建新的分支来开发新需求,当发现重大BUG时 从主分支在创建新的分支 来修改 测试完成后合并到主分支 并删除当前分支 并发布到生产服务器,在切换到新需求分支  继续进行开发工作

如果合并中遇到了冲突(不同分支修改了同一个文件的统一部分)
在执行git merge 后git作了合并 但并没有提交 会停下来等你解决冲突/此时可用 git status来查看 `Unmerged paths:`会告诉你冲突位置git会自动在有冲突的文件中加标记
======上半部分 是当前分支内容 下半部分是合并过来的分支 选择一个删除另一个来解决冲突
解决之后  需要再次进行commit操作来完成合并

注:如果多人开发有固定分支 master develop 个人分支
合并时 需要先从develop远程分支pull代码 然后在合并个人分支到develop 并push到服务器上 等功能稳定或者到一定阶段时 在合并到master

如有不懂的地方参考http://git.oschina.net/progit/
推荐图形化工具SourceTree 别问我为什么 因为我只用过这个 并且已经满足了我的基本需求
如需翻墙 推荐 鱼摆摆 https://ybb1024.com省时省力只需9元/月

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值