首页
文章
留言
首页
文章
留言
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
相关文章
macOS常用命令
C/C++基础知识总结
Qt实现TCP通讯
全部分类
前端
后端
运维
架构
算法
数据库
移动应用
桌面应用
程序开发
热门标签
MySQL
Elasticsearch
Nginx
Redis
Objective-C
C++
MongoDB
Qt
Lua
Supervisor
CentOS
HTML
Kubernetes
Composer
Python
Shell
爬虫
Linux
iOS
Android
OpenResty
macOS
Docker
Sphinx
JavaScript
NoSQL
PHP
Kafka
GUI
Git
多线程
CSS
热门文章
10种常见的软件架构模式
Nginx常用配置说明
Redis缓存击穿、穿透、雪崩
Kubernetes介绍
OpenResty+Lua+Kafka收集日志
Elasticsearch详解
C/C++基础知识总结
jquery.tmpl使用总结
Docker使用总结
Supervisor使用总结