简单在一个目录下拉取别人的一个工程
1.在任何一个目录下新建一个文件夹
比如:work,然后cd 切换到工作目录
2.仓库初始化
git init
3.从某个地址拉取工程到自己的工作目录
git clone [email protected]:2dxproj/AdventureEliminate.git
备注:比较大的工程往往用http协议下载不下来,这个时候可以用ssh协议,添加公钥,然后就可以拉取到指定目录下。我开始用http协议拉取了6次,一直出错,因此这个很重要!
4.git学习资料
官方文档
https://github.com/progit/progit/tree/master/zh/
廖雪峰git学习
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
git最佳实践
http://www.ruanyifeng.com/blog/2012/07/git.html
git官网权威解释
http://git-scm.com/book/zh/v1
忽略文件等解释
https://juejin.im/post/58c7a4cf61ff4b005da83c42
秘钥生成等
https://juejin.im/entry/5809dbc42f301e005c2f27d9
自己创建项目,并且推送到git上
1.第一次新建项目
在git上先新建项目
2.cd到想要工作的目录下
然后git clone下来新建的项目
3.将用ide比如:pycharm新建python项目,然后将新的项目添加到新建的项目中
提交更改,推送
4.推送
git config --global push.default matching
git push
Username for 'https://git.oschina.net': jianan
Password for 'https://[email protected]':数字+拼音
这样才可以推送上去
mac终端配置
http://git.oschina.net
iterm2
https://iterm2.com
oh my zsh
http://ohmyz.sh
Homebrew
http://brew.sh/index_zh-cn.html
拉取
➜ work git:(master) ✗ git submodule update --init
➜ work git:(master) ✗ cd naval
➜ naval git:(master) ✗ git submodule update --init
Submodule 'frameworks/cocos2d-x' ([email protected]:young40/cocos2d-x.git) registered for path 'frameworks/cocos2d-x'
Cloning into 'frameworks/cocos2d-x'...
remote: Counting objects: 11975, done.
remote: Compressing objects: 100% (7566/7566), done.
命令行下面的快捷键
tab按键是补全作用
gst 查看状态
l 查看文件目录
fetch 分支相关
工程运行
拉取保证得到最新的资源
cd ~/Documents/work/naval_design
git pull 拉取
当遇到冲突时,这样可以修改冲突
git difftool src/model/LocalData.lua
当git diff直接这样子写不加参数的话,会直接显示出来该更前后对比,因此首先执行它比较好。
git diff . 这样可以直接查看文件前后的改动,非常实用
配合gst来查看状态
git checkout src/model/LocalData.lua 这样回退状态
s 发布
alias s="$COCOSTUDIO publish -s -f ~/Documents/naval_work/naval_res/proj/ui/ui.ccs -o ~/Documents/naval_work/naval/res"
可见s是当在cocostudio中修改了资源时,需要发布到naval/res下的ui中,可见它只是只发布csb。如图所示:
e 加密拷贝(花费大概1分钟,时间较长,比如当增加图片时使用,因为要拷贝到资源中)
alias e="cd $NAVAL_JAVA_DIR && java -jar exportExcel.jar && date && cpskip && cd -"
public static void main( String[] args )
{
copyRes( );
generateExcel( );
generateErrorNo();
generateText( );
generateModelAndCommand( );
generateResMetadata( );
<span style="white-space:pre"> </span>encrpytOutputRes( );
}
public static void copyRes(){
System.out.println( "开始复制res...." );
File srcFile = new File( "../../../../naval_res/res" );
File destFile = new File( "../../../res" );
FileUtils.copyDirWithout( srcFile, destFile, "." );
System.out.println( "复制res结束...." );
}
将naval_res/res下资源
拷贝到: naval/res下
可见e命令是将除了ui之外的资源拷贝到naval_res下。
其余的代码是拷贝excel,command协议等等内容了。
git push推送
naval_design也要保持为最新的
每次换ip,删除文稿下的game.bin文件,然后重新运行即可。
在xcode中运行mac端naval_desktop 把c++代码编译好
运行lua端进行打包
搜索 the_silver_searcher安装
brew install the_silver_searcher
cd /Users/jianan/Documents/work/naval_res
ag -i 搜索内容
修改UI
首先退出cocostudio
naval_res git:(master) gst
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: proj/ui/ui.ccs
no changes added to commit (use "git add" and/or "git commit -a")
➜ naval_res git:(master) ✗ git checkout proj/ui/ui.ccs
➜ naval_res git:(master) gst
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
➜ naval_res git:(master) git pull
Already up-to-date.
➜ naval_res git:(master) gst
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
➜ naval_res git:(master)
修改lua及其资源文件并提交
git add 需要提交的文件
gst
git commit -m "修改:..." (这个只是提交到本地库,必须进行下面的git push)
git pull
:q (这个提交的过程中偶尔用到)
git push (必须这样才会提交到服务器)
命名规则
btn_ => Button
lbl_ => BitmapFontLabel
lbl_ => Text
img_ => Image
spr_ => Sprite
node_ => Node
pnl_ => Panel
var_ => 其他类型
chk_ => CheckBox
pag_ => PageView
lod_ => LoadingBar
sld_ => Slider
inp_ => TextField
par_ => Particle
til_ => Map
adi_ => Audio
scr_ => ScrollView
去公司首先做的事情
1.cd /Users/jianan/Documents/work/naval
git pull
2.cd /Users/jianan/Documents/work/naval_design
git pull
3.cd /Users/jianan/Documents/work/naval_res
git pull
4.发布资源
s && e
说明:e命令下,如果jar包不能执行,那么:
cd /Users/jianan/Documents/work/naval/frameworks/tool/warship
java -jar /Users/jianan/Documents/work/naval/frameworks/tool/warship/exportExcel.jar
submodule 托管项目
1.在任何一个目录下新建一个文件夹
比如:work,然后cd 切换到工作目录。(切换到的目录,以后再进行操作的话,就会在当前目录生效)
2.仓库初始化
git init
3.submodule初始化
git submodule init
4.将http地址上的库添加到submodule上
git submodule add (http地址)
excel命令
1.打开指定路径excel open excel/.DictMeta.xlsx
回退所有状态
git checkout .
当后面有参数时,如果是目录,则切换到此目录,如果是lua文件,则回退lua文件。
查看日志
git log --author="jianan" 查看具体人提交的日志
git log 查看所有人提交日志
git log -p XXX(hash值) 查看具体hash提交的东西
查看隐藏文件
cd /Users/jianan/Documents/naval_work/naval_design/excel
ls -a即可查看隐藏文件
open .DictMeta.xlsx
git 提交规则
1.不是我改的,不能提交。git status后,一定先checkout,再拉取。只提交自己修改的!!!
2.打包资源前,一定要保证资源是整洁的!发现修改了就恢复掉。
adb用法小结
➜ ~ /Users/jianan/Documents/Android/sdk/platform-tools
➜ platform-tools ./adb logcat | grep cocos
platform-tools ./adb install /Users/jianan/Desktop/naval-release-signed\
git merge
1.分支合并(只合代码库和加密库.例如:合并V1.2.3Oversea到master上)
cd naval(V1.2.3Oversea)
git pull
cd naval(master)
git merge V1.2.3Oversea
解决冲突
cd naval_encrypt(V1.2.3Oversea)
git pull
cd naval_encrypt(master)
git merge V1.2.3Oversea
解决冲突
合并技巧:当你确定要用V1.2.3Oversea上的东西,比如资源时,可直接将其覆盖到master上,然后提交更改即可。
2.cherry-pick命令合并部分修改(例如:将V1.2.3Oversea上某个提交合并到master上)
cd naval(V1.2.3Oversea)
git pull
查看提交的commit hash值,例如是XXX
cd naval(master)
git cherry-pick XXX
解决冲突
3.删除分支(先删除本地分支,再删除远程分支 例如:删除V1.4.5分支,删除分支前必须先在其它分支)
gsfr git branch -D V1.4.5
gsfr git push origin :V1.4.5
4.回退到某个提交(可以达到撤销merge等)
git checkout hash
git checkout V1.4.7恢复
查看一个具体的提交的commit hash值(已经提交git的也撤销远程的) 例如XXX
正确(注意后面那个origin dev 需要指定下远程分支):
git reset --hard 0cde337c48fe626cd25d4e2c0ff5f67786f2d978 && git push -f origin dev
错误:
------git reset --hard <commit_id> && git push origin HEAD --force-----
经过验证:用这个错误的,看着是回退了,但是执行git pull又拉取下来了。尴尬!!!
撤销merge还可以用: git merge --abort
(我发现别人还git checkout 到commit hash值,然后又这样打入分支名称来恢复)
5.撤销commit(git add .后撤销某个commit)
git reset .
6.在本地创建并且同步服务器上别人刚创建的分支(比如:我在自己mac上创建V1.4.5,同时在imac上拉,发现是拉不到V1.4.5的,但是能直接切换; 或者别人创建了V1.4.7分支,我在我电脑上想切换到这个分支)
*1如果是别人创建并提交的分支,在自己机器上创建并且同步下来。(git pull = git fetch + git merge)
gsfr git fetch
gsfr git checkout -b oversea_V1.1.1 orign/oversea_V1.1.1 这个可以让本地看到V1.4.5分支
这样更靠谱,直接指定远程分支和本地分支名字:
git fetch origin feature-usercenter:feature-usercenter
git fetch细节:
远程:origin/master
本地:origin/master master
当你git fetch的话,是把本地的origin/master更新到最新,但是你看到的是本地master,并没有合并。因此git fetch比git pull安全,git pull比git fetch多了一步,直接给你合并了。
*2如果想用submodule递归在naval下创建分支,并且直接推送到远程分支上,可以这样一起创建:
git checkout -b dev && git push origin dev && git branch --set-upstream-to=origin/dev dev
删除分支:
git branch -D test && git push origin :test
单一的创建分支的话,比如在naval下:
git checkout -b oversea_V1.1.1
git push origin oversea_V1.1.1
这样创建时,注意如果naval有子工程,那么这样是创建不了的。这时候你在naval上,用加gsfr递归创建即可
//设置新的url
git remote set-url origin [email protected]:hero/RTSPowerCI.git
git push --all
//查看远程git地址
git remote show origin
git stash
git stash //隐藏修改 这样可以起一个名字 git stash save "aaa"
git stash list //查看修改列表
git stash pop //恢复修改(也就是可以查看到更改)
撤销掉所有更改
git stash -u && git stash clear
切换分支注意事项
ui.ccs的改动 当切换分支时,注意将cocostudio关闭掉,不然如果切换到的分支有这个模块,而切换前的没这个模块,ui.ccs就会有更改,这样可能导致删除。ui.ccs有更改的话,一定要查看下。占用内存的不会被切换(占用的东西,是不会被切换的)。
查看分支
查看远程分支:以列表形式显示
git branch -va
查看本地分支
git branch
添加navalVersion库
1.查看一个git托管的文件的地址
git remote -v
2.得到git仓库地址:
[email protected]:naval_cp/naval.git
3.open ~/.ssh
4.拷贝进去文件
5.设置下权限为600
sudo chmod 600 kongzhong_git
6.git clone [email protected]:naval_cp/naval.git
强制添加-f选项
假如在.gitignore文件中被忽略了, 比如忽略Icon* ,这样就会忽略所有以icon开头的图片,git默认不区分大小写的。那么查看git状态是查看不到更改的,为了能添加到git中帮你托管,那么git add -f 文件路径,这样就会强制添加进来,帮你托管。
删除文件
*
用 git rm
来删除文件,同时还会将这个删除操作记录下来;
用 rm
来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除。
*
当我们需要删除暂存区
或分支
上的文件, 同时工作区也不需要这个文件了, 可以使用
git rm file_path
*
当我们需要删除暂存区
或分支
上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用
git rm --cached file_path
file_path 为文件路径