Git是相似於SVN、CVS等代碼管理軟件,使用分佈式技術實現。Github是互聯網代碼倉庫,每一個人均可以在上面建立本身的倉庫,使用git完成同github倉庫的代碼同步等管理工做。html
IntelliJ idea->Git: 使用 Git->GitHub: 同步資源
git架構上分爲遠程倉庫、本地倉庫和工做空間。遠程倉庫就是位於GitHub上的倉庫,本地倉庫是爲用戶本機的倉庫目錄,工做空間是用戶開發所處的目錄。三者關係與操做以下圖所示:git
遠程倉庫->本地倉庫: 下載遠程倉庫到本地倉庫(git clone) 本地倉庫->工做空間: 檢出本地倉庫項目到工做空間(git checkout) 工做空間-->本地倉庫: 提交變動到本地倉庫(git commit) 本地倉庫-->遠程倉庫: 推送本地倉庫到遠程倉庫(git push)
branch是分支,是一個獨立發展的路線,成熟後會合併到master主分支上。tag是分支推動過程當中的里程碑,是一個記號。github
#查看全部命令 cmd>git help -a # cmd>git help -g
使用git前須要在github上註冊帳號,並建立字節的倉庫目錄。流程以下:shell
登陸github網站windows
http://github.com
註冊用戶bash
激活帳號服務器
登陸郵箱,激活帳號便可。架構
建立倉庫ssh
查看github上倉庫列表
分佈式
github上的倉庫
在setting選項卡中進行刪除。以下圖所示:
點擊刪除按鈕後,彈出警告窗口:
輸入確認刪除的倉庫名稱後,最後纔可刪除!
Git使用ssh鏈接github,下載git後不須要再單獨下載ssh軟件,git內部集成ssh軟件包。
執行如下命令:
cmd>git-bash.exe
進入命令行窗口,界面以下:
cmd>ssh-keygen -t rsa -C "770305805@qq.com"
注意:-C後使用的是在github中註冊時所用的email地址。
查看在home目錄下生成公私祕鑰文件
windows的主目錄位於C:\Users\${當前用戶}\.ssh下。
打開GitHub的公鑰管理頁面,如圖所示:
定位到SSH and GPG keys條目,以下圖所示:
點擊new SSH Key按鈕,以下圖所示:
在文本框中粘貼生成公鑰文件內容,輸入title後,點擊add SSH Key便可。以下圖:
# 運行git-hbash命令行程序 cmd>git-bash.exe # ssh到遠程github主機 $>ssh git@github.com
出現以下圖信息,表示鏈接成功!
檢查home目錄下是否存在.gitconfig文件,沒有的話,可能致使idea項目共享到github上失敗,說init過程失敗,郵箱地址不對。
使用命令添加:
# user.name是github上的住處帳號名稱 # user.email是github註冊時使用的郵箱地址 $>git config --global user.name "oldboy-xupccc" user.email "770305805@qq.com"
該文件內容以下:
[user] email = 770305805@qq.com name = oldboy-xupccc
文件截圖以下:
分支表示不一樣的開發路線,其內容會不斷改變。好比產品分支、開發分支、測試分支等等。一個倉庫中能夠有多個分支,默認建立一個master分支,也稱爲主分支。若是須要,能夠根據須要建立新的分支,在新分支上進行開發,成熟後再合併到master主分支上去。
查看分支是本地倉庫中的分支。
$>git branch
建立分支也是建立本地倉庫中的分支。
$>git branch b1
$>git checkout b1
$>git commit
$>git show
如圖所示:
# 遠程倉庫不存在該分支,須要使用--set-upstream指定 master是分支名稱 $>git push --set-upstream https://github.com/oldboy-xupccc/big12.git master
# 能夠不加 --list參數 $>git branch # $>git branch --list
如圖所示:*表示當前使用的分支
$>git branch -m b1 b11
$>git branch -rm b1
倉庫命令都是針對整個倉庫進行的操做,所以命令後面不加文件等參數。
該命令時在本地建立倉庫目錄後,進入目錄下,將該目錄初始化層倉庫目錄的過程。該命令會建立.git目錄。
#建立目錄 $>mkdir repo1 #進入目錄下 $>cd repo1 #進行初始化處理 $>git init
克隆倉庫是在首次使用遠程倉庫時,即本地沒有倉庫目錄,從遠程服務器下載整個倉庫到本地文件系統中的初始化本地倉庫過程。所以須要指定遠程倉庫的url地址,該地址能夠在github的倉庫主頁上找到。克隆完成後,git默認將遠程倉庫的名稱設置爲origin。url構成由域名構成以下:
# 克隆倉庫 https://github.com/oldboy-xupccc/big12.git # 克隆倉庫,指定本地名 https://github.com/oldboy-xupccc/big12.git localbig12 # 克隆倉庫指定的分支,指定本地名 https://github.com/oldboy-xupccc/big12.git localbig12 -b b1
該命令是將文件添加到跟蹤區域,以備可以進行版本管理。
$>git add *.txt $>git add README.md
重置操做,至關於撤銷以前的操做。好比add一個文件reset後,至關於文件仍沒有被跟蹤。
$>git reset
查看狀態
$>git status
git使用.gitignore文件指定哪些文件忽略。
# 以o或a結尾的文件忽律 *.[oa] # 忽略以~結尾 *.~
git status只能查看文件的狀態,可是具體哪些作了修改,可使用diff來看:
# diff後面指定本地分支和遠程分支的名稱 $>git diff master origin/master
pull命令是下載遠程倉庫內容到本地倉庫,覆蓋本地倉庫的內容。
$>git pull
push命令是將本地倉庫上傳到遠程倉庫,覆蓋遠程倉庫的內容。
$>git push
刪除跟蹤區文件。
$>git rm 1.txt $>git commit -m "deleted 1.txt"
git remote是遠程倉庫命令組,管理跟蹤的分做所在遠程倉庫的集合。管理遠程倉庫的工做,包括添加遠程庫,移除廢棄的遠程庫,管理各式遠程庫分支,定義是否跟蹤這些分支,等等。
要查看當前配置有哪些遠程倉庫,能夠用git remote命令,它會列出每一個遠程庫的簡短名字。在克隆完某個項目後,至少能夠看到一個名爲 origin 的遠程庫,Git 默認使用這個名字來標識你所克隆的原始倉庫
#查看當前遠程倉庫的簡短描述 $>git remote #輸出orginal $>git remote show # $>git remote show origin# 查看origin詳細信息 #查看當前遠程倉庫的詳細描述 $>git remote -v #輸出origin https://github.com/oldboy-xupccc/big12.git (fetch)
要添加一個新的遠程倉庫,能夠指定一個簡單的名字,以便未來引用。
$>git remote add oro https://github.com/oldboy-xupccc/big12.git
查看結果:
$>git remote -v
輸出內容以下:
origin https://github.com/oldboy-xupccc/big12.git (fetch) origin https://github.com/oldboy-xupccc/big12.git (push) oro https://github.com/oldboy-xupccc/big12.git (fetch) oro https://github.com/oldboy-xupccc/big12.git (push)
fetch是抓取遠程倉庫有,本地倉庫沒有的文件。
#使用短名進行抓取 $>git fetch oro #使用具體的遠程地址進行抓取 $>git fetch https://github.com/oldboy-xupccc/big12.git
$>git push orignal master
$>git remote show origin
輸出以下內容:
* remote origin Fetch URL: https://github.com/oldboy-xupccc/big12.git Push URL: https://github.com/oldboy-xupccc/big12.git HEAD branch: (unknown) Remote branch: refs/remotes/origin/master stale (use 'git remote prune' to remove) Local branch configured for 'git pull': master merges with remote master
#重命名遠程倉庫 $>git remote rename oro oro2 #刪除遠程倉庫 $>git remote rm oro
標記與分支類似,但一般用於軟件的版本發佈,表明着軟件的發展歷史階段,每一個標記都是一個里程碑。標記一般不會修改。
$>git tag $>git tag --list
$>git tag v1.0.0
$>git push origin --tags
git做爲一種代碼管理工具,因其具備分佈式特色,能夠隨時隨地進行代碼提交和管理,所以受到愈來愈多企業的青睞。而且在各大開發環境中也都對其進行了集成。