一.git revert 与 git reset
看了一些文章的解释,对于我这样的初学者大多不是很容易明白。
下边介绍一下在我学会之后的理解,初学者的理解。
首先是一个项目。共有三次commit。
commit3 3
commit2 2
commit1 1
注:commit3是最新的提交。右边是版本号。
此时如果用git revert 2
则,将commit2 的改变还原,然后重新提交一个commit4,commit4是commit2的相反版本。此时就变成了。
commit 4
commit 3
commit 1
如果使用git reset 2 则变成:
commit 2
commit 1
git reset就是跳到各个版本,仅仅保留之前的提交和本次提交,如上所示。 git revert 仅仅是把跳到的那次提交还原后,其它的均不变。
官方语言就是:
git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留。
git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区。
二.linux环境下的gitlab ssh key 配置
首先执行命令:ssh-keygen -t rsa -C "自己的邮箱"
然后连续回车
出现以下代码:
Your identification has been saved in /home/aaa/.ssh/id_rsa.
Your public key has been saved in /home/aaa/.ssh/id_rsa.pub.
Your public key has been saved in /home/aaa/.ssh/id_rsa.pub.
下一步:
$cat /home/aaa/.ssh/id_rsa.pub
生成公钥:
ssh-rsa 。。。。。。。
下一步就是打开gitlab
/profile/keys Add an SSH key
将上边生成的公钥复制进去然后点击add key即可。
三.git分支问题
创建dev分支,然后切换到dev分支:git checkout -b dev.
分开写:创建 git branch dev 和 切换 git checkout dev.
假设当前有两个分支,主分支master和dev.
使用git branch查看所有分支,并且可以知道当前位于哪一个分支.(当前分支前有星号标记)
git branch -d dev 删除分支dev.
git branch -D dev 强制删除分支dev.(做了修改但是没有合并的分支)
如何合并分支:git merge dev.即可把指定分支合并到当前所在分支.
区分一个自己有疑问的问题:
1.如果当前只有分支master,创建并切换到分支aaa,然后对代码作了修改但是并没有使用git add 和 git commit,此时切换到master,则会把
aaa的修改同步到master.
2.如果进一步使用了git add,则同样会把修改同步到master.
3.如果进一步使用了git commit,则不会同步.
四.修改最后一次commit注释内容 git commit --amend
git commit --amend 用来修改最后一次commit注释且该commit没有提交至服务器.
同时可以实现两次修改共用一个commit.
使用方式:
git add 当前修改内容(可有可无)
git commit --amend
编辑最后一次的commit注释内容
操作完成后:如果当前有修改内容,相当于将本次修改与之前最后一次修改合并作为一次commit提交.
如果当前没有修改内容,直接git commit --amend ,相当于修改最后一次commit注释内容.
五.git 常见命令
1. git checkout sidney 本地直接切换远程分支(无论本地有无远程分支)。
2. 获取最新版本有两种方式拉取git pull 和获取git fetch,区别在于git fetch 从远程获取最新版本到本地但不会自动合并(merge)。
3. git stash 暂存当前正在进行的工作,git stash pop回到之前正在进行的工作。
详情可参考:http://blog.csdn.net/wh_19910525/article/details/7784901