Git 常用操作

Git 的最基础使用可以查看我的另一篇博客:使用Git在GitHub上托管程序

下面是讲 Git 使用的一些常用操作,更多请查看:git-scm教程

如何定位到历史版本

想我们在写代码时候,数次修改并提交 commit,如果在这个过程中我们后悔了,想回到当初的某一个 commit 点应该如何实现呢?

三种方式:

1】以目标 commit 为基础新创建一个分支,并切换到分支上去,这样并不破坏 base 分支上的任何提交内容,包括你目标 commit 之前的提交,以及目标 commit 之后的提交。

例子:你有一个 base 分支,上面有 1/2/3/4 四个 commit,你现在突然后悔提交了 3/4 两个 commit,或者某种原因你需要以 2commit 为基础,进行另外某个功能的开发。这时候方法 1 执行git checkout 2commitID -b div就是以 base 分支的 2commit 为基础,创建了子分支 div,并切换到子分支上去,原来的 base 分支并没有受到影响,这时候你也就能在子分支 div 上看到你的历史代码了。


2】在当前分支上撤销目标 commit 之后的所有提交,类似于系统还原。

例子:还是上面的 base 分支有 1/2/3/4 个 commit,这时候执行git reset --hard 2commitID就是放弃 3/4commit,回退到 2commit,这时候你也能看到历史代码,但是在 2 commit 之后的 3/4commit 就永久的丢失了。


3】以执行过的指令为目标,进行撤销操作,类似于第二种方法。

// 方法1
git log (branch) // 查看commit的ID号
git checkout commitId -b 新branch名称 // (在指定commit的基础上创建新分支)

// 方法2
git log (branch)
git reset --hard (commit id) // 版本回滚

// 方法3
git reflog 
git reset --hard (command id) // 命令撤销

如果刚开始接触 git,对 git 的操作不熟悉,只习惯图形界面,可以参考:github代码如何定位到历史版本(历史commit点)

git commit 之后,想撤销 commit

写完代码后,我们一般这样:

git add --all
git commit -m "本功能全部完成"

执行完 commit 后,想撤销 commit,可以执行:

git reset --soft HEAD^

这样就成功的撤销了你的 commit,注意,仅仅是撤回 commit 操作,您写的代码仍然保留。HEAD^ 的意思是上一个版本,也可以写成 HEAD~1。如果你进行了 2 次 commit,想都撤回,可以使用 HEAD~2。

参数说明:

  • --mixed

    意思是:不删除工作空间改动代码,撤销 commit,并且撤销git add --all操作。这个为默认参数,git reset --mixed HEAD^git reset HEAD^效果是一样的。

  • --soft

    不删除工作空间改动代码,撤销 commit,不撤销 git add。

  • --hard

    删除工作空间改动代码,撤销 commit,撤销 git add。注意完成这个操作后,就恢复到了上一次的 commit 状态。

补充:

顺便说一下,如果 commit 注释写错了,只是想改一下注释,只需要:

git commit --amend

此时会进入默认 vim 编辑器,修改注释完毕后保存就好了。

git 合并分支

假如我们现在在 dev 分支上,刚开发完项目,执行了下列命令:

git  add .
git  commit -m '提交的备注信息'
git  push -u origin dev

想将 dev 分支合并到 master 分支,操作如下:

// 1.首先切换到 master 分支上
git checkout master
// 2.如果是多人开发的话 需要把远程 master 上的代码 pull 下来
git pull origin master
// 3. 然后我们把 dev 分支的代码合并到 master 上
git merge dev
// 4.然后查看状态
git status
// 5.执行提交命令
git push origin master

解决合并冲突:

有时候合并操作不会如此顺利。 如果你在两个不同的分支中,对同一个文件的同一个部分进行了不同的修改,就会产生合并冲突。

Git 会在有冲突的文件中加入标准的冲突解决标记,这样你可以打开这些包含冲突的文件然后手动解决冲突。

在你解决了所有文件里的冲突之后,对每个文件使用git add命令来将其标记为冲突已解决。 。如果你想使用图形化工具来解决冲突,你可以运行git mergetool,该命令会为你启动一个合适的可视化合并工具。


参考:

github代码如何定位到历史版本(历史commit点)

git commit之后,想撤销commit

git合并分支(一看就懂)

3.2 Git 分支 - 分支的新建与合并


原文地址:https://www.cnblogs.com/linuxAndMcu/p/13650871.html