码迷,mamicode.com
首页 > 其他好文 > 详细

git操作

时间:2021-05-25 18:33:46      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:add   用户   技术   文件的   本地   for   one   eve   origin   

前言:致敬伟大的Linus Torvalds(林纳斯·托瓦兹)

Linus Torvalds是开源界的珠穆朗玛峰,是一位凭自己的聪明才智改变世界的伟人。他的成就除了威名远扬的Linux系统,还有Git版本管理系统。

巧的是,Git也是因Linux系统而生。Linus当时苦于没有一个好用的版本管理系统。为了便于管理Linux内核,他“随手”自己开发了一个。。。真乃神人也。。。

一、GIT解决了SVN的痛点

Git和SVN是思维方式完全不同的两种版本管理系统。GIT解决了SVN的很多痛点。

.1 分布式版本控制系统

Git是分布式版本控制系统,即每个用户端都会拥有本地仓库,可以在没有网络的情况下commit、等网络恢复再push到服务端。当然,Git的服务端和SVN一样,都是集中式的仓库。

技术图片

1.2 更先进的存储设计

Git把内容按元数据的方式存储在数据库,而SVN是直接储存目录文件。

并且,Git使用了哈希来映射提交到分支的差异,而SVN是全局的自增版本号。相比之下,git对差异内容的储存更加灵活、节省空间、性能更好,并且拥有完整的差异演化历史。锦上添花的是,哈希算法还能校验内容一致性,避免出错。

技术图片

建议不同的功能、bug修复,分开提交或使用不同的分支,以便于查看历史记录。

1.3 更优秀的社交性协作

由于Git没有全局版本号的束缚,允许分支各自演化、合并,协同性更优秀。

并且,Git的Fork操作可以把任何仓库变成自己拥有的仓库,然后想怎么改就怎么改。改完后可以通过PR(Github:Pull Request)或MR(Gitlab:Merge Request)提交给远仓库。源项目管理者可以review变化,如果没问题就可以Merge合并到仓库,构成了一个完美的协作闭环,成就了“全球最大的同性交友平台”GitHub。

1.4 便捷的自动部署

利用Git的WebHook可以实现代码的自动编译、自动测试、自动扫描、自动部署,实现敏捷开发,快速迭代。

二、使用Git

2.1 建立仓库

通常,仓库应该由远程服务端建立,用户端只需要克隆仓库。

cd project && git init 进入仓库目录、初始化空仓库

git init --bare 初始化裸仓库(无本地仓库的文件结构可供浏览、修改,推荐用于服务端)

git clone https://git.test/project.git 克隆仓库到本地

git config --list 查看仓库设置

git config --global [user.name](http://user.name/) "name" 设置全局git用户名

git config --global user.email "test@[test.com](http://test.com/)" 设置全局git用户邮箱

git remote origin set-url https://git.test/project2.git 修改远程仓库地址

2.2 常规使用

注释:HEAD指向的是现在使用中的分支的最后一次更新

git status 显示修改文件清单

git diff a.php 查看修改文件的差异

git stash 临时存储修改,工作区将无修改。适合保存不便于加入暂存区的修改

git stash save "test" 临时存储修改并备注

git stash list 查看临时存储列表

git stash pop 弹出临时储存内容,将修改恢复到工作区

git stash pop stash@{1} 弹出堆栈中指定的临时储存,1表示弹出第二个

git mv a.php b.php 移动文件或目录

git rm b.php 删除文件

git add a.php 添加文件或目录到暂存区,支持通配符(例如 *.php)

git commit -m 'test' 提交暂存区到本地仓库,必须填写-m说明

git log 查看提交记录

git revert 326fc9f70d022afdd31b0072dbbae003783d77ed 回滚某次commit

git push 推送到本地分支对应的远程仓库分支

git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了

git reset HEAD XXX/XXX/XXX.php 就是对某个文件进行撤销了

技术图片

分支

Git允许分支独立演化,并且可以随意将分支合并。

技术图片

技术图片

查看分支:

git branch 查看本地分支

git branch -a 查看本地分支与远程分支

检出分支

git checkout feature_test 检出本地分支;远程存在此分支、本地不存在,将检出远程分支到本地

新建分支:

git branch feature_test 基于当前分支新建分支

git checkout -b feature_test 新建分支并且切换到新分支

git push --set-upstream origin feature_test 将新分支推送到远程服务端

git branch -m feature_test feature_rename 修改分支的名称

合并分支

git merge feature_test 将feature_test合并到当前分支

合并经常会产生冲突。当两个分支都修改了同一处内容,Git无法自动合并差异时,就会报冲突,由使用者手动决定内容的去留。

解决冲突的原则是:应该仔细审查每一处冲突,将当前需要的内容留下。不要简单地保留某个分支的版本,因为有些情况下,保留任何一方的改动都是错误的。

git merge --abort 取消合并

删除分支

git branch -d feature_test 删除本地分支。必须checkout到其它分支,才能删除本分支

git push origin --delete feature_test 删除远程分支

git和gitlab有什么关系?

git存储以二进制存储

git提交传输的是差异文件

git的webhook实现代码的自动部署

git init --bare 创建裸仓库(一般使用)

git操作

标签:add   用户   技术   文件的   本地   for   one   eve   origin   

原文地址:https://www.cnblogs.com/jurij/p/14808370.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!