关于 git
git 和 SVN 是开发过程中最常用的两款配置管理工具,版本控制、开发协作都少不了它们。特别是 git 可以直接对 github 上的仓库代码进行拉取和管理, Unreal Engine 也加了 git 的适配。
SVN 的使用基于 tortoiseSVN 的可视化界面已经很熟悉。但是对于 git 的使用,我还是小白,因此有必要记录一些必要的命令。
与 SVN 不同的是,git 除了本地仓库和远程仓库,还有一个缓存区的概念。因此在配置、提交时都会多一点点要注意的点。 一个更新的逻辑是:
- 在IDE中所作的更改→commit→本地仓库
- 本地仓库→push→远程仓库
常用命令
拉取仓库代码
首次拉取——git clone
默认在当前目录下创建和版本库名相同的文件夹并下载版本到该文件夹下
git clone <远程仓库的网址>
指定本地仓库的目录
git clone <远程仓库的网址> <本地目录>
-b 指定要克隆的分支,默认是master分支
git clone <远程仓库的网址> -b <分支名称> <本地目录>
git chechout
检出命令,用于创建、切换分支等。
切换到已存在的指定分支
git checkout <分支名称>
创建并切换到指定的分支,保留所有的提交记录,等同于 “git branch” 和 “git checkout” 两个命令合并
git checkout -b <分支名称>
创建并切换到指定的分支,删除所有的提交记录
git checkout --orphan <分支名称>
替换掉本地的改动,新增的文件和已经添加到暂存区的内容不受影响
git checkout <文件路径>
更新
git pull
从远程仓库获取最新版本。
git pull
提交
git commit
把暂存区中的文件提交到本地仓库
git commit
把暂存区中的文件提交到本地仓库中并添加描述信息
git commit -m "<提交的描述信息>"
把所有修改、已删除的文件提交到本地仓库中,不包括未被版本库跟踪的文件,等同于先调用了 “git add -u”
git commit -a -m "<提交的描述信息>"
修改上次提交的描述信息
git commit --amend
git add
把要提交的文件的信息添加到暂存区中。当使用 git commit 时,将依据暂存区中的内容来进行文件的提交。
git add <文件路径>
添加所有修改、已删除的文件到暂存区中
git add -u [<文件路径>]
添加所有修改、已删除、新增的文件到暂存区中,省略 <文件路径> 即为当前目录
git add -A [<文件路径>]
查看所有修改、已删除但没有提交的文件,进入一个子命令系统
git add -i [<文件路径>] git add --interactive [<文件路径>]
git push
把本地仓库的分支推送到远程仓库的指定分支
git push <远程仓库的别名> <本地分支名>:<远程分支名>
删除指定的远程仓库的分支
git push <远程仓库的别名> :<远程分支名> git push <远程仓库的别名> --delete <远程分支名>
git cherry-pick
把已经提交的记录合并到当前分支。
git cherry-pick <commit ID>
git revert
生成一个新的提交来撤销某次提交,此次提交之前的所有提交都会被保留。
git revert <commit ID>
配套
git init
初始化本地仓库,在当前目录下生成 .git 文件夹
git init
git status
查看本地仓库的状态
git status
以简短模式查看本地仓库的状态。会显示两列,第一列是文件的状态,第二列是对应的文件
文件状态:A 新增,M 修改,D 删除,?? 未添加到Git中
git status -s
git remote
列出已经存在的远程仓库
git remote
列出远程仓库的详细信息,在别名后面列出URL地址
git remote -v
添加远程仓库
git remote add <远程仓库的别名> <远程仓库的URL地址>
修改远程仓库的别名
git remote rename <原远程仓库的别名> <新的别名>
删除指定名称的远程仓库
git remote remove <远程仓库的别名>
修改远程仓库的 URL 地址
git remote set-url <远程仓库的别名> <新的远程仓库URL地址>
git branch
列出本地的所有分支,当前所在分支以 “*” 标出
git branch
列出本地的所有分支并显示最后一次提交,当前所在分支以 “*” 标出
git branch -v
创建新分支,新的分支基于上一次提交建立
it branch <分支名>
修改分支名称
如果不指定原分支名称则为当前所在分支
git branch -m [<原分支名称>] <新的分支名称>
强制修改分支名称
git branch -M [<原分支名称>] <新的分支名称>
删除指定的本地分支
git branch -d <分支名称>
强制删除指定的本地分支
git branch -D <分支名称>
好用tips
由于种种原因, 国内访问 github 可能会很慢 或者根本无法访问, 或者克隆到一半挂掉, 可以在 http://github.com
后面添加.cnpmjs.org
。
http://github.com.cnpmjs.org 同步了github的代码, 国内速度杠杠的
git clone --recursive https://github.com.cnpmjs.org/CesiumGS/cesium-unreal.git