git一些实践命令,关于reabse和merge的区别在最后做了一个比较
git命令
一. 克隆,提交,拉取代码
1. 克隆,提交代码
- git clone:远端仓库地址
- git remote add upstream: 上游远端仓库地址(fork代码的原地址)。添加上游远端仓库
- git add -A
- git commit -m '描述'
- git push
2. 从上游远端仓库拉取冲突代码,解决冲突
- git pull upstream master -r:把冲突部分拉下来,使用rebase合并代码,不会产生合并信息,不使用rebase确实回产生的。pull细节:把工作区的修改暂存起来,把远端代码和上一次提交合并,然后把暂存的修改再合并到分支上
- git add -A
- git rebase --continue:重新提交代码文件,不会产生额外的commit。如果合并的分支中存在多个commit,需要重复处理多次冲突。 只有处理冲突时候才能用这个命令。
- git push -f:强制提交代码
3. 修补最近一次的提交
- git commit —amend(-a):修补最近一次push
4. 拉取代码
- git pull 等价于 git fetch & git merge:这时从远端拉取代码,回产生一个合并日志,产生分叉
- git pull --rebase (-r):使用 git rebase 合并代码
二. 删除远端误提交代码文件
- git rm —cached test.txt:不删除本地文件的情况下,删除远端文件
- git rm -f test.txt:删除远端文件的同时删除本地文件
- git rm -r test:删除远端文件夹的同时删除本地文件夹
- 做完上述删除动作,直接commit就好,不用add
三. 撤销修改
- git reset --hard version:修改本地仓库版本
- git reset HEAD 文件:把提交到缓存区的代码,回退到本地工作区
- git checkout --文件:撤销本地工作区的修改
四. 标签管理
- git tag:列出所有标签
- git show v1.0:查看标签信息
- git tag v1.0 commit:给分支打标签。在后面添加commit信息,可以把标签打到以前的commit上
- git tag -a 标签名 -m '标签描述' 1094adb:给标签写上描述
- git tag -d v1.0:删除标签
- git push origin v1.0:提交标签到远程仓库
五. 分支管理
- git branch:列出所有分支
- git branch <branch>:创建分支
- git branch -av:显示所有远程、本地分支,并显示最后提交的commit信息
- git branch -d :小写时分支上的commit必须已经全部合并到其他分支;大写为强制删除
- git checkout :切换分支
- git checkout -b :创建并切换分支
- git merge -m '合并信息' :合并分支
- git merge --abort:放弃这次merge(同时也放弃pull)
六. diff
- git diff:比较修改后的文件和修改前的文件的区别
- git diff commit:比较工作区和指定提交之间的比较
七. log
- git log:查看日志
- git log --graph:查看提交历史图表
- git log --oneline:把提交信息整合到一行显示
- git log --stat:显示某次commit中添加行、删除行的总数
八. rebase
- git rebase --abort:放弃本次变基操作
- git rebase :基于某个提交(或分支)重新提交你的代码。在另一个分支提交修改代码,然后切换回master分支,执行命令,把另一个分支合并到master分支。并不会产生额外提交信息。
九. 初始化
- git init:初始化
- .gitignore:忽略提交文件
- README.md:代码描述文件
十. 暂存修改
- git stash:保存当前工作区到暂存区
- git stash list:列出当前保存的修改
- git stash pop:弹出保存的修改
十一. 一些心得体验
- rebase,实际上这个命令没这么难,我解说下。
- 当使用git rebase <branch>合并分支的时候。会把你当前的commit给去除,临时保存起来,然后把要合并的分支,从开始分叉的地方,全部搬到master分支上,然后把临时保存的commit放在头部,这样就变成了一条线。如果接下来再使用rebase,他会续借原来的分支commit,而不是放在头部
- 如果使用merge的话,会存在一个分叉,然后再合并到master上,多产生一个commit信息
master:commit1=>commit2
dev:dev1=>dev2
这两个分支使用rebase合并
commit1=>dev1=>dev2=>commit2,如果继续使用rebase,
commit1=>dev1=>dev2(dev分支上的commit全都会加入到这后面)=>commit2(master分支的commit全部会加入到这后面)
如果使用merge的话
commit1=>dev1=>dev2=>commit2=>merge dev(新产生一个commit信息,合并分支的)
dev3(从dev2产生分叉)
---恢复内容结束---
# git命令
一. 克隆,提交,拉取代码
1. 克隆,提交代码
- git clone:远端仓库地址
- git remote add upstream: 上游远端仓库地址(fork代码的原地址)。添加上游远端仓库
- git add -A
- git commit -m '描述'
- git push
2. 从上游远端仓库拉取冲突代码,解决冲突
- git pull upstream master -r:把冲突部分拉下来,使用rebase合并代码,不会产生合并信息,不使用rebase确实回产生的。pull细节:把工作区的修改暂存起来,把远端代码和上一次提交合并,然后把暂存的修改再合并到分支上
- git add -A
- git rebase --continue:重新提交代码文件,不会产生额外的commit。如果合并的分支中存在多个commit,需要重复处理多次冲突。 只有处理冲突时候才能用这个命令。
- git push -f:强制提交代码
3. 修补最近一次的提交
- git commit —amend(-a):修补最近一次push
4. 拉取代码
- git pull 等价于 git fetch & git merge:这时从远端拉取代码,回产生一个合并日志,产生分叉
- git pull --rebase (-r):使用 git rebase 合并代码
二. 删除远端误提交代码文件
- git rm —cached test.txt:不删除本地文件的情况下,删除远端文件
- git rm -f test.txt:删除远端文件的同时删除本地文件
- git rm -r test:删除远端文件夹的同时删除本地文件夹
- 做完上述删除动作,直接commit就好,不用add
三. 撤销修改
- git reset --hard version:修改本地仓库版本
- git reset HEAD 文件:把提交到缓存区的代码,回退到本地工作区
- git checkout --文件:撤销本地工作区的修改
四. 标签管理
- git tag:列出所有标签
- git show v1.0:查看标签信息
- git tag v1.0 commit:给分支打标签。在后面添加commit信息,可以把标签打到以前的commit上
- git tag -a 标签名 -m '标签描述' 1094adb:给标签写上描述
- git tag -d v1.0:删除标签
- git push origin v1.0:提交标签到远程仓库
五. 分支管理
- git branch:列出所有分支
- git branch <branch>:创建分支
- git branch -av:显示所有远程、本地分支,并显示最后提交的commit信息
- git branch -d :小写时分支上的commit必须已经全部合并到其他分支;大写为强制删除
- git checkout :切换分支
- git checkout -b :创建并切换分支
- git merge -m '合并信息' :合并分支
- git merge --abort:放弃这次merge(同时也放弃pull)
六. diff
- git diff:比较修改后的文件和修改前的文件的区别
- git diff commit:比较工作区和指定提交之间的比较
七. log
- git log:查看日志
- git log --graph:查看提交历史图表
- git log --oneline:把提交信息整合到一行显示
- git log --stat:显示某次commit中添加行、删除行的总数
八. rebase
- git rebase --abort:放弃本次变基操作
- git rebase :基于某个提交(或分支)重新提交你的代码。在另一个分支提交修改代码,然后切换回master分支,执行命令,把另一个分支合并到master分支。并不会产生额外提交信息。
九. 初始化
- git init:初始化
- .gitignore:忽略提交文件
- README.md:代码描述文件
十. 暂存修改
- git stash:保存当前工作区到暂存区
- git stash list:列出当前保存的修改
- git stash pop:弹出保存的修改
十一. 一些心得体验
- rebase,实际上这个命令没这么难,我解说下。
- 当使用git rebase <branch>合并分支的时候。会把你当前的commit给去除,临时保存起来,然后把要合并的分支,从开始分叉的地方,全部搬到master分支上,然后把临时保存的commit放在头部,这样就变成了一条线。如果接下来再使用rebase,他会续借原来的分支commit,而不是放在头部
- 如果使用merge的话,会存在一个分叉,然后再合并到master上,多产生一个commit信息
master:commit1=>commit2
dev:dev1=>dev2
这两个分支使用rebase合并
commit1=>dev1=>dev2=>commit2,如果继续使用rebase,
commit1=>dev1=>dev2(dev分支上的commit全都会加入到这后面)=>commit2(master分支的commit全部会加入到这后面)
如果使用merge的话
commit1=>dev1=>dev2=>commit2=>merge dev(新产生一个commit信息,合并分支的)
dev3(从dev2产生分叉)
git一些实践命令,关于reabse和merge的区别在最后做了一个比较的更多相关文章
- Git的常用命令记录
Git的常用命令记录 1.与远程仓库建立连接,即关联一个远程库 git remote add origin git@server-name:path/repo-name.git; 2.查看当前分支 ...
- 『现学现忘』Git后悔药 — 34、git commit --amend 命令
目录 1.git commit --amend 命令说明 2.使用场景 (1)场景一 (2)场景二 3.git commit --amend 命令原理 这是我们Git中的第三种后悔药. 1.git c ...
- Git初级实践教程(图文)
关于Git Git的由来 Linux 的创始人 Linus Torvalds 在 2005 年开发了 Git 的原型程序.当时,由于在 Linux 内核开发中使用的既有版本管理系统的开发方许可证发生了 ...
- Git 最佳实践:分支管理
5月份,为统一团队git分支管理规范,刚开始准备自己写,在网上搜了下,发现不少不错的git分支管理实践.最后我为团队选择了这个git分支管理实践 A successful Git branching ...
- Git 少用 Pull 多用 Fetch 和 Merge
本文有点长而且有点乱,但就像Mark Twain Blaise Pascal的笑话里说的那样:我没有时间让它更短些.在Git的邮件列表里有很多关于本文的讨论,我会尽量把其中相关的观点列在下面. 我最常 ...
- GIT 版本控制常用命令学习汇总
GIT 版本控制常用命令汇总 git version 查看当前git版本信息 git help 获取全部命令帮助信息 git help <command> 获取指定命令帮助信息 git c ...
- git的一些命令行
以下代码均在命令行中执行:在目标文件夹目录下: 1.初始化一个Git仓库,使用git init命令. 2.添加文件到Git仓库,分两步: 第一步,使用命令git add <file>,注意 ...
- git的常用命令
简介 上篇讲解git的博客,在centos6.5中安装完成了github客户端,接下来我们来熟悉git的操作命令 1.查看自己机器中安装的git版本 [root@jacky conf]# git - ...
- Git基本常用命令
Git基本常用命令如下: mkdir: XX (创建一个空目录 XX指目录名) pwd: 显示当前目录的路径. git init 把当前的目录变成可以管理的git仓库,生成隐藏.git文件. git ...
随机推荐
- mysql 案例 ~ pt-xtrabackup 使用
一 简介:学习innobackup工具使用 二 功能: 备份全库/单库/单表 三 常用命令 一 全库 目的 每天日常备份 备份 innobackupex --defaults-file=/etc ...
- mongodb系列~mongodb慢语句(2)
一简介:今天遇到一个慢日志的排查和解决过程 二 版本:3.0.6 三 架构:分片集群 四 具体过程 1 程序响应很慢,具体日志寻找定点sql(mongodb慢日志记录在log日志里) awk '$NF ...
- ubuntu14.04 放开串口权限
可以用如下命令查看串口信息: ls -l /dev/ttyUSB*来查看相关的信息. 但是普通用户没有usb操作权限(函数open()打不开串口:refused),如果我们想在ROS程序里面打开串口, ...
- 【API】API函数创建用户,添加到管理组
1 学习目标 使用API添加用户可以绕过某些杀毒软件的限制. 2 编程思路 2.1 代码原理 使用NetUserAdd这个API添加普通权限的用户,NetLocalGroupAddMembers这个A ...
- UML和模式应用5:细化阶段(8)---逻辑架构和UML包图
1.前言 本章是从面向分析的工作过度到软件设计 典型的OO系统设计的基础是若干架构层,如UI层.应用逻辑(领域)层 本章简要考察逻辑分层架构和相关UML表示法 2.逻辑架构和层 逻辑架构 逻辑架构是软 ...
- 一个优秀的 ring buffer 或 cycle buffer 的实现代码
#define CIRCLE_BUFFSIZE 1024 * 1024#define min(x, y) ((x) < (y) ? (x) : (y)) struct cycle_buffer ...
- spring mvc context-param init-param 区别
init-param:mvc 配置文件context-param spring配置文件
- Go语言学习之路(持续更新中)
菜鸟 Go语言教程 教程(RUNOOB.COM):http://www.runoob.com/go/go-tutorial.html Go全球官网:https://golang.org/ (2018- ...
- Day5----------------------文件合并与文件归档
一.文件合并 1.命令: >:覆盖式 >>:追加式 例如:cat /etc/passwd > a.txt 把/etc/passwd下的内容合并到a.txt内,若没有文 ...
- STM32学习及应用笔记二:一次运算符优先级造成的错误
本人在最近一个项目的开发中,出现一个应为疏忽运算符优先级造成的问题,检查了很久才发现问题,所以觉得运算符的优先级问题还是有必要再研究一下.具体的问题是这样的,我采集了传感器的原始数据,然后会对数据进行 ...