首页
文章
留言
首页
文章
留言
Git使用总结
2017 年 02 月 18 日
程序开发
Git
Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。 #### 功能特性: 从一般开发者的角度来看,有以下功能: 1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。 2、在自己的机器上根据不同的开发目的,创建分支,修改代码。 3、在单机上自己创建的分支上提交代码。 4、在单机上合并分支。 5、把服务器上最新版的代码 `fetch` 下来,然后跟自己的主分支合并。 6、生成补丁(patch),把补丁发送给主开发者。 7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。 8、一般开发者之间解决冲突的方法,开发者之间可以使用 `pull` 命令解决冲突,解决完冲突之后再向主开发者提交补丁。 从主开发者的角度(假设主开发者不用开发代码)看,有以下功能: 1、查看邮件或者通过其它方式查看一般开发者的提交状态。 2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。 3、向公共服务器提交结果,然后通知所有开发人员。 官方教程:[git-scm](https://git-scm.com/book/zh/v2) 生成秘钥 ```bash ssh-keygen -t rsa -C "your_email@youremail.com" ``` 本地配置 ```bash git config --global user.name "John Doe" git config --global user.email "johndoe@example.com" ``` Git 安装后第一件事应当设置好你的用户名称和邮件地址。 查看配置信息 ```bash git config --list ``` 克隆仓库 ```bash git clone ``` ### 基本操作 ------------ 查看帮助 ```bash git [commandName] --help ``` 切换到develop分支 ```bash git checkout develop ``` 查看分支状态 ```bash git status ``` 查看提交历史 ```bash git log # 或查看历史变更详情 git log -p ``` 缓存当前变更,新增的文件必须通过 `git add` 添加到暂存区后才能被正确缓存 ```bash git stash ``` 恢复缓存区 ```bash git stash pop ``` 提交新文件, 新文件必须手动提交到代码库 ```bash git add filename.ext # 或提交所有新增文件 git add . ``` 提交指定变更 ```bash git add filename.ext git commit -m "修改说明" # 或提交所有变更 git commit -a -m "修改说明" ``` 推送本地变更到远端 ```bash git push ``` 拉取远端分支变更 ```bash git pull # 或 git rebase [branchName] # rebase 会将本地变更置于远端变更之后 ``` 恢复到历史版本 ```bash git reset hashcode ``` 恢复到远端最新 ```bash git reset --hard ``` 恢复指定文件到最新版本 ```bash rm /xx/filename git checkout -- /xx/filename ``` 合并冲突, 需先配置合并工具 ```bash git mergetool git commit -a -m "修改说明" ``` 对比分支 ```bash git diff develop master ``` 修改上一次提交内容,必须尚未push到远端 ```bash git commit --amend ``` #### 分支操作 ```bash # 创建分支 git branch [branchName] # 或创建分支并切换到新分支 git checkout -b [branchName] # 删除分支 git branch -d [branchName] # 查看分支 git branch -l ``` #### 标签操作 ```bash # 创建标签 git tag -a v1.1.0 # 或 git tag -a v1.1.0 -m "版本简要说明" # 推送标签变更 git push --tags # 查看标签 git tag -l # 删除标签 git tag -d tagName ``` ### 应用场景 ------------ #### 新任务研发 ```bash git checkout develop git pull git checkout -b feature/task-ID # coding .... git add . git commit -a -m "xx任务" git push # 发起合并请求到release或develop ``` #### 线上bug修复 ```bash git checkout v1.1.0 git checkout -b hotfix/v1.1.0 # coding .... git add . git commit -a -m "xx bug" git push ``` #### 代码发布 ```bash git checkout develop # 或 git checkout release/v1.1.0 git pull git checkout master git merge develop # 或 git merge release/v1.1.0 git push git tag -a v1.1.0 -m "版本简要说明" git push --tags ``` #### 补充 本地新建一个分支,并切换到新建的分支,并且建立与远程分支origin/develop的跟踪关系。 ```bash git checkout -b feature/xxx origin/develop ``` 查看本地分支的跟踪分支(上游分支)命令: ```bash git branch -vv ``` 提交到指定远程分支,设置本地分支追踪远程分支,下次就可以直接使用 `git push` 提交了 ```bash git push --set-upstream origin feature/xxx ``` 合并远程分支到到本地分支 ```bash git fetch origin feature/remote_xxx:temp(把远程分支:feature/remote_xxx拉取到本地并创建为:temp分支) git diff feature/local_xxx temp(对比两个分支) git merge temp git branch -d temp ``` 恢复到某个版本 ```bash git reset --hard 版本号 ```
0
相关文章
Qt实现TCP通讯
macOS常用命令
C/C++基础知识总结
全部分类
前端
后端
运维
架构
算法
数据库
移动应用
桌面应用
程序开发
热门标签
Kafka
Android
Git
C++
Qt
MySQL
macOS
JavaScript
多线程
MongoDB
Linux
Supervisor
Elasticsearch
Redis
NoSQL
Python
CentOS
Shell
Kubernetes
Lua
iOS
CSS
Objective-C
HTML
Composer
PHP
Nginx
GUI
Sphinx
爬虫
Docker
OpenResty
热门文章
Redis、MemCache、MongoDB比较
macOS常用命令
OpenResty+Lua+Kafka收集日志
Nginx常用配置说明
Elasticsearch详解
Supervisor使用总结
Docker使用总结
Git使用总结
CentOS常用命令总结
Qt实现TCP通讯