2016年4月

pushd <path>    # 把当前目录压入堆栈,并切换至path
popd    # 切换至栈底目录。

至此 linux/win 用法一致,linux多了个 dirs 命令,可以查看当前目录堆栈情况。

显示出所有分支以及分支sha

git branch -v

显示出当前文件夹修改状态

git status -- .

批量提交已修改,已删除,新增,等状态文件

git commit -a

新建分支

git branch newb

切换分支

git checkout newb    # 这条命令同同时也是吧修改还原
git checkout file    # 根据 rep 恢复暂存区与工作区的修改
git checkout -b newb    # 新建分支并切换至

初始化git仓库

git init 
git init --bare    # 不带工作区

记录所有修改到暂存

git add -u
git add -u -- .    # 指当前目录下所有修改(包括删除)
git add -A stages All
git add . stages new and modified, without deleted
git add -u stages modified and deleted, without new

把当前工作区的所有修改打包起来,并恢复工作区到最近的commit状态 (注意,未版本控制的文件是不会被打包的)

git stash 
git stash -u    # 包括未版本控制的文件
git stash pop

删除 untracked files


git clean -f

连 untracked 的目录也一起删掉


git clean -fd

连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)


git clean -xfd

在用上述 git clean 前,墙裂建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删


git clean -nxfd
git clean -nf
git clean -nfd

一些问题

warning: LF will be replaced by CRLF in 的解决办法

git config --global core.autocrlf false    # 一般在win下使用。
git config --global core.autocrlf true    # win使用
git config --global core.autocrlf input    # linux/mac使用
true 表示出库转换为 `crlf` 入库为 `lf` ,`input` 表示出库默认,入库为 `lf`。这样保证仓库始终是 `lf` 状态。

中文路径问题

在中文情况下 git status是 “344272247345223201351234200346261202” 差不多这样的。
解决这个问题方法是:

git config --global core.quotepath false

平时是在 mac 和 win 下开发游戏的,然而编译出来的游戏与游戏资源是不在一起的,每次要运行游戏都得把资源拷贝到游戏包中再执行,有时候常常忘记拷贝出现莫名其妙的问题。最近看微博的时候发现有符号链接这东西,看起来很不错,可以把一个文件和另一个文件建立链接关系,访问A等价访问B,于是就试着把游戏资源直接链接到游戏包中,发现是可行的。

win

cd game/runtime/win32/ # 游戏包输出目录
mklink /d res ../../res # 建立符号链接,访问res等价访问game目录下的res
mklink /d src ../../src

mklink 命令中的 /d 是创建符号链接 /j 是创建符号联接 两者之间一字之差,尚未搞清楚它们的关系如何。/h 是创建硬链接 会增加原来文件的引用计数,只有引用计数为0才会被删除真实文件。

mac/linux

cd game/runtime/mac
ln -s ../../res res
ln -s ../../src src