1. 创建合并分支

1. 分支介绍

    git 每次提交都是一条时间线,称之为分支,在 git 这个分支为主分支 master 分支。

     HEAD 严格来说并不是指向提交,而是指向 master ,master 才是指向提交。所以 HEAD 指向当前分支。

2. 分支提交   

    当 git 创建分支,例如 dev 事,新建一个 dev 的指针,改 HEAD 指向 ,工作区的文件没有任何变化,不过从现在开始, 对工作区的修改和提交就针对 dev 分支了,如新的一次提交 dev 指针向前移步, 而 master 指针不变。

    之后我们就可以,合并分支删除 dev 

3. 代码练习

// 创建 dev 分支, 然后切换到 dev 分支;

    git checkout -b dev

// git checkout 命令加上 -b 参数表示创建并切换,相当于一下两条命令

    git branch dev

    git checkout dev

// 然后使用 git branch 查看分支,当前分支前面会有一个 * 号。

    git branch 

// 切换回 master 分支

    git checkout master

// 删除分支

    git branch -d dev

4. 冲突处理

// 合并分支

    git merge featurel

    $CONFLICT (content): Merge conflict in readme.txt
    $Automatic merge failed; fix conflicts and then commit the result.

告诉我们 readme.txt 文件发生冲突,必须手动解决冲突

// git status 也可以告诉我们冲突的文件

    git status 

$On branch master
$Your branch is ahead of 'origin/master' by 2 commits.
  (use "git push" to publish your local commits)

$You have unmerged paths.
  (fix conflicts and run "git commit")
  (use "git merge --abort" to abort the merge)

$Unmerged paths:
  (use "git add <file>..." to mark resolution)

    both modified:   readme.txt

$no changes added to commit (use "git add" and/or "git commit -a")

我们可以直接查看 readme.txt 内容

git 用 <<<<<<< ======= >>>>>>> 标记出不同分支内容,修改后保存

再提交:

    git add .

    git commit -m"修改文件"

// 用 git log 查看合并情况情况

    git log -graph -pretty=oneline -abbre-commit 

// 最后删除分支

    git branch -d featurel

    

       

git 用了好久,但是都比较粗浅,记忆并不深刻,准备好好整理一下

Git 第一步

1. 每次初始化一个厂库,很简单 

git init 

2.  新建一个文件,把文件添加到厂库, 命令 git add

git add 文件名

3. 用命令 git commit 提交到厂库

git commit -m "第一次提交" // -m "这里是提交的描述"

-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

嫌麻烦不想输入-m "xxx"行不行?确实有办法可以这么干,但是强烈不建议你这么干,因为输入说明对自己对别人阅读都很重要。

git commit 命令执行成功后会告诉你,1个文件被改动(我们新添加的 文件),插入了两行内容( 有两行内容)。

为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件

Git 时光机回退

回到过去

1. 在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

git reset --hard HEAD^

2. 最新的那个版本 已经看不到了!好比你从21世纪坐时光穿梭机来到了19世纪,想再回去已经回不去了,肿么办?

 办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊 就可以指定回到未来的某个版本。

git reset --hard 版本号  

版本号没有必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为 Git 可能会找多个版本号,就无法确定是哪一个了

Git的版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针。 现在,你回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?找不到新版本的commit id怎么办?

在Git中,总是有后悔药可以吃的。当你用git reset --hard HEAD^ 回退到 某个 版本时,再想恢复到 以前版本 ,就必须找到 commit id。Git提供了一个命令git reflog用来记录你的每一次命令。


git reflog

  • HEAD 指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令 git reset --hard commit_id。

  • 穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。

  • 要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。