世界的过客

每个人获得的东西都恰好是他值得获得的东西

Git手记

经常碰到提交信息写错…或者commit后临时又要添加文件的操作?

那么可以这样: 先提交forgotten_file

$ git  add forgoten_file

完了再

$ git commit --amend

这样就可以把忘记的补上了,同时还可以修改说明

git commit --amend命令需要的是提交的文件快照和之前一样,

所以上面的添加文件要在git commit之前。

总有些文件会一不小心add进暂存区内,取消暂存区的文件?

在git status状态会有相应的信息提示,是git reset HEAD

已经commit了,需要取消跟踪?

总有不小心跟踪了不该跟踪的文件的时候,这个时候需要从cached删除文件 git rm --cached file就派上用场了,如果是整个目录,那么这时候 可以参考rm命令的参数。。 -rf 都派上用场了你没看错。。 git rm -r --cached files/极其好用。。整个文件夹都被干掉了。

公司变土豪了,买github私有库了?

转换仓库,从gitlab到github

git remote add upstream ssh://git@gitlab.xx.:workspace/project/pyclear.git git remote set-url origin git@github.com:xxx/pyclear.git

note: .git前的pyclear是Repositories,别误解

想做点commit点省的误删,但是那么多commit又很烦?

最近从阿驹那学了一招

git rebase -i 32db1a7e1....

git log找到你不想要保留的之前那个的hash,然后使用上面这条命令。 就能进入一个编辑状态,然后再依据编辑状态的提示处理就ok了。很简单的。

经常忘记你对当前的代码干了啥git操作?

使用版本管理工具经常发生的一件事是,你对代码干了啥可以清楚的知道,但是 维护过程中你使用了什么git操作,不知道了。这时候有几个做法,一个是history命令 可以看出你之前的操作,但是如果时间久一点,那么命令一多你就难找了。 git reflog 可以列出你之前的所有git操作,但是这个也是有时限的,好像是一个月,不过已经够了。

代码出bug了。不知道谁干的?

有时候会有冲突说,这bug是xxx写的,然后xxx不服。有版本管理很简单, 能精确到某一行代码的作者是谁。 git blame file 就能知道谁干的了。

查看log想倒过来?

看代码的时候我喜欢一个commit看过去,但是有些commit多了log会很长于是log的参数 --reverse就派上用场了: git log --reverse 这命令会把commit按时间线从第一个开始递增展示

只拉某一个分支

由于我将博客的md文件放在github博客仓库的dev分支,在外的时候不想把build好的html也搞下来所以要指定clone分支 git clone -b <branch> <remote_repo>

分支重命名

重命名分支 git branch -m <oldname> <newname> 重命名当前分支 git branch -m <newname>

命令行删除远程分支

查看远程分支 git branch -r 删除远程分支 git push origin :want_delete_branch_name

拆分子模块,并修改依赖

git submodule add 仓库地址 路径

git clone 的工程带有submodule时,因为并不会自动去拉取子模块 需要执行: git submodule update --init --recursive

.gitignore的写法

  • 所有空行或者以注释符号#开头的都会被Git忽略
  • 可以使用标准的glob模式匹配(shell所使用的简化略的正则表达式)
  • 匹配模式最后跟反斜杠(/)说明要忽略的是目录
  • 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号取反

同步fork库

经常会记不住同步的方式,特地记录下其实很简单 git remote add upstream URL git fetch upstream git merge upstraem/upstream