dengal3 / log

record daily bugs :p
0 stars 0 forks source link

2016-05-29-git-record #4

Open dengal3 opened 8 years ago

dengal3 commented 8 years ago

今天遇到了好几个git上面的问题,记录一下。

git push的空格

git push origin ailin:front-end-dev 把本地的ailin分支上的内容推到远端的front-end-dev上。注意冒号两边不能有空格,因为我们tab补全的时候会自带了空格的,这点小细节要注意一下。

在一台电脑上面使用多个github账号提交

关键步骤:建立新的ssh,在git仓库中设置user.email

第一步骤网上有很多详细的介绍,这里就不介绍了。

然后第二步的话就比较关键,网上提到的人也比较少。 今天做了小实验测试了一下,在ssh都已经设置好的情况下,网上很多说的什么git remote add second git@second_host:xxx/xxxxx.git 这样的一般是不需要的。要切换用户账号做commit提交,关键在于git config user.email ****@***.com这里。这里不设置好,提交的commit还是归到原来的global中设置的账号中。这点要切记。

git 版本回退

版本回退对于我来说是已经不是一个陌生的话题了。手速太快,commit不过脑,所以经常要回退orz。今天简单总结一下,方便日后查看。

版本回退有好几种场景下的版本回退。

  1. 做仓库内容的回退
  2. 做远端commit的回退

第一种还好,祸害还不深。常见的就是用 git resetgit revert命令。

 $ git reset --hard 07edf(版本号,通过git log可以看到)
 $ git reset --hard HEAD~1(表示回退到在当前head指针指向的版本往回数第几个版本,真绕口)

--hard 并不是唯一的选择,还有--soft,前者是回退了,并且你做的所有修改都没有了,后者是把你的参考退到这个commit时刻的状态,你做的修改实际上还是有的,只是不放进缓冲区了。

git revertgit reset作用很像,但是确实不一样。 git revert需要你指明了回退到哪个版本,然后它给你把仓库回退到那个状态,并且你所做的修改也是没了的,和--reset很像,同时会产生一个commit,这个commit就是专门revert的。

前面都是在做仓库内容的回退,就是你是想把你的仓库里面的文件变回你原来的样子。

但是如果我要做的是commit的回退呢,就是我不希望在commits中出现我的记录。 那就只能在本地做好版本回退以后,git push --force,强迫远端版本回退。当然这肯定会有很多副作用的,假设你的队友在你现在回退的commit下已经做了commit了呢等等这样的情况。

当然,这个远端commit回退场景比较特殊,一般人也不会想去消除commit的,这里只是个人遇到这个需求所以稍作记录。

以上。