注åè´¦æ·ä»¥åå建ä»åº
è¦æ³ä½¿ç¨github第ä¸æ¥å½ç¶æ¯æ³¨ågithubè´¦å·äºãä¹åå°±å¯ä»¥å建ä»åºäºï¼å
è´¹ç¨æ·åªè½å»ºå
Œ
±ä»åºï¼ï¼Create a New Repositoryï¼å¡«å¥½å称åCreateï¼ä¹åä¼åºç°ä¸äºä»åºçé
置信æ¯ï¼è¿ä¹æ¯ä¸ä¸ªgitçç®åæç¨ãæ¥éª¤å¦ä¸ï¼
æå¼https://github.com ç´æ¥å¨é¦é¡µä¸æ³¨å
ç¹æé®æ³¨åæåä¹åï¼å¨é¡µé¢ä¸æ¹ç¨æ·èåä¸éæ© â+â->New repository å建ä¸ä¸ªæ°çä»åº
为ä»åºåä¸ä¸ªååï¼ç¹å»å建ä»åºæé® ä½ å°æåå建ä¸ä¸ªä»åº
å®è£ git客æ·ç«¯
githubæ¯æå¡ç«¯ï¼è¦æ³å¨èªå·±çµèä¸ä½¿ç¨gitæ们è¿éè¦ä¸ä¸ªgit客æ·ç«¯ï¼
windowsç¨æ·è¯·ä¸è½½ http://msysgit.github.com/
macç¨æ·è¯·ä¸è½½ http://code.google.com/p/tortoisegit/
ä¸è·¯nextï¼å®è£
æååï¼ åå°Cçï¼æä»»ä½æ件夹ä¸ï¼ç¹é¼ æ å³é®ä¼å¤åºä¸äºèå
å¦ Git Init HearãGit BashãGit Gui ï¼ è¯´æå®è£
æåã
é ç½®Git
æ们å å¨çµè硬çéæ¾ä¸åå°æ¹åæ¾æ¬å°ä»åºï¼æ¯å¦æ们ææ¬å°ä»åºå»ºç«å¨C:\MyRepository\1ke_testæ件夹ä¸
è¿å ¥1ke_testæ件夹 é¼ æ å³é®æä½å¦ä¸æ¥éª¤ï¼
1ï¼å¨æ¬å°ä»åºéå³é®éæ©Git Init Hereï¼ä¼å¤åºæ¥ä¸ä¸ª.gitæ件夹ï¼è¿å°±è¡¨ç¤ºæ¬å°gitå建æåãå³é®Git Bashè¿å ¥gitå½ä»¤è¡ï¼æªå¾ææå¦ä¸ï¼
为äºä¿é©èµ·è§ï¼æ们å æ§è¡git initå½ä»¤
$ git init
为äºææ¬å°çä»åºä¼ å°githubï¼è¿éè¦é ç½®ssh keyã
2ï¼å¨æ¬å°å建ssh key
$ ssh-keygen -t rsa -C "[email protected]"
åé¢ç[email protected]æ¹ä¸ºä½ çé®ç®±ãæçé®ç®±æ¯[email protected]ï¼ä¹æ¯å¨githubä¸æ³¨åçé£ä¸ªé®ç®±ï¼
ç´æ¥ç¹å车ï¼è¯´æä¼å¨é»è®¤æ件id_rsaä¸çæssh keyã
ç¶åç³»ç»è¦æ±è¾å
¥å¯ç ï¼ç´æ¥æå车表示ä¸è®¾å¯ç
éå¤å¯ç æ¶ä¹æ¯ç´æ¥å车ï¼ä¹åæç¤ºä½ shh keyå·²ç»çææåã
ç¶åæ们è¿å
¥æ示çå°åä¸æ¥çssh keyæ件ã æççµèçå°åæ¯C:\Users\lilu\.ssh ï¼å
¶ä¸liluæ¯æççµèçå称
æå¼id_rsa.pubï¼å¤å¶éé¢çkeyãéé¢çkeyæ¯ä¸å¯¹çä¸æçå符æ°åç»åï¼ä¸ç¨ç®¡å®ï¼ç´æ¥å¤å¶ã
åå°githubç½ç«ï¼è¿å ¥Account Settingsï¼å·¦è¾¹éæ©SSH Keysï¼Add SSH Key,
titleé便填ï¼ç²è´´keyã
3ï¼éªè¯æ¯å¦æåï¼å¨git bashä¸è¾å ¥
$ ssh -T [email protected]
å车就ä¼çå°ï¼Youâve successfully authenticated, but GitHub does not provide shell access ãè¿å°±è¡¨ç¤ºå·²æåè¿ä¸githubã
4ï¼æ¥ä¸æ¥æ们è¦åçå°±æ¯ææ¬å°ä»åºä¼ å°githubä¸å»ï¼å¨æ¤ä¹åè¿éè¦è®¾ç½®usernameåemailï¼å 为githubæ¯æ¬¡commité½ä¼è®°å½ä»ä»¬
$ git config --global user.name "your name"$ git config --global user.email "[email protected]"
åå«è¾å
¥ä¸è¿°å½ä»¤è¡ åè½¦ï¼ æççé¢æ¾ç¤ºå¦ä¸
5ï¼è¿å ¥è¦ä¸ä¼ çä»åºï¼å³é®git bashï¼æ·»å è¿ç¨å°å
$ git remote add origin [email protected]:yourName/yourRepo.git
åé¢çyourNameåyourRepoè¡¨ç¤ºä½ ågithubçç¨æ·åååææ°å»ºçä»åºï¼å å®ä¹åè¿å ¥.gitï¼æå¼configï¼è¿éä¼å¤åºä¸ä¸ªremote âoriginâå 容ï¼è¿å°±æ¯åææ·»å çè¿ç¨å°åï¼ä¹å¯ä»¥ç´æ¥ä¿®æ¹configæ¥é ç½®è¿ç¨å°åã
æ交ä¸ä¼
1ï¼æ¥ä¸æ¥å¨æ¬å°ä»åºéæ·»å ä¸äºæ件ï¼æ¯å¦README
å¨æ¬å°æ°å»ºä¸ä¸ªREADMEæ件
ç¶åå¨å½ä»¤è¡è¾å ¥ä¸ä¸å½ä»¤
$ git add README
$ git commit -m "first commit"
2ï¼ä¸ä¼ å°github
$ git push origin master
git pushå½ä»¤ä¼å°æ¬å°ä»åºæ¨éå°è¿ç¨æå¡å¨ã
git pullå½ä»¤åç¸åã
注ï¼é¦æ¬¡æ交ï¼å git pullä¸ï¼ä¿®æ¹å®ä»£ç åï¼ä½¿ç¨git statuså¯ä»¥æ¥çæ件çå·®å«ï¼ä½¿ç¨git add æ·»å è¦commitçæ件ã
大ååæï¼ç°å¨ä½ ç¥éå¦ä½å°æ¬å°ç项ç®æ交å°githubä¸äºã
gitignoreæ件
.gitignore顾åæä¹å°±æ¯åè¯gitéè¦å¿½ç¥çæ件ï¼è¿æ¯ä¸ä¸ªå¾éè¦å¹¶ä¸å¾å®ç¨çæ件ãä¸è¬æ们åå®ä»£ç åä¼æ§è¡ç¼è¯ãè°è¯çæä½ï¼è¿æé´ä¼äº§çå¾å¤ä¸é´æ件åå¯æ§è¡æ件ï¼è¿äºé½ä¸æ¯ä»£ç æ件ï¼æ¯ä¸éè¦gitæ¥ç®¡ççãæ们å¨git statusçæ¶åä¼çå°å¾å¤è¿æ ·çæ件ï¼å¦æç¨git add -Aæ¥æ·»å çè¯ä¼æä»ä»¬é½å è¿å»ï¼èæå¨ä¸ä¸ªä¸ªæ·»å çè¯ä¹å¤ªéº»ç¦äºãè¿æ¶æ们就éè¦.gitignoreäºã
Gitå½ä»¤
æ¥çãæ·»å ãæ交ãå é¤ãæ¾åï¼é置修æ¹æ件
git help <command> # æ¾ç¤ºcommandçhelpgit show # æ¾ç¤ºæ次æ交çå
容 git show $idgit co -- <file> # æå¼å·¥ä½åºä¿®æ¹git co . # æå¼å·¥ä½åºä¿®æ¹git add <file> # å°å·¥ä½æ件修æ¹æ交å°æ¬å°æååºgit add . # å°ææä¿®æ¹è¿çå·¥ä½æ件æ交æååºgit rm <file> # ä»çæ¬åºä¸å é¤æ件git rm <file> --cached # ä»çæ¬åºä¸å é¤æ件ï¼ä½ä¸å é¤æ件git reset <file> # ä»æååºæ¢å¤å°å·¥ä½æ件git reset -- . # ä»æååºæ¢å¤å°å·¥ä½æ件git reset --hard # æ¢å¤æè¿ä¸æ¬¡æ交è¿çç¶æï¼å³æ¾å¼ä¸æ¬¡æ交åçæææ¬æ¬¡ä¿®æ¹git ci <file> git ci . git ci -a # å°git add, git rmågit ciçæä½é½å并å¨ä¸èµ·åããããããããããããããããããããããããããããããããããããgit ci -am "some comments"git ci --amend # ä¿®æ¹æåä¸æ¬¡æ交记å½git revert <$id> # æ¢å¤æ次æ交çç¶æï¼æ¢å¤å¨ä½æ¬èº«ä¹å建次æ交对象git revert HEAD # æ¢å¤æåä¸æ¬¡æ交çç¶æ
æ¥çæ件diff
git diff <file> # æ¯è¾å½åæ件åæååºæä»¶å·®å¼ git diffgit diff <id1><id2> # æ¯è¾ä¸¤æ¬¡æ交ä¹é´çå·®å¼git diff <branch1>..<branch2> # å¨ä¸¤ä¸ªåæ¯ä¹é´æ¯è¾git diff --staged # æ¯è¾æååºåçæ¬åºå·®å¼git diff --cached # æ¯è¾æååºåçæ¬åºå·®å¼git diff --stat # ä»
ä»
æ¯è¾ç»è®¡ä¿¡æ¯
æ¥çæ交记å½
git log git log <file> # æ¥ç该æ件æ¯æ¬¡æ交记å½git log -p <file> # æ¥çæ¯æ¬¡è¯¦ç»ä¿®æ¹å
容çdiffgit log -p -2 # æ¥çæè¿ä¸¤æ¬¡è¯¦ç»ä¿®æ¹å
容çdiffgit log --stat #æ¥çæ交ç»è®¡ä¿¡æ¯
tig
Macä¸å¯ä»¥ä½¿ç¨tig代æ¿diffålogï¼brew install tig
Git æ¬å°åæ¯ç®¡ç
æ¥çãåæ¢ãå建åå é¤åæ¯
git br -r # æ¥çè¿ç¨åæ¯git br <new_branch> # å建æ°çåæ¯git br -v # æ¥çå个åæ¯æåæ交信æ¯git br --merged # æ¥çå·²ç»è¢«å并å°å½ååæ¯çåæ¯git br --no-merged # æ¥çå°æªè¢«å并å°å½ååæ¯çåæ¯git co <branch> # åæ¢å°æ个åæ¯git co -b <new_branch> # å建æ°çåæ¯ï¼å¹¶ä¸åæ¢è¿å»git co -b <new_branch> <branch> # åºäºbranchå建æ°çnew_branchgit co $id # ææ次åå²æ交记å½checkoutåºæ¥ï¼ä½æ åæ¯ä¿¡æ¯ï¼åæ¢å°å
¶ä»åæ¯ä¼èªå¨å é¤git co $id -b <new_branch> # ææ次åå²æ交记å½checkoutåºæ¥ï¼å建æä¸ä¸ªåæ¯git br -d <branch> # å é¤æ个åæ¯git br -D <branch> # 强å¶å é¤æ个åæ¯ (æªè¢«å并çåæ¯è¢«å é¤çæ¶åéè¦å¼ºå¶)
åæ¯å并årebase
git merge <branch> # å°branchåæ¯å并å°å½ååæ¯git merge origin/master --no-ff # ä¸è¦Fast-Fowardå并ï¼è¿æ ·å¯ä»¥çæmergeæ交git rebase master <branch> # å°master rebaseå°branchï¼ç¸å½äºï¼ git co <branch> && git rebase master && git co master && git merge <branch>
Gitè¡¥ä¸ç®¡ç(æ¹ä¾¿å¨å¤å°æºå¨ä¸å¼ååæ¥æ¶ç¨)
git diff > ../sync.patch # çæè¡¥ä¸git apply ../sync.patch # æè¡¥ä¸git apply --check ../sync.patch #æµè¯è¡¥ä¸è½å¦æå
Gitæå管ç
git stash # æågit stash list # åææstashgit stash apply # æ¢å¤æåçå
容git stash drop # å é¤æååºGitè¿ç¨åæ¯ç®¡ç
git pull # æåè¿ç¨ä»åºææåæ¯æ´æ°å¹¶å并å°æ¬å°git pull --no-ff # æåè¿ç¨ä»åºææåæ¯æ´æ°å¹¶å并å°æ¬å°ï¼ä¸è¦å¿«è¿å并git fetch origin # æåè¿ç¨ä»åºæ´æ°git merge origin/master # å°è¿ç¨ä¸»åæ¯å并å°æ¬å°å½ååæ¯git co --track origin/branch # è·è¸ªæ个è¿ç¨åæ¯å建ç¸åºçæ¬å°åæ¯git co -b <local_branch> origin/<remote_branch> # åºäºè¿ç¨åæ¯å建æ¬å°åæ¯ï¼åè½åä¸
git push # pushææåæ¯
git push origin master # å°æ¬å°ä¸»åæ¯æ¨å°è¿ç¨ä¸»åæ¯git push -u origin master # å°æ¬å°ä¸»åæ¯æ¨å°è¿ç¨(å¦æ è¿ç¨ä¸»åæ¯åå建ï¼ç¨äºåå§åè¿ç¨ä»åº)git push origin <local_branch> # å建è¿ç¨åæ¯ï¼ originæ¯è¿ç¨ä»åºågit push origin <local_branch>:<remote_branch> # å建è¿ç¨åæ¯git push origin :<remote_branch> #å
å é¤æ¬å°åæ¯(git br -d <branch>)ï¼ç¶ååpushå é¤è¿ç¨åæ¯
Gitè¿ç¨ä»åºç®¡ç
git remote -v # æ¥çè¿ç¨æå¡å¨å°ååä»åºå称git remote show origin # æ¥çè¿ç¨æå¡å¨ä»åºç¶ægit remote add origin git@ github:robbin/robbin_site.git # æ·»å è¿ç¨ä»åºå°ågit remote set-url origin git@ github.com:robbin/robbin_site.git # 设置è¿ç¨ä»åºå°å(ç¨äºä¿®æ¹è¿ç¨ä»åºå°å) git remote rm <repository> # å é¤è¿ç¨ä»åº
å建è¿ç¨ä»åº
git clone --bare robbin_site robbin_site.git # ç¨å¸¦çæ¬ç项ç®å建纯çæ¬ä»åºscp -r my_project.git git@ git.csdn.net:~ # å°çº¯ä»åºä¸ä¼ å°æå¡å¨ä¸mkdir robbin_site.git && cd robbin_site.git && git --bare init # å¨æå¡å¨å建纯ä»åºgit remote add origin git@ github.com:robbin/robbin_site.git # 设置è¿ç¨ä»åºå°ågit push -u origin master # 客æ·ç«¯é¦æ¬¡æ交git push -u origin develop # é¦æ¬¡å°æ¬å°developåæ¯æ交å°è¿ç¨developåæ¯ï¼å¹¶ä¸trackgit remote set-head origin master # 设置è¿ç¨ä»åºçHEADæåmasteråæ¯
ä¹å¯ä»¥å½ä»¤è®¾ç½®è·è¸ªè¿ç¨åºåæ¬å°åº
git branch --set-upstream master origin/master
git branch --set-upstream develop origin/develop
使用git软件上传自己的源代码到仓库