天天看点

使用git高效管理项目git学习资料多仓库组织模式Mac终端配置mac下搜索神器: the_silver_searcher安装 控件命名规则adb用法小结git常用操作

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

多仓库组织模式

方式1:

      多个仓库以submodule的方式组织起来,这样分离不同人的权利看到不同的仓库。

方式2:

        主仓库忽略子仓库的模式,主仓库是公用的代码,子仓库是一个个会变化的模块。

Mac终端配置

iterm2

https://iterm2.com

oh my zsh

http://ohmyz.sh

Homebrew

http://brew.sh/index_zh-cn.html

mac下搜索神器: the_silver_searcher安装

brew install the_silver_searcher

cd /Users/jianan/Documents/work/naval_res

ag -i 搜索内容
           

 控件命名规则

 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
           

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常用操作

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上,然后提交更改即可。
           

比较: merge 和 rebase(变基,从分叉处把自己的提交取消掉,然后重新产生新的commit到后边)

使用git高效管理项目git学习资料多仓库组织模式Mac终端配置mac下搜索神器: the_silver_searcher安装 控件命名规则adb用法小结git常用操作

2.命令合并部分修改(例如:将V1.2.3Oversea上别人某个提交合并到master上)

cherry-pick

cd naval(V1.2.3Oversea)
git pull
查看提交的commit hash值,例如是XXX

cd naval(master)
git cherry-pick hash值
解决冲突
           

3.删除分支

git branch -D xx && git push origin :xx
           

4.回退到某个提交

git checkout

git checkout hash值

git checkout V1.4.7恢复

查看一个具体的提交的commit hash值(已经提交git的也撤销远程的) 例如XXX
           

git reset (注意后面那个origin dev 需要指定下远程分支):

git reset --hard 0cde337c48fe626cd25d4e2c0ff5f67786f2d978 && git push -f origin dev
           

错误:经过验证:用这个错误的,看着是回退了,但是执行git pull又拉取下来了。尴尬!!!

git reset --hard <commit_id> && git push origin HEAD --force   (这个是错误的,一拉取会回来)

撤销merge 还可以用

git merge --abort
           

我发现别人还git checkout 到commit hash值,然后又这样打入分支名称来恢复

妙用sourcetree切换分支时恢复(从汪强那学到的)

使用source tree切换分支时,提示我保存,我选择不保存则恢复了(从汪强这学到的)
           

5.撤销commit(git add .后撤销某个commit)

git reset .
           

6.拉取别人创建的分支

git fetch

git checkout -b oversea_V1.1.1 orign/oversea_V1.1.1      这个可以让本地看到V1.4.5分支

这样更靠谱,直接指定远程分支和本地分支名字:

git fetch origin xx:xx

7.创建分支并推送到远程

git checkout -b dev && git push origin dev && git branch --set-upstream-to=origin/dev dev
           

8.删除分支 本地和远程 保持一致

git branch -D test && git push origin :test
           

保证本地和远程分支一致,防止远程分支都删除了但是还能checkout过去

git remote prune origin
           

9.仓库更换地址,设置新的url

git remote set-url origin [email protected]:hero/RTSPowerCI.git
git push --all
           

10.查看远程git地址

git remote show origin
           

11.git stash

git stash   //隐藏修改     这样可以起一个名字   git stash save "aaa" 
git stash list  //查看修改列表
git stash pop //恢复修改(也就是可以查看到更改)
           

12.撤销本地所有更改(自己做测试什么的,有了一些更改,甚至删除了一些文件)

git stash -u && git stash clear
           

13.查看远程分支列表

git branch -va
           

14.查看本地分支

git branch
           

15.强制添加一个在gitignore中忽略的文件

假如在.gitignore文件中被忽略了, 比如忽略Icon* ,这样就会忽略所有以icon开头的图片,git默认不区分大小写的。那么查看git状态是查看不到更改的,为了能添加到git中帮你托管,这样就会强制添加进来,帮你托管

git add -f  文件路径
           

16.rm和git rm的区别

用 git rm 来删除文件,同时还会将这个删除操作记录下来;
用 rm 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除。
           

17.当我们需要删除

暂存区

分支

上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

git rm --cached file_path
           

18.查看日志(某个人、所有人、某个hash)

查看具体人提交的日志
git log --author="jianan"  

查看所有人提交日志
git log

查看具体hash提交的东西
git log -p hash值
           

19.带submodule的拉取

➜  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.
           

20.使用submodule管理项目

step1:
在任何一个目录下新建一个文件夹,比如:work,然后cd 切换到工作目录。(切换到的目录,以后再进行操作的话,就会在当前目录生效)

step2:
仓库初始化
git init

step3:
submodule初始化
git submodule init

step4:
将http地址上的库添加到submodule上
git submodule add (http地址)
           

21.查看远程所有分支列表

git branch -r
           

22.git pull --rebase 让提交成一条直线

解决冲突

解决冲突
 
git rebase --continue
 
git rebase --skip
           

徐源做法

git fetch upstream 
 
git rebase upstream/master
           

23.查看分支是谁创建的

git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n
           

24.合并分支,将多个提交合并为一条

git merge --squash branchname
           

25.查看某个commit更改的文件名字(不查看更改内容 )

git diff-tree -r --no-commit-id --name-only HASH值
           

26.设置大小写敏感

git config --global core.ignorecase false
           

27.git revert 实现取消某次提交(可以是中间的一次提交)

git revert -n XXX
git commit -m "cancel LF CRLF"
git push 
           

revert应用场景1:

A  B  C D E F G这几次提交,假如你发现自己C D等中间几个版本提交了错误的代码,但是后面又有别人的提交,那么用revert就可以取消某中间的几次提交,如上,则是取消XXX这次提交,生成一次新的提交

revert应用场景2:

有的不让用-f选项,但是你又想回退这个版本,因此没办法用git reset --hard 和 git push -f来回退,这时用revert取消这些提交也是一种办法

28.撤销git push(但是我不想push了)

git reset --hard HEAD^