GitHub是世界上最大的軟件遠程倉庫,是一個面向開源和私有軟件項目的託管平臺,使用Git做分佈式版本控制。學會操作使用Git其實是爲了管理Github服務
Git是一個開源的版本控制系統 (VCS),實現分佈式版本控制的一個工具,用於實現文件歷史管理的工具,常用於軟件項目的版本管理
Git官方下載地址: https://www.git-scm.com/download/win
Git工作區域:
Git 的基本命令行操作
Git工具的命令操作類似於linux系統
配置賬號信息:包括用戶名和 email 地址,Git 依據此信息區分各個用戶,在github倉庫主頁顯示誰提交了該文件
命令格式:
$ git config --global user.name 'user-name'
$ git config --global user.email 'email'
- -global 參數表示本機上的所有 Git 倉庫都使用該配置信息。通常,一臺電腦對應一個開發者,該電腦上的所有本地倉庫都使用同樣的賬號信息。
【擴展】若一臺電腦被多個開發者使用,則每個開發者有不同的工作目錄,包含了各自的本地倉庫。此時,應在各自的工作目錄下執行 git config user.name ‘userName’ 命令,這樣每個工作目錄提交代碼時使用的是不同的賬號。
初始化本地倉庫
$ git init
本地倉庫位於工作目錄下的 .git 目錄中,本地倉庫中保存了 Git 管理的項目文件以及各個文件的歷史版本,該目錄由 Git 管理和維護,禁止手動修改。
把文件添加到 Git 倉庫暫存區
$ git add xxx # 暫存當前目錄下的 xxx文件
$ git add . # 暫存當前目錄下所有未跟蹤的和已修改的文件
文件分類和狀態:
工作目錄下的文件,分爲未跟蹤和已跟蹤的文件:
未跟蹤的文件:是指該文件未被納入版本控制,Git 不會記錄該文件的任何改動。
已跟蹤的文件:是指該文件已被納入版本控制,Git 將監視用戶對這些文件的操作,文件可能會處於不同的狀態。已跟蹤文件可能會處於如下三種狀態之一:已修改(modified)、已暫存(staged)和已提交(committed)。
已修改:是指該文件自上次保存後又被修改了但還沒有暫存;
已暫存:是指該文件已被暫存到本地倉庫中,但還未提交;
已提交:是指該文件已被保存在本地倉庫中的某個版本中了。
對文件的增刪改查使用文本編輯器 vi 或 vim 工具,操作等同與Linux系統:
https://blog.csdn.net/suoyue_py/article/details/104183622
提交
$ git commit -m '提交說明'
將所有暫存的文件永久保存到本地倉庫中。-m 選項後面跟的是本次提交的說明。
通常的做法是:多次使用 git add命令暫存多個文件,最後使用 git commit一次性提交產生一個版本記錄。
使用-a 參數將暫存和提交一步完成:
$ git commit -a -m "註釋" #提交所有已修改的文件,未跟蹤的文件不做處理
查看文件狀態
$ git status #命令查看工作目錄下的文件狀態
紅色文件名錶示該文件要麼是未跟蹤,要麼是已修改還未暫存
綠色文件名錶示已暫存但未提交的文件
查看版本記錄
$ git log
默認按照從最近到最遠的順序顯示提交記錄。如果嫌輸出信息太多,可加上–pretty=oneline 參數:$ git log --pretty=oneline
指明Github遠程倉庫
git remote add origin 倉庫地址
上傳到Github遠程倉庫
git push -u origin master
Git管理遠程倉庫
使用遠程倉庫的目的/作用:備份,實現代碼共享集中化管理
將本地倉庫同步到git遠程倉庫中
由於本地 Git 倉庫和 GitHub 倉庫之間的傳輸是通過SSH加密的,所以需要使用Git 來配置驗證信息,使用以下命令生成 SSH Key:
$ ssh-keygen -t rsa -C "@Github上註冊的郵箱"
之後會要求確認路徑和輸入密碼,此處默認,一路回車即可。成功的話會在系統盤的用戶目錄下生成 .ssh 文件夾,進去後用記事本打開 id_rsa.pub 文件,複製裏面的內容 -->> key(Ctrl+A/C)
回到 github 上,進入 Account -->> Settings(賬戶配置),左邊選擇 SSH and GPG keys,然後點擊 New SSH key 按鈕,title ->>設置標題,可以隨便填,Key ->> 粘貼上面生成的 key
添加成功後界面如下所示
可輸入以下命令,驗證是否成功:
$ ssh -T [email protected]
到此成功,即可按照上面Git的步驟來管理Github
其他操作
查看當前配置的遠程庫(即別名)
$ git remote
加上 -v 參數,可以看到每個別名的實際鏈接地址
$ git remote -v
刪除遠程倉庫:
$ git remote rm [別名]
Git克隆操作 /目的
將遠程倉庫(github對應的項目)複製到本地
$ git clone 倉庫地址
檢出
$ git checkout
命令有兩種功能:
- 一是檢出文件(使用本地倉庫中的文件覆蓋工作區中的文件)
- 二是檢出分支
檢出單個文件:使用本地倉庫中暫存的或已提交的文件覆蓋工作區中的文件
$ git checkout -- <file-name>
檢出所有文件:使用本地倉庫中的所有文件覆蓋工作區的所有文件
$ git checkout .
【擴展】
檢出命令完整格式:
$ git checkout [<commit hash>] [--] <paths>
- 若未提供commit hash,則檢出倉庫中最新的版本
- 若提供了commit hash,則檢出指定的版本中的文件,此時暫存的文件會被清除
【示例】
$ git checkout 26a2e80 – readme.txt
$ git checkout HEAD – readme.txt #檢出最後一次提交的文件,暫存內容會被清除
HEAD 是 Git 中的一個指針,通常指向當前分支,此處表示檢出當前分支的最後一次提交的文件。
$ git checkout 26a2e80 #如果未給出文件路徑,則檢出指定版本的所有文件覆蓋工作區,此時 HEAD將處於遊離狀態,如果不使用相關的命令讓 HEAD 指向某個分支,則後續無法執行提交操作。
$ git checkout master
這樣 HEAD就指向了 master 分支,以後的提交都是在 master 分支上進行。
重置單個文件:主要用來清除暫存的文件,不影響工作區中的文件內容
$ git reset <file-name>
【示例】$ git reset project.ini
重置後工作區文件的狀態會發生改變:如果該文件從未提交過,則文件變爲未跟蹤的;如果曾經提交過,則文件狀態變爲已修改未暫存。
重置 本地倉庫 整個項目 到特定版本
$ git reset --hard <Commit Hash>
此操作會將本地倉庫中當前分支重置到指定的版本,後續的提交被丟棄。
- - hard 參數表示工作目錄下的文件也被重置。如果沒有–hard 參數,則只重置倉庫中的版本,工作區中的文件保持現狀不被重置。
【示例】重置爲某個特定版本,可使用對應的版本號(版本號前幾位即可):
$ git reset --hard 3628164
另外,HEAD 代表當前分支的最新版本,上個版本可使用 HEAD^表示,上上個版本則是 HEAD^^,多個 ^ 可寫成 HEAD~n。
【示例】$ git reset --hard HEAD^
說在最後:需要詳細文檔可於公衆號"suoyue_zhan" (下方掃碼直達)後臺回覆 git