一:Git GitHub gitlab 三者的介紹
Git:是一個類似CVS,SVN的代碼版本管理軟件,用于敏捷高效地處理任何或小或大的項目锣枝,是一個完全分布式的版本控制工具医增。
Git的優(yōu)點:①防止代碼丟失;②遠程同步代碼蹦浦;③利于團隊協(xié)作;④記錄代碼版本;⑤代碼還原
分布式版本系統(tǒng)的最大好處之一是在本地工作完全不需要考慮遠程庫的存在吵护,也就是有沒有聯(lián)網(wǎng)都可以正常工作,而SVN在沒有聯(lián)網(wǎng)的時候是拒絕干活的表鳍!當有網(wǎng)絡的時候馅而,再把本地提交推送一下就完成了同步
GitHub:是一個用Git做版本控制的項目托管平臺,提供給用戶空間創(chuàng)建git倉儲譬圣,保存用戶的一些數(shù)據(jù)文檔或者代碼等瓮恭,是程序猿發(fā)布和尋找好代碼的天堂~
gitlab:是一款基于Git的項目管理軟件
GitHub和gitlab都是基于Git建立的,可以說是git的衍生品
此處插一句廣告厘熟,哈哈屯蹦,GitHub是全球范圍的代碼托管平臺,而碼云是國內的代碼托管平臺绳姨,訪問就比GitHub快多了登澜。
或者可以利用域名重定向解決GitHub國內訪問慢,方法在這:?武功秘籍
創(chuàng)建配置一個SSH密匙飘庄,在git bash命令框中執(zhí)行命令 ssh-keygen -t -rsa -C "碼云或者GitHub的郵箱地址"脑蠕,接著一路回車即可,最后就生成一個公鑰(id_rsa.pub)跪削,可以放心給人看空郊,一個秘鑰(id_rsa)份招,不能透露出去。
為什么GitHub需要SSH Key呢狞甚?因為GitHub需要識別出你推送的提交確實是你推送的锁摔,而不是別人冒充的,而Git支持SSH協(xié)議哼审,所以谐腰,GitHub和碼云只要知道了你的公鑰,就可以確認只有你自己才能推送涩盾。GitHub允許你添加多個Key十气。假定你有若干電腦,你一會兒在公司提交春霍,一會兒在家里提交砸西,只要把每臺電腦的Key都添加到GitHub,就可以在每臺電腦上往GitHub推送了址儒。
遠程庫的名字就是origin芹枷,這是Git默認的叫法,也可以改成別的莲趣,但是origin這個名字一看就知道是遠程庫鸳慈。
二:git常用命令的使用
注明:以下是根據(jù)廖雪峰大神的教程學習
1、git clone url地址(這個是代碼托管地址) ——克隆遠程倉庫項目
? ? git clone -b 分支名 url地址 ?——克隆指定分支的內容到本地
2喧伞、cd git-demo(本地新建的git倉庫)——切換到本地git倉庫
3走芋、git status ——查看本地git倉庫的狀態(tài)
4、git add Readme.txt(這個是要添加的文件)——添加要提交的文件到你本地倉庫的代碼
5潘鲫、git commit -m "提交信息" ?——提交到本地倉庫
重要概念:Git跟蹤并管理的是修改翁逞,而不是文件 (eg:每次修改,如果不add到緩沖區(qū)溉仑,就不會被加入到commit中)
6挖函、git push ?——推送到遠程倉庫
7、從遠程倉庫上拉取項目下來到本地倉庫2方式:
①git fetch + git merge = git pull (推薦用這種) ②git pull (太強制了彼念,沖突時會直接覆蓋本地)
8挪圾、git branch ——查看本地分支
9、git branch --all ?——查看所有分支(包括本地和遠程)
10逐沙、git checkout dev ?——切換到dev(自己新建的)分支
? ? ? ? git checkout master ?——切換到master主分支
? ? ? ? git merge dev ? ——合并dev分支到當前分支
11哲思、git init ?——把當前文件夾初始化為git文件夾
12、git remote add origin url地址(遠程代碼倉庫地址)——把本地的git倉庫和遠程的git倉庫掛上鉤
13吩案、git diff 文件名 ?——查看本地某個文件修改了什么內容
14棚赔、git branch 分支名 ?—— 新建一個分支
15、git log ——顯示從最近到最遠的提交日志,顯示提交記錄的詳細信息
? ? ? ? 如果嫌輸出信息太多靠益,可以加上參數(shù) -pretty=oneline ?顯示提交記錄的簡短信息
16丧肴、cat 文件名 ?——查看某個文件的內容
17、git reset --hard HEAD^ ?——把版本庫回退到之前的版本胧后,例如時光穿梭機芋浮,HEAD代表當前版本,HEAD^代表上一個版本壳快,HEAD^^代表上 ? ? ? ? 2個版本纸巷,HEAD~100代表上100個版本
18、git reflog ?——用來記錄你的每一次命令眶痰,所以找到了commit id就有后悔藥吃了瘤旨,但是記住如果push到遠程倉庫就沒救了
19、git checkout -- 文件名 ——撤回未add到緩沖區(qū)的文件竖伯,記得--與文件名中間有個空格
20存哲、git reset HEAD 添加到暫存區(qū)的文件名 ?——git reset命令既可以回退版本,也可以把暫存區(qū)的修改回退到工作區(qū)七婴。
21祟偷、rm 文件名 ?——從本地工作區(qū)中刪除文件,若是誤刪本姥,可以使用git checkout -- 文件名 來從版本庫中恢復文件到本地工作區(qū)肩袍。但要是使用命令git rm 文件名 再git commit 提交刪除操作就從版本庫中刪除了文件杭棵,就恢復不了到本地工作區(qū)了
22婚惫、git push -u origin master ?——由于遠程庫是空的,我們第一次推送master分支時魂爪,加上了-u參數(shù)先舷,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯(lián)起來滓侍,在以后的推送或者拉取時就可以簡化命令蒋川。
三:分支管理
你創(chuàng)建了一個屬于你自己的分支,別人看不到撩笆,還繼續(xù)在原來的分支上正常工作捺球,而你在自己的分支上干活,想提交就提交夕冲,直到開發(fā)完畢后氮兵,再一次性合并到原來的分支上,這樣歹鱼,既安全泣栈,又不影響別人工作。
多人協(xié)作開發(fā)的規(guī)則,如下南片,基本都是先pull最新的下來改完再push
四:Idea結合git開發(fā)
1掺涛、創(chuàng)建項目(我自已有一個小練習),把它初始化為git項目疼进,成功后文件夾會產生一個.git文件薪缆,這個文件是記錄倉庫的配置和版本的,最好不要動伞广。
這些文件都會變紅表示沒有被追蹤
2矮燎、右鍵項目 Git->Add 就把項目添加到緩沖區(qū),文件就會變綠
3赔癌、右鍵項目 Git->Commit ?就把項目提交到本地倉庫中
確保沒什么錯的話就直接點commit了诞外,如下
4、最后推送到遠程倉庫去
創(chuàng)建一個新分支并把代碼上傳到此分支
PS:使用命令行時遇到這個情況時:git add命令灾票,git commit命令峡谊,最后git push命令推送到遠程倉庫,但是在git push 時出現(xiàn)了報錯刊苍,百度了解決方案既们,如下,任選一種即可
這樣本地的項目就推送到遠程倉庫了
推薦文章:
更新:
這有一篇非常簡潔的文章將本地項目push到碼云上的文章,我貼出來分享:通過git把本地項目push到碼云上
還有可能是由于我之前改過git的密碼婴氮,而本機計算機之前存的密碼憑證沒有更改過斯棒,所以出現(xiàn)了再clone和push項目時總是報錯:fatal: Authentication failed for 'https://gitee.com/? 還有Incorrect username or password (access token)的錯誤、這里通過百度
輸入命令git config --system --unset credential.helper? 重置用戶配置主经,之后再重新push就會讓你重新驗證用戶名和密碼了荣暮,于是問題得以解決。如下圖操作: