分支管理

几个基本操作

  • git add
    命令实际上就是把要提交的所有修改放到暂存区(Stage)
屏幕快照 2016-10-24 下午11.21.48.png
  • 执行git commit
    就可以一次性把暂存区的所有修改提交到分支
屏幕快照 2016-10-24 下午11.21.26.png
  • 管理修改
    Git跟踪并管理的是修改,而非文件
    什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。
    第一次修改 -> git add -> 第二次修改 -> git add -> git commit
    每次修改,如果不add
    到暂存区,那就不会加入到commit
    中。

  • 撤销修改
    场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file
    场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file
    ,就回到了场景1,第二步按场景1操作。
    场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

  • 删除文件
    一般情况下,你通常直接在文件管理器中把没用的文件删了,这个时候,Git知道你删除了文件,因此,工作区和版本库就不一致了,git status
    命令会立刻告诉你哪些文件被删除了。
    现在你有两个选择,一是确实要从版本库中删除该文件,那就用命令git rm
    删掉,并且git commit
    现在,文件就从版本库中被删除了。

另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- test.txt
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

远程仓库

  • Github是个提供Git仓库托管服务的网站,本地Git仓库和Github仓库之间传输通过SSH加密。
  • git clone 是把Github远程仓库克到自己电脑上的本地仓库
  • $ git remote add origin git@github.com:michaelliao/learngit.git 用于将远程仓库和自己本地已存在的仓库关联
  • git push命令,把当前分支master推送到远程
  • 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    $ git push -u origin master
    从现在起,只要本地作了提交,就可以通过命令:
    $ git push origin master
    把本地master分支的最新修改推送至GitHub

分支管理

  • 每次提交(commit),Git都把它们串成一条时间线,这条时间线就是一个分支。默认master一个分支。
  • 当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
$ git checkout -b dev
Switched to a new branch 'dev'

这条命令等价于
$ git branch dev$ git checkout devSwitched to branch 'dev'
转换完成后,可以用命令查看当前处于哪个分支
$ git branch* dev master

屏幕快照 2016-10-24 下午11.40.58.png

从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变:


屏幕快照 2016-10-24 下午11.41.29.png
$ git add readme.txt 
$ git commit -m "branch test"
[dev fec145a] branch test 1 file changed, 1 insertion(+)

假如我们在dev上的工作完成了,就可以把dev
合并到master上。Git怎么合并呢?最简单的方法,就是直接把master指向dev的当前提交,就完成了合并:

$ git checkout master
Switched to branch 'master'

$ git merge dev
Updating d17efd8..fec145a
Fast-forward readme.txt | 1 + 
1 file changed, 1 insertion(+)
屏幕快照 2016-10-24 下午11.42.45.png

合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了一条master分支:

$ git branch -d dev
Deleted branch dev (was fec145a).
屏幕快照 2016-10-24 下午11.43.18.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 远程仓库 到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题...
    归云丶阅读 5,969评论 0 5
  • 本系列教程来自廖雪峰的官方网站,现在搬运过来,目的帮助自己和小白学习收藏!附赠:常用git命令清单 目录 前言 创...
    Blizzard_liu阅读 4,822评论 0 4
  • 分支概述 Git里有一个很神奇的特性叫分支。说到分支,你脑海中的第一印象可能是火影忍者里的影分身术:复制多个本体。...
    你好星期四阅读 4,383评论 0 0
  • 前言 分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SV...
    嘟爷MD阅读 9,254评论 3 20
  • 十九届一中全会感怀 核心团队,承前启后。 千秋伟业,肇始丁酉。 回望征途,慨当以歌。 人民信任,担当重托。 中国方...
    查德荣阅读 2,972评论 0 0

友情链接更多精彩内容