簡單在一個目錄下拉取別人的一個工程
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 爲文件路徑