gitlabä½¿ç¨æµç¨
æ ç¾ï¼ç©ºæ ¼åéï¼ï¼ gitlab
使ç¨svnçå妿ï¼danï¼çï¼suiï¼çé®é¢ï¼
2ãsvnä¸gitçæ©æ¨æ ä»
2.1 svnä¸git对æ¯
GITä¸ä»
ä»
æ¯ä¸ªçæ¬æ§å¶ç³»ç»ï¼å®ä¹æ¯ä¸ªå
容管çç³»ç»(CMS),å·¥ä½ç®¡çç³»ç»çã
å¦æä½ æ¯ä¸ä¸ªå
·æä½¿ç¨SVNèæ¯ç人ï¼ä½ éè¦åä¸å®çææ³è½¬æ¢ï¼æ¥éåºGITæä¾çä¸äºæ¦å¿µåç¹å¾ã
2.2 Git ä¸ SVN åºå«ç¹ï¼
1ã GITæ¯åå¸å¼çï¼SVN䏿¯ï¼è¿æ¯GITåå
¶å®éåå¸å¼ççæ¬æ§å¶ç³»ç»ï¼ä¾å¦SVNï¼CVSçï¼ææ ¸å¿çåºå«ã
2ãGITæå
容æå
æ°æ®æ¹å¼åå¨ï¼èSVNæ¯ææä»¶ï¼ææçèµæºæ§å¶ç³»ç»é½æ¯ææä»¶çå
ä¿¡æ¯éèå¨ä¸ä¸ªç±»ä¼¼.svn,.cvsççæä»¶å¤¹éã
3ãGIT忝åSVNç忝ä¸åï¼åæ¯å¨SVNä¸ä¸ç¹ä¸ç¹å«ï¼å°±æ¯çæ¬åºä¸çå¦å¤çä¸ä¸ªç®å½ã
4ãGIT没æä¸ä¸ªå
¨å±ççæ¬å·ï¼èSVNæï¼ç®å为æ¢è¿æ¯è·SVNç¸æ¯GIT缺å°çæå¤§çä¸ä¸ªç¹å¾ã
5ãGITçå
容宿´æ§è¦ä¼äºSVNï¼GITçå
容åå¨ä½¿ç¨çæ¯SHA-1åå¸ç®æ³ãè¿è½ç¡®ä¿ä»£ç å
容ç宿´æ§ï¼ç¡®ä¿å¨éå°ç£çæ
éåç½ç»é®é¢æ¶éä½å¯¹çæ¬åºçç ´åã
2.3 svnä¸git工使µç¨
2.3.1 svn工使µç¨
2.3.3 å¿«éçè§£svnä¸gitçæ¬è´¨åºå«
ä»ä¸å¾ä¸å¯ä»¥çåºï¼svnæ¯éä¸å¼çï¼gitæ¯åå¸å¼çãä»ç»çå¾ä¼åç°å ¶å®gitç工使¨¡å¼ä¸æ¯ä¸ªå¼åè ï¼å®è£ äºgit客æ·ç«¯ï¼ççµèå°±çåäºä¼ ç»çä¸ä¸ªsvnæå¡å¨ãè¿ä¹å°±æ¯ä¸ºä»ä¹è¯´ä»æ¯åå¸å¼çåå ã对äºåå¦è ï¼éè¦çè§£svn工使¨¡å¼ä¸commitåå·¥å ·åºæ¬å®æ¯ï¼å ¶ä»äººå¯ä»¥ä¸è½½ä½ ç代ç ã使¯ å¨gitä¸commitåè¿éè¦ä½ pushä¸ä¸ ï¼è¿ä¹æ¯æä½¿ç¨svnèæ¯ç人éè¦åææ³è½¬åçå°æ¹ã
2.4 Git å·¥ä½åºãæååºåçæ¬åº
2.4.1 åºæ¬æ¦å¿µ
å·¥ä½åº ï¼å°±æ¯ä½ å¨çµèéè½çå°çç®å½ã æååº ï¼è±æå«stage, æindexãä¸è¬åæ¾å¨ ".gitç®å½ä¸" ä¸çindexæä»¶ï¼.git/indexï¼ä¸ï¼æä»¥æä»¬ææååºææ¶ä¹å«ä½ç´¢å¼ï¼indexï¼ã çæ¬åº ï¼å·¥ä½åºæä¸ä¸ªéèç®å½.gitï¼è¿ä¸ªä¸ç®å·¥ä½åºï¼èæ¯Gitççæ¬åºã2.4.2 å·¥ä½åºãçæ¬åºä¸çæååºåçæ¬åºä¹é´çå ³ç³»
3ãgitlabç使ç¨
gitlabæçgithubï¼GitLabæ¥æGitHubæ¥æçä¸åï¼ä½ä»æ¥ææ´å¤
é常便æ·çç¨æ·çé¢ ï¼å¨åä¸çé¢ä¸è·åå°ï¼projectsï¼æè¿çprojectsï¼ç¨æ·ï¼æè¿çç¨æ·ï¼ç¾¤ç»åç¶æï¼ å 许设置ä»åºæéæ¯å ¬ç¨çè¿æ¯ç§æç ï¼ âSnippet supportâè®©ç¨æ·å享ä¸ä¸ªprojectçé¨å代ç ï¼è䏿¯æ´ä¸ªprojectã åä¿æ¤ç忝æ¯ä¸ç§æå代ç å®å ¨æ§çæ°æ¹æ³ ï¼å®ä»¬å è®¸ç¨æ·è®¾ç½®projectçè·åæéï¼æä»¥ ä¸ä¸ªå¢éä¸åªæç¹å®ç人å¯ä»¥pushï¼forceï¼pushæè å é¤ä¸ä¸ªåæ¯ç代ç ã Authentication levelsæ´è¿ä¸æ¥çæåå®å ¨æ§ï¼å è®¸ç¨æ·ç»äººè¯»å以å¤çæé ã䏾便¥è¯´ï¼ä½ å¯ä»¥ç»ä¸ä¸ªç»åè·è¸ªåå¨çæéå´ä¸ç»ä»è·å代ç çæéã ä½ å¯ä»¥è®¾ç½®è·åå°å¢éçæ´ä½çæ¹è¿è¿åº¦ï¼è䏿¯ä½ 个人çè¿åº¦ ã3.1 使ç¨åçåå¤å·¥ä½
3.1.1 注åç»å½
详æ 请åè http://git.100credit.cn/help
3.1.2 个æ§è®¾ç½®
1ã设置èªå·±çå¸
æ°å¤´å
访é®ï¼
http://git.100credit.cn/profile
ï¼èªè¡è®¾ç½®ï¼æ ä¸éã
2ã设置code styleï¼
http://git.100credit.cn/profile/preferences
ï¼éæ©ä¸æ¬¾ä½ 认为ç½çæ ·å¼ã
3.1.3 å®è£ git客æ·ç«¯
æ¤å¤ä¸åéå¶ï¼å®è£ git.exeæè sorceTree.exeåå¯ãæ®é人åï¼ä¸å¸¸ç¨ä¸å¼åï¼åªæ¯æµè§ä»£ç ï¼å¯ä»¥ä¸ç¨å®è£ 客æ·ç«¯ï¼å¨çº¿å³å¯æµè§ãä¸è½½ãæ¹æ³¨æä»¶ã
git.exeä¸è½½å°åï¼
http://git.100credit.cn/application/entry-guidance/blob/master/Git-1.9.5-preview20150319.exe
TortoiseGit:
https://tortoisegit.org/download/
å®è£ æ¹æ³ï¼åå»ã
3.2 项ç®ä½¿ç¨
3.2.1 æ°å»ºé¡¹ç®
3.2.2 åå§å项ç®ï¼git initï¼
æ£å¦ä¸å¾æ¾ç¤ºçï¼gitlabä¼ç»æä»¬ç¸åºçå½ä»¤ä¾æä»¬ä½¿ç¨ï¼éè¦å®è£ 客æ·ç«¯ï¼ãåå§åä¸ä¸ªé¡¹ç®å¯ä»¥æ¯ä¸ä¸ªæ°å»ºç空项ç®ï¼ä¹å¯ä»¥æ¯ä¸ä¸ªå·²ç»åå¨çæä»¶å¤¹æè 项ç®ï¼å½ç¶ä¹å¯ä»¥ä»å ¶ä»ï¼githubï¼å ¶ä»å ¬å¸çgitlabï¼ä¸å¯¼å ¥ãæ¬æä¸»è¦è®²å°å·²æçsvn项ç®å¯¼å ¥å°gitlabã
å°ä¸ä¸ªå·²æçé¡¹ç®æè æä»¶å¤¹æç®¡å°gitçæµç¨ ï¼
æ¹æ³ä¸ï¼éå½ä»¤ï¼ ï¼
æ¹æ³äºï¼å½ä»¤è¡ï¼ ï¼
å¤§å®¶æ ¹æ®èªå·±çå好鿩åéçæ¹å¼ãæ¤å¤ç»åºç¨å½ä»¤çæä½demoã
3.2.3 ä»gitlabä¸è½½ä»£ç
ç¬è 忬¢ideaï¼æ¤æä» 以idea为ä¾ï¼å ¶ä»å¼åå·¥å ·è¯·èªè¡å¦ä¹ 使ç¨ãæ¤ææ²¡æç¨å½ä»¤æ¥æ¼ç¤ºä¸»è¦æ¯æä¸å欢æ²å½ä»¤çåå¦äº§çææãå ¶å®çæçåå¦å¯ä»¥ç¨å½ä»¤æ¥æä½gitçæ´ä¸ªæµç¨ãæ³å¦ä¹ å½ä»¤çåå¦å¯ä»¥åèï¼ http://www.runoob.com/git/git-basic-operations.html
3.2.3.1 ä¸è½½zipãgzãgzãtaræ ¼å¼ç代ç å
é²è¯å°è¯´ï¼ç´æ¥ä¸å¾
æ£åºä»åºï¼$ git clone git://github.com/jquery/jquery.git
æ¥çè¿ç¨ä»åºï¼$ git remote -v
æ·»å è¿ç¨ä»åºï¼$ git remote add [name] [url]
å é¤è¿ç¨ä»åºï¼$ git remote rm [name]
ä¿®æ¹è¿ç¨ä»åºï¼$ git remote set-url --push [name] [newUrl]
æåè¿ç¨ä»åºï¼$ git pull [remoteName] [localBranchName]
æ¨éè¿ç¨ä»åºï¼$ git push [remoteName] [localBranchName]
å¦ææ³ææ¬å°çæä¸ªåæ¯testæäº¤å°è¿ç¨ä»åºï¼å¹¶ä½ä¸ºè¿ç¨ä»åºçmasteråæ¯ï¼æè
ä½ä¸ºå¦å¤ä¸ä¸ªåå«testç忝ï¼å¦ä¸ :
$git push origin test:master // æäº¤æ¬å°test忝ä½ä¸ºè¿ç¨çmaster忝
$git push origin test:test // æäº¤æ¬å°test忝ä½ä¸ºè¿ç¨çtest忝
4.2 忝(branch)æä½ç¸å
³å½ä»¤
æ¥çæ¬å°åæ¯ï¼$ git branch
æ¥çè¿ç¨åæ¯ï¼$ git branch -r
å建æ¬å°åæ¯ï¼$ git branch [name] ----æ³¨ææ°åæ¯å建åä¸ä¼èªå¨åæ¢ä¸ºå½å忝
忢忝ï¼$ git checkout [name]
å建æ°åæ¯å¹¶ç«å³åæ¢å°æ°åæ¯ï¼$ git checkout -b [name]
å é¤åæ¯ï¼$ git branch -d [name] ---- -dé项åªè½å é¤å·²ç»åä¸äºåå¹¶ç忝ï¼å¯¹äºæªæåå¹¶çåæ¯æ¯æ æ³å é¤çã妿æ³å¼ºå¶å é¤ä¸ä¸ªåæ¯ï¼å¯ä»¥ä½¿ç¨-Dé项
å并忝ï¼$ git merge [name] ----å°å称为[name]ç忝ä¸å½å忝åå¹¶
å建è¿ç¨åæ¯(æ¬å°åæ¯pushå°è¿ç¨)ï¼$ git push origin [name]
å é¤è¿ç¨åæ¯ï¼$ git push origin :heads/[name] æ $ gitpush origin :[name]
å建空ç忝ï¼(æ§è¡å½ä»¤ä¹åè®°å¾å
æäº¤ä½ å½å忝çä¿®æ¹ï¼å¦åä¼è¢«å¼ºå¶å 干忲¡å¾åæ)**
$git symbolic-ref HEAD refs/heads/[name]
$rm .git/index
$git clean -fdx
4.3 çæ¬(tag)æä½ç¸å
³å½ä»¤
æ¥ççæ¬ï¼$ git tag
åå»ºçæ¬ï¼$ git tag [name]
å é¤çæ¬ï¼$ git tag -d [name]
æ¥çè¿ç¨çæ¬ï¼$ git tag -r
å建è¿ç¨çæ¬(æ¬å°çæ¬pushå°è¿ç¨)ï¼$ git push origin [name]
å é¤è¿ç¨çæ¬ï¼$ git push origin :refs/tags/[name]
åå¹¶è¿ç¨ä»åºçtagå°æ¬å°ï¼$ git pull origin --tags
ä¸ä¼ æ¬å°tagå°è¿ç¨ä»åºï¼$ git push origin --tags
å建带注éçtagï¼$ git tag -a [name] -m 'yourMessage'
4.4 忍¡å(submodule)ç¸å
³æä½å½ä»¤
æ·»å 忍¡åï¼$ git submodule add [url] [path]
å¦ï¼$git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
åå§å忍¡åï¼$ git submodule init ----åªå¨é¦æ¬¡æ£åºä»åºæ¶è¿è¡ä¸æ¬¡å°±è¡
æ´æ°å模åï¼$ git submodule update ----æ¯æ¬¡æ´æ°æåæ¢åæ¯åé½éè¦è¿è¡ä¸ä¸
å é¤å模åï¼ï¼å4æ¥èµ°å¦ï¼
1) $ git rm --cached [path]
2) ç¼è¾â.gitmodulesâæä»¶ï¼å°å模åçç¸å
³é
ç½®èç¹å 餿
3) ç¼è¾â .git/configâæä»¶ï¼å°å模åçç¸å
³é
ç½®èç¹å 餿
4) æå¨å é¤åæ¨¡åæ®ççç®å½
4.5 忽ç¥ä¸äºæä»¶ãæä»¶å¤¹ä¸æäº¤
å¨ä»åºæ ¹ç®å½ä¸å建å称为â.gitignoreâçæä»¶ï¼åå
¥ä¸éè¦çæä»¶å¤¹åææä»¶ï¼æ¯ä¸ªå
ç´ å ä¸è¡å³å¯ï¼å¦ä¸ï¼
# Maven
target/
../target
target/*
*.class
*.ser
# IntelliJ Idea
.idea/
*.ipr
*.iws
*.iml
# Eclipse
.classpath
.project
.settings/
.metadata/
# OS X
.DS_Store
4.6Git常ç¨å½ä»¤æ±æ»
git branch æ¥çæ¬å°ææåæ¯
git status æ¥çå½åç¶æ
git commit æäº¤
git branch -a æ¥çææç忝
git branch -r æ¥çæ¬å°ææåæ¯
git commit -am "init" æäº¤å¹¶ä¸å 注é
git remote add origin git@192.168.1.119:ndshow
git push origin master å°æä»¶ç»æ¨å°æå¡å¨ä¸
git remote show origin æ¾ç¤ºè¿ç¨åºoriginéçèµæº
git push origin master:develop
git push origin master:hb-dev å°æ¬å°åºä¸æå¡å¨ä¸çåºè¿è¡å
³è
git checkout --track origin/dev 忢å°è¿ç¨dev忝
git branch -D master develop å 餿¬å°åºdevelop
git checkout -b dev 建ç«ä¸ä¸ªæ°çæ¬å°åæ¯dev
git merge origin/dev å°åæ¯devä¸å½å忝è¿è¡åå¹¶
git checkout dev 忢尿¬å°dev忝
git remote show æ¥çè¿ç¨åº
git add .
git rm æä»¶å(å
æ¬è·¯å¾) ä»gitä¸å 餿宿件
git clone git://github.com/schacon/grit.git 仿å¡å¨ä¸å°ä»£ç ç»æä¸æ¥
git config --list çææç¨æ·
git ls-files çå·²ç»è¢«æäº¤ç
git rm [file name] å é¤ä¸ä¸ªæä»¶
git commit -a æäº¤å½åreposçææçæ¹å
git add [file name] æ·»å ä¸ä¸ªæä»¶å°git index
git commit -v å½ä½ ç¨ï¼våæ°çæ¶åå¯ä»¥çcommitçå·®å¼
git commit -m "This is the message describing the commit" æ·»å commitä¿¡æ¯
git commit -a -aæ¯ä»£è¡¨addï¼æææçchangeå å°git indexéç¶ååcommit
git commit -a -v ä¸è¬æäº¤å½ä»¤
git log çä½ commitçæ¥å¿
git diff æ¥çå°æªæåçæ´æ°
git rm a.a ç§»é¤æä»¶(仿ååºåå·¥ä½åºä¸å é¤)
git rm --cached a.a ç§»é¤æä»¶(åªä»æååºä¸å é¤)
git commit -m "remove" ç§»é¤æä»¶(ä»Gitä¸å é¤)
git rm -f a.a 强è¡ç§»é¤ä¿®æ¹åæä»¶(仿ååºåå·¥ä½åºä¸å é¤)
git diff --cached æ $ git diff --staged æ¥çå°æªæäº¤çæ´æ°
git stash push å°æä»¶ç»pushå°ä¸ä¸ªä¸´æ¶ç©ºé´ä¸
git stash pop å°æä»¶ä»ä¸´æ¶ç©ºé´pop䏿¥
git remote add origin git@github.com:username/Hello-World.git
git push origin master å°æ¬å°é¡¹ç®ç»æäº¤å°æå¡å¨ä¸
git pull æ¬å°ä¸æå¡å¨ç«¯åæ¥
git push (è¿ç¨ä»åºå) (忝å) å°æ¬å°åæ¯æ¨éå°æå¡å¨ä¸å»ã
git push origin serverfix:awesomebranch
git fetch ç¸å½äºæ¯ä»è¿ç¨è·åææ°çæ¬å°æ¬å°ï¼ä¸ä¼èªå¨merge
git commit -a -m "log_message" (-aæ¯æäº¤æææ¹å¨ï¼-mæ¯å å
¥logä¿¡æ¯) æ¬å°ä¿®æ¹åæ¥è³æå¡å¨ç«¯ ï¼
git branch branch_0.1 master ä»ä¸»åæ¯masterå建branch_0.1忝
git branch -m branch_0.1 branch_1.0 å°branch_0.1éå½å为branch_1.0
git checkout branch_1.0/master 忢å°branch_1.0/master忝
du -hs
-------------------举个æ å-----------------------
mkdir WebApp
cd WebApp
git init
touch .gitignore
git add .gitignore
touch README
git add README
git commit -m 'first commit'
git remote add origin git@git.100credit.cn:application/test.git
git push -u origin master
4.7 GItå½ä»¤è®°å¿å¾