标签:add 用户 技术 文件的 本地 for one eve origin
Linus Torvalds是开源界的珠穆朗玛峰,是一位凭自己的聪明才智改变世界的伟人。他的成就除了威名远扬的Linux系统,还有Git版本管理系统。
巧的是,Git也是因Linux系统而生。Linus当时苦于没有一个好用的版本管理系统。为了便于管理Linux内核,他“随手”自己开发了一个。。。真乃神人也。。。
Git和SVN是思维方式完全不同的两种版本管理系统。GIT解决了SVN的很多痛点。
Git是分布式版本控制系统,即每个用户端都会拥有本地仓库,可以在没有网络的情况下commit、等网络恢复再push到服务端。当然,Git的服务端和SVN一样,都是集中式的仓库。
Git把内容按元数据的方式存储在数据库,而SVN是直接储存目录文件。
并且,Git使用了哈希来映射提交到分支的差异,而SVN是全局的自增版本号。相比之下,git对差异内容的储存更加灵活、节省空间、性能更好,并且拥有完整的差异演化历史。锦上添花的是,哈希算法还能校验内容一致性,避免出错。
建议不同的功能、bug修复,分开提交或使用不同的分支,以便于查看历史记录。
由于Git没有全局版本号的束缚,允许分支各自演化、合并,协同性更优秀。
并且,Git的Fork操作可以把任何仓库变成自己拥有的仓库,然后想怎么改就怎么改。改完后可以通过PR(Github:Pull Request)或MR(Gitlab:Merge Request)提交给远仓库。源项目管理者可以review变化,如果没问题就可以Merge合并到仓库,构成了一个完美的协作闭环,成就了“全球最大的同性交友平台”GitHub。
利用Git的WebHook可以实现代码的自动编译、自动测试、自动扫描、自动部署,实现敏捷开发,快速迭代。
通常,仓库应该由远程服务端建立,用户端只需要克隆仓库。
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
修改远程仓库地址
注释: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 创建裸仓库(一般使用)
标签:add 用户 技术 文件的 本地 for one eve origin
原文地址:https://www.cnblogs.com/jurij/p/14808370.html