美文网首页Git
git 操作 - 2

git 操作 - 2

作者: _挑灯看剑_ | 来源:发表于2016-10-24 17:07 被阅读0次

对于git的三个区的解释:

工作区 版本库(暂存区和分支)
工作区:

1.png
版本库:(暂存区 + 分支)
2.png

git的整个过程是这样:

1、不论在哪个分支上,我们添加文件 touch 12.txt,所有的分支是都可以看见的,不论在哪一个分支上,git status,都会提示有文件 12.txt 没有写入到版本库。
2、执行 git add . 此时,git将新添加的文件写入到暂存区,而且所有的分支都是可以看见的,在任何一个分支上执行,git status,都会有提示有文件没有提交到相应的分支。
3、git commit -m “message",执行该命令时,首先要选择,要在哪一个分支上提交。
git checkout <branch_name>,切换到相应的分支上,然后进行提交。即
git checkout dev_w_branch
git commit -m “add file to dev_w_branch”
此时,由于git checkout dev_w_branch 分支上,因此HEAD 指针指向 dev_w_branch分支上,将文件提交了该分支上。而在其他的分支下是看不见的。只有在这个命令操作完毕之后,各个分支才会有属于自己的文件。

master分支:

3.png
dev分支:
4.png
dev_w_branch 分支:
5.png
我们将文件commit到了dev_w_branch 分支下,因此将12.txt只有在dev_w_branch 分支下才能看到。

git分支回退

6.png

使用git log命令查看commit 的历史记录:
这里只要知道 commit id,都可以将HEAD 指针进行移动,因此可以进行回退历史,可以将HEAD指针向前后移动,即:git reset --hard <commit_id>。其实切换分支,git checkout dev ,是就是相当于将HEAD 指针移动到dev分支的最后一次提交上。

git stash使用

场景:目前正在 dev分支上进行开发,编写一个java文件,Login.java,但是这个文件并没有开发完成,因此并没有进行提交到dev分支上,目前你进行的操作是:
touch Login.java
**** code on Login.java
git add . (这个过程,所有的分支都可以看见,Login.java的修改还处于暂存区或者工作区,并不属于某一个分支)
而现在突然要更改一个bug,因此需要另开一个分支,更改bug,暂定分支的名字为bug_branch。


7.png

在dev分支上,不想提交没有做完的工作,但是又必须马上去另起分支修改bug。这时候,没有办法使用dev分支的HEAD指针回退,因为这个节点没有进行commit,在log中无法找到相应的commit id。因此 git stash就发挥作用了。
如果对没有完成的工作不进行提交,转手去另起分支,修改bug,当bug修改好之后,要提交bug_branch分支上的操作,这时就有问题了,刚才在dev分支上没有提交的工作,对于所有的分支都是可以看见的,因为他没有commit,目前还处在暂存区,因此,bug_branch 分支提交的时候,也会将dev分支上刚才没有做完的工作进行一并提交。

正确的做法是:
首先保护现场,将dev分支上的没有做完的工作保存起来(但不是提交),那么当前的dev分支还是只想dev分支上的最后一次提交commit,因此该分支依旧是干净的(git status)。然后转手在去另起bug_branch 分支,修改文件,进行提交,合并,然后删除 bug_branch 分支。
接下来,就该处理刚才在dev分支没有处理的工作,刚才使用 git stash保存起来了,现在要恢复,git stash pop命令,就将刚才没有提交的工作恢复,然后checkout到dev分支上继续处理。

相关文章

  • 查看git有哪些操作

    1.查看删除之外的git操作。git log 2.查看所有git操作。git reflog

  • 小众GIT

    1、git reflog: 操作记录,找回reset等误操作 2、git rebase --todo 3、git ...

  • git and github

    目录:1、git 、github 介绍2、git本地操作()3、git远程操作 1.git 、github、rep...

  • git基本操作 梳理

    git操作梳理一、git基本操作1.创建版本仓库 git init(.git目录)2.版本创建 git add ...

  • git常用操作命令

    git常用操作命令 1 git工作原理图 2 git远程操作 2.1 git clone 远程操作的第一步,通常是...

  • 周报 一

    Day 1 熟悉git的分支操作 初步了解MongoDB Day 2 熟悉Linux , git , vim操作 ...

  • Git如何检出指定目录或文件

    操作流程 1、git init (初始化git,生成.git文件) 2、git config core.spars...

  • git 基本操作

    git基本操作命令 1、克隆代码 git clone git@xxxxxx:xxxxxx/xxx.git2、查看...

  • git 分支操作

    1.简单操作 2.git pull、git push和git fetch操作 本地分支与远程分支存可以设定追踪关系...

  • 学习简记

    2018/2/26 git 的rebase 操作是什么意思, git 的checkout 和reset 操作的区别...

网友评论

    本文标题:git 操作 - 2

    本文链接:https://www.haomeiwen.com/subject/nfpluttx.html