Git 命令小记录

如果修改了一个文件,在未 git add 之前,可以利用 git diff 查看修改前和修改后的对比。


如果修改了一个文件,在 git add 之后,git commit 之前,可以利用 git diff HEAD filename 查看本次修改和版本库中的对比。


如果对修改的文件不满意,想要撤销修改,在未 git add 之前,可以直接利用 git checkout – filename 撤销本次修改。


如果对修改的文件不满意想要回退到修改前的内容,而且已经执行了 git add 命令,可以首先执行 git reset HEAD filename 将修改的版本从暂存区中撤销,然后再利用 git checkout – filename 撤销对工作区中的修改。通过上面两步,即可将一个已经 git add 的文件回退到未修改的版本。


利用 git reset –hard HEAD^ 可以将版本回退一次,利用 git reset –hard HEAD^^ 可以将版本回退两次,如果想让版本回退 100 次,可以使用 100 个 ^,不过也有一种简洁的写法,就是 git reset –hard HEAD~100,另外还可以利用 git reset –hard comment_id 回退到指定版本。


利用 git log 查看最近提交目录,在这里就可以查到上述的 comment_id,利用这个我们可以回退到之前的任何版本。如果我们回退到之前的版本,再利用 git log 命令就无法看到之后的版本记录了,这个时候可以利用 git reflog 查看所有的命令记录,在这个记录中我们就可以查找到使用过的所有命令,也就可以再次找到之后版本的 comment_id了。


当我们没有完成自己的代码之前并不想将其合并到主分支(master 分支)上去,所以这个时候我们可以开出一个子分支工作,这样的话我们既可以每天提交代码保证代码不丢失,又不影响主分支的内容。

创建一个子分支的命令如下: git checkout -b dev,代表的意思是,创建一个名为 dev 的分支并且将当前工作的分支切换到 dev 分支。上面这段命令其实是两条命令的合写,第一条便是 git branch dev,意思是创建 dev 分支, 第二条是 git checkout dev,意思是将当前分支切换到 dev 分支。

利用 git branch 可以查看所有的分支,前面加 * 的是当前工作的分支。

既然创建了子分支进行工作,那么迟早有工作完成将子分支合并到主分支的那一天,所以首先我们需要利用 git checkout master 将工作分支切换回 master 分支,然后利用 git merge dev, 将 dev 分支合并到 master 分支上。再之后,我们就可以使用 git branch -d dev 删除 dev 分支了,因为它的使命已经完成了。

注意,如果你还没有合并分支,就想把子分支删除掉,这个时候默认是不会成功的,git 会友情提示你还没有合并分支,所以如果我们想强制删除一个分支,可以利用 git branch -D <name>命令。


上面所说的 git merge dev 其实就是将 master 分支的指针直接指向 dev分支的末尾(Fast Forward形式),这样的话,我们再直接删除 dev 分支,那么关于 dev 这个分支的信息就全部被删除了,那么我们的 master 是如何到达当前位置的,我们就一无所知了。

为了知道这一次合并历史,我们可以改用 git merge –no-off -m “merge dev to master” dev–no-of 用于禁止使用 Fast Forward 模式,而 -m 就代表着 commit 这次合并操作,这样我们能在合并历史中找到这次合并过程了。

坚持原创技术分享,您的支持将鼓励我继续创作!