git 常用指令

GIT

GIT簡(jiǎn)介

  1. 什么是git: git是一個(gè)開(kāi)源到分布式版本控制系統(tǒng), 用于高效的管理各種大小項(xiàng)目和文件

  2. 代碼管理工具的用途

  • 防止代碼丟失, 做備份
  • 項(xiàng)目的版本管理和控制, 可以通過(guò)設(shè)置節(jié)點(diǎn)進(jìn)行跳轉(zhuǎn)
  • 建立各自的開(kāi)發(fā)環(huán)境分支, 互不影響, 方便合并
  • 在多終端開(kāi)發(fā)時(shí), 方便代碼的相互傳輸
  1. git的特點(diǎn)
  • git是開(kāi)源的, 多在linux下使用, 可以管理各種文件
  • git是分布式的項(xiàng)目管理工具(svn是集中式的)
  • git的數(shù)據(jù)管理更多樣化, 分享速度快, 數(shù)據(jù)安全
  • git擁有更好的分支支持, 方便多人協(xié)調(diào)

GIT使用

基本概念

  • 工作區(qū): 項(xiàng)目所在操作目錄, 實(shí)際操作項(xiàng)目的區(qū)域
  • 暫存區(qū): 用于記錄工作區(qū)的工作內(nèi)容
  • 倉(cāng)庫(kù)區(qū): 用于備份工作區(qū)的的內(nèi)容
  • 遠(yuǎn)程倉(cāng)庫(kù): 遠(yuǎn)程主機(jī)上的git倉(cāng)庫(kù)

注意: 在本地倉(cāng)庫(kù)中, git總是希望工作區(qū)的內(nèi)容和倉(cāng)庫(kù)區(qū)保持一致, 而且只有倉(cāng)庫(kù)區(qū)的內(nèi)容才能和其他遠(yuǎn)程倉(cāng)庫(kù)交互

初始設(shè)置

配置命令: git config 

配置所有用戶: git config --system [選項(xiàng)]
- 配置文件位置: /etc/gitconfig

配置當(dāng)前用戶: git config --global [選項(xiàng)]
- 配置文件位置: ~/.gitconfig

配置當(dāng)前項(xiàng)目: git config [選項(xiàng)]
- 配置文件位置: project/.git/config
# 配置用戶名
sudo git config --system user.name xxxx

# 配置用戶郵箱
git config --global user.email xxxx@xxxx.com

基本命令

  1. 初始化倉(cāng)庫(kù)

git init
意義: 將某個(gè)項(xiàng)目目錄變?yōu)間it操作目錄, 生成git本地倉(cāng)庫(kù), 該項(xiàng)目可以使用git管理

  1. 查看倉(cāng)庫(kù)本地狀態(tài)

git status
說(shuō)明: 初始化倉(cāng)庫(kù)后默認(rèn)工作在master分支, 當(dāng)工作區(qū)與倉(cāng)庫(kù)區(qū)不一致的時(shí)候會(huì)有提示

  1. 將工作區(qū)記錄到暫存區(qū)

git add [files]
說(shuō)明: 將修改過(guò)的文件(與倉(cāng)庫(kù)區(qū)不同)進(jìn)行記錄, 放入暫存區(qū)

  1. 撤銷暫存記錄

git rm --cached [files]
說(shuō)明: 將暫存區(qū)的文件刪除以取消暫存

擴(kuò)展延申

在git項(xiàng)目中可以通過(guò)項(xiàng)目的某個(gè)文件夾下定義.gitignore文件的方式, 規(guī)定相應(yīng)的忽略規(guī)則, 用來(lái)管理當(dāng)前文件夾下的文件的git提交行為, .gitignore文件是可以提交到共有倉(cāng)庫(kù)中, 這就為該項(xiàng)目下的所有開(kāi)發(fā)者都共享一套定義好的忽略規(guī)則, 在.gitignore中, 遵循響應(yīng)的法則, 在每一行指定一個(gè)忽略規(guī)則

.gitignore忽略規(guī)則

  • file: 表示需要忽略的文件
  • *.a: 表示所有以.a結(jié)尾的文件
  • !lib.a: 表示但lib.a除外
  • build/: 表示忽略build/目錄下的所有文件, 過(guò)濾整個(gè)文件夾
  1. 將文件同步到本地倉(cāng)庫(kù)

git commit [file] -m [message]
說(shuō)明: message表示添加一些同步信息, 表達(dá)同步內(nèi)容

  1. 查看commit日志記錄

git log
git log --pretty=oneline

  1. 比較工作區(qū)文件和倉(cāng)庫(kù)文件差異

git diff [file]

  1. 將暫存區(qū)文件或者某個(gè)commit節(jié)點(diǎn)文件恢復(fù)到工作區(qū)

git checkout [commit] --[file]
說(shuō)明: 為了防止誤操作, checkout還有切換分支的作用

  1. 移動(dòng)或刪除文件

git mv [file] [path]
git rm [files]
注意: 這兩個(gè)操作會(huì)修改工作區(qū)內(nèi)容, 同時(shí)將操作記錄提交到暫存區(qū)

版本控制

  1. 退回上一個(gè)commit節(jié)點(diǎn)

git reset --hard HEAD^
說(shuō)明: 一個(gè)^表示退回一個(gè)版本, 以此類推, 當(dāng)版本回退之后工作區(qū)會(huì)自動(dòng)和當(dāng)前commit保持一致

  1. 退回到指定的commit節(jié)點(diǎn)

git reset --hard [commit_id]

  1. 查看所有操作記錄

git reflog
注意: 最上面的為最新記錄, 可以利用commit_id去往任何操作位置

  1. 創(chuàng)建標(biāo)簽

標(biāo)簽: 在項(xiàng)目中的重要commit位置添加快照, 保存當(dāng)時(shí)的工作狀態(tài), 一般用于版本的迭代

git tag [tag_name] [commit_id] -m [message]
說(shuō)明: commit_id可以不寫則默認(rèn)標(biāo)簽表示最新的commit_id位置, message也可以不寫, 但是最好添加

  1. 查看標(biāo)簽

git tag 查看標(biāo)簽列表
git show [tag_name] 查看標(biāo)簽詳細(xì)信息

  1. 去往某個(gè)標(biāo)簽節(jié)點(diǎn)

git reset --hard [tag_name]

  1. 刪除標(biāo)簽

git tag -d [tag_name]

保存工作區(qū)

  1. 保存工作區(qū)內(nèi)容

git stash save [message]
說(shuō)明: 將工作區(qū)未提交的的修改封存, 讓工作區(qū)回到修改前的狀態(tài)

  1. 查看工作區(qū)列表

git stash list
說(shuō)明: 最新保存的工作區(qū)在最上面

  1. 應(yīng)用某個(gè)工作區(qū)

git stash apply [stash@{n}]
說(shuō)明: 應(yīng)用某個(gè)暫存方案, 最新保存的工作區(qū)在最上面

  1. 刪除工作區(qū)

git stash drop [stash@{n}] 刪除某一個(gè)工作區(qū)
git stash clear 刪除所有保存的工作區(qū)

分支管理

定義: 分支即每個(gè)人在原有代碼(分支)的基礎(chǔ)上建立自己的工作環(huán)境, 單獨(dú)開(kāi)發(fā), 互不干擾, 完成工作開(kāi)發(fā)后在進(jìn)行統(tǒng)一分支合并

  1. 查看分支情況

git branch
說(shuō)明: 前面帶*的分支表示當(dāng)前的工作分支

  1. 創(chuàng)建分支

git branch [branch_name]
說(shuō)明: 創(chuàng)建新分支

  1. 合并分支

git merge [branch_name]
將其他分支的內(nèi)容合并到當(dāng)前分支, 沖突問(wèn)題是合并分支過(guò)程中最為棘手的問(wèn)題

當(dāng)分支合并時(shí), 原分支和發(fā)生了變化的分支就會(huì)產(chǎn)生沖突, 當(dāng)合并分支時(shí)添加新的模塊, 這種沖突可以自動(dòng)解決, 只需自己決定commit操作即可
當(dāng)分支合并時(shí)兩個(gè)分支修改了同一個(gè)文件, 則需要手動(dòng)解決沖突

  1. 刪除分支

git branch -d [branch] 刪除分支
git branch -D [branch] 刪除沒(méi)有被合并的分支

遠(yuǎn)程倉(cāng)庫(kù)

遠(yuǎn)程倉(cāng)庫(kù)上的git倉(cāng)庫(kù), 實(shí)際上git是分布式結(jié)構(gòu), 每臺(tái)主機(jī)的git倉(cāng)庫(kù)結(jié)構(gòu)類似, 只是把別人主機(jī)上的git倉(cāng)庫(kù)稱為遠(yuǎn)程倉(cāng)庫(kù)

GitHub簡(jiǎn)介

github是一個(gè)開(kāi)源的項(xiàng)目社區(qū)網(wǎng)站, 擁有全球最多的開(kāi)源項(xiàng)目, 開(kāi)發(fā)者可以注冊(cè)網(wǎng)站在github上建立自己的倉(cāng)庫(kù)

獲取項(xiàng)目

  • 在本地使用git clone方法獲取遠(yuǎn)程倉(cāng)庫(kù)
git clone https://github.com/xxxx
注意: 獲取到本地的項(xiàng)目會(huì)自動(dòng)和github遠(yuǎn)程倉(cāng)庫(kù)建立連接, 且獲取的項(xiàng)目本身也是git項(xiàng)目

創(chuàng)建刪除git倉(cāng)庫(kù)

遠(yuǎn)程倉(cāng)庫(kù)操作命令

  1. 連接遠(yuǎn)程倉(cāng)庫(kù)

git remote add origin https://github.com/xxxx
說(shuō)明: 連接遠(yuǎn)程倉(cāng)庫(kù), 并命名為origin

  1. 刪除遠(yuǎn)程倉(cāng)庫(kù)

git remote rm origin
說(shuō)明: 刪除名為origin的遠(yuǎn)程倉(cāng)庫(kù)

  1. 向遠(yuǎn)程倉(cāng)庫(kù)推送

git push -u origin master
說(shuō)明: 將本地master分支推送至遠(yuǎn)程origin倉(cāng)庫(kù), -u表示第一次使用origin和本地建立連接

  1. 上傳標(biāo)簽

git push origin [tag] 推送本地標(biāo)簽到遠(yuǎn)程
git push origin --tag 推送本地所有標(biāo)簽到遠(yuǎn)程

  1. 推送舊的版本

git push --force origin 用于本地版本比遠(yuǎn)程版本舊時(shí)強(qiáng)行推送本地版本

  1. 刪除遠(yuǎn)程分支和標(biāo)簽

git branch -a 查看所有分支
git push origin [:branch] 刪除遠(yuǎn)程分支
git push origin --delete tag [tag_name] 刪除遠(yuǎn)程倉(cāng)庫(kù)標(biāo)簽

  1. 獲取遠(yuǎn)程代碼

git pull 獲取遠(yuǎn)程分支代碼
git fetch origin master:tmp 將遠(yuǎn)程分支master拉取到本地, 作為tmp分支
區(qū)別: pull將遠(yuǎn)程內(nèi)容直接拉取至本地, 并和對(duì)應(yīng)分支內(nèi)容進(jìn)行合并, fetch將遠(yuǎn)程分支內(nèi)容拉取到本地, 但是不會(huì)和本地對(duì)應(yīng)分支合并, 自己判斷后在使用merge合并

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容