您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么高效地使用Git”,在日常操作中,相信很多人在怎么高效地使用Git問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么高效地使用Git”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Git 是一個免費且開源的版本控制系統,是目前最為流行的 源代碼管理 工具,本篇文章從 Git 的基本指令到進階操作,包含了使用 Git 的過程中遇到的大部分大小問題
基本操作
初始化設置
設置用戶名和郵箱
$ git config --global user.name "用戶名" $ git config --global user.email "郵箱" - 其中,--global 是全局設置,如果想對特定項目使用不同配置,可取消該參數 - git config 還可以設置其他選項,因為平時不怎么用,所以詳細可以參考 git config --help
查看配置
$ git config --list # 查看 Git 的某一項配置 $ git config user.name
創建 SSH Key
$ ssh-keygen -t rsa -C "郵箱" # 然后會在用戶主目錄下,發現 .ssh 目錄,其中包含 id_rsa 和 id_rsa.pub 兩個文件 # id_rsa.pub 是 SSH Key 公鑰,將其添加到 github 的 SSH keys 中,就可以將本地倉庫推送到遠程倉庫了
創建本地倉庫,進行基本源代碼管理
# 初始化倉庫 $ git init # 將源代碼提交到暫存區 $ git add . # 提交暫存區的源代碼 $ git commit -m "本次提交說明" # 查看當前狀態 $ git status $ git status -sb // 查看 branch 和 short status # 查看提交歷史 $ git log
將本地代碼同步至遠程倉庫
# 克隆 $ git clone 倉庫地址 # 遠程倉庫 $ git remote # 分支 $ git branch 分支名 // 創建 $ git checkout 分支名 // 切換 # 合并 $ git merge 分支名 # 拉取更新 $ git fetch 主機名 分支名 // 不合并 $ git pull 主機名 分支名 // 合并 # 推送 $ git push 主機名 分支名 # 打標簽 $ git tag -a 版本號 -m "版本說明"
進階操作
忽略 SSL 證書錯誤
通過 HTTPS 訪問 Git 遠程倉庫時,如果服務器的 SSL 證書未經過第三方機構簽署,那么 Git 就會阻止這一操作
$ env GIT_SSL_NO_VERIFY=true git clone 倉庫地址 $ cd 倉庫名稱 $ git config http.sslVerify "false" - 使用 env 命令保證了忽略證書錯誤只應用于此次克隆
儲藏
當有未提交的修改,執行 切換分支 或 拉取更新 需要倉庫狀態保持 clean 的一些操作時,可以使用 git stash 將目前的修改臨時儲藏起來
# 儲藏 $ git stash # 查看儲藏 $ git stash list # 應用最近儲藏并刪除 $ git stash pop # 應用指定儲藏不刪除 $ git stash apply [儲藏名] # 移除儲藏 $ git stash drop 儲藏名
撤消操作
對于 工作區 和 暫存區 的修改,我們不能保證上次操作是完美的,git 就是這么強大,提供了很多 反悔 的操作
# 丟棄暫存區的文件,放回工作區 $ git reset HEAD 文件 # 丟棄工作區的修改 $ git checkout -- 文件 - 修改后沒添加到暫存區,則撤銷到 git commit 時的狀態 - 修改后添加到暫存區,則撤銷到 git add 時的狀態 # 覆蓋上次提交 $ git commit --amend [-m "本次提交說明"]
版本回退
# 回退到之前的某次提交 $ git reset --hard commit_id - HEAD 指向當前版本 - git log 可以查看提交歷史,以便確定要回退到哪個版本 - git reflog 可以查看命令歷史,以便確定要回到未來的哪個版本 # 撤銷一個已經提交 $ git revert commit_id - 并沒有從項目歷史中移除這個 commit, 而是生成一個新的 commit
分支
Git 有很多優點,其中 分支使用方便 就是很顯著的一條,創建倉庫的時候,master 是默認的分支,一般,我們會創建其他的分支在上面進行開發,完后再將它們合并到主分支上來
# 創建開發分支 $ git branch dev # 創建并切換到開發分支 $ git checkout -b dev # 切換回主分支 $ git checkout master # 快速檢出上一個分支 $ git checkout - # 查看所有分支 $ git branch -a # 查看合并到當前分支的分支列表 $ git branch --merged # 查看還沒合并到當前分支的分支列表 $ git branch --no-merged # 刪掉臨時分支 $ git branch -d fix # 將開發分支推送到遠程倉庫 $ git push origin dev # 重命名分支 $ git branch -m dev develop # 刪除遠程分支 - $ git push origin --delete 分支名 - $ git push origin :分支名
標簽
軟件要發布一個新的版本的時候,我們通常給它打個 tag
# 打標簽 $ git tag [-a] 標簽名 [-m 附注信息 某次提交的id] # 推送標簽到遠程倉庫 $ git push origin 標簽名 $ git push origin --tags // 推送所有標簽 # 刪除本地標簽 $ git tag -d 標簽名 # 刪除遠程標簽 $ git push origin --delete 標簽名 $ git push origin :refs/tags/標簽名
提交
# 花式查看提交 $ git log --pretty=oneline // 只顯示一行 $ git log --abbrev-commit // 只顯示 SHA-1 的前幾個字符 $ git log --graph // 顯示 ASCII 圖形表示的分支合并歷史 $ git log --relative-date // 使用較短的相對時間顯示 $ git log --name-only // 僅在提交信息后顯示已修改的文件清單 $ git log -n // 顯示最近的 n 條提交 $ git log --author=fengshangwuqi // 僅顯示指定作者相關的提交 $ git log --grep // 僅顯示含指定關鍵字的提交 # 沒有任何改動的提交 git commit -m "a no chnage commit" --allow-empty 主要用于一下情形: - 標記新的工作或一個新功能的開始 - 記錄對項目的跟代碼無關的改動 - 跟使用你倉庫的其他人交流 - 作為倉庫的第一次提交,因為第一次提交后不能被 rebase
git pull 與 git pull --rebase 的區別
$ git pull = git fetch + git merge $ git pull --rebase = git fetch + git rebase
git merge 與 git rebase 的區別
# 相同點 整合的最終結果所指向的快照是一樣的 # 不同點 ## 提交歷史不同 - merge 會生成一個新的 commit 節點,提交歷史忠實地記錄了實際發生過什么 - rebase 不會產生額外的 commit 節點,提交歷史反映了項目過程中發生了什么 ## 沖突處理策略不同 - merge 遇見沖突后會直接停止,等待手動解決沖突并重新提交后,才能再次 merge - rebase 遇見沖突后會暫停當前操作,開發者可以選擇手動解決沖突,然后 git rebase --continue 繼續,或 --skip 跳過,或 --abort 停止 # 注意事項 ## 推薦 git merge 結合 --no-ff 一起使用 - git merge 默認是 fast forward(快速合并),適用于分支 B 從分支 A 從 checkout 出來后,分支 A 沒有 commit - 如果分支 B 被 checkout 出來后,分支 A 也有修改,那么就沒法快速前進合并,會額外建立一個 merge commit,對分支 A 和分支 B 做一個合并操作,即 --no-ff,它的好處是保持了分支的結構
其他
忽略特殊文件
對于 操作系統自動生成 的文件,編譯生成 的中間文件,以及帶有 敏感信息 的配置文件等,我們不想追蹤,也不想放進我們的遠程倉庫中,這時,我們創建一個 .gitignore 文件來忽略上述文件,下面是一個前端工程忽略的文件參考
# Logs logs *.log # Runtime data pids *.pid *.seed *.DS_Store # testing coverage # Dependency directory node_modules # Bower bower_components/ dist # WebStorm文件 *.idea/ # vscode文件 .vscode/ # Emacs .tern-port .#* *# *~ # vim .agignore # 敏感信息 default.yml
Commit message 指南
好的 Commit message 可以提供更多的歷史信息,方便 快速瀏覽和查找,還可以直接生成 Change log,一般至少包含 type 和 subject,type 是 commit 的類別,subject 是 commit 的簡短描述
## type - feat:添加新功能 - fix:修補缺陷 - docs:修改文檔 - style:修改格式 - refactor:重構 - perf:優化 - test:增加測試 - chore:構建過程或輔助工具的變動 - revert:回滾到上一個版本
除此之外,有興趣的同學還可以添加 gitmoji 和 validate-commit-msg 等更多內容
使用 Commit 信息關閉 Issue
如果某個提交修復了一個 Issue,當提交到某個分支時,提交信息里可以使用 fix/fixes/fixed, close/closes/closed 或者 resolve/resolves/resolved 等關鍵詞,后面再跟上 Issue 號,這樣就會關閉這個 Issue
$ git commit -m "fix: ..., fix #1, #2"
這將會關閉 Issue #1 和 #2,并且在 Issue 討論列表里關聯引用這次提交
如果想鏈接 其他倉庫的 Issue,則使用 {user}/{repo}#ISSUE_NUMBER
快速添加許可證文件
在創建一個倉庫時,Github 會為你提供一個預置的軟件許可證列表
如果此時沒有選擇,后來可以通過 web 界面 create new file,輸入 LICENSE,點擊右側的 choose a license template 來添加
一些不錯的 github 插件
Octotree:提供項目目錄
GitHub Plus:提供每個文件的大小和下載鏈接
GitHub Hovercard:懸停在用戶頭像或倉庫地址上時,通過懸浮框提供更多信息
Sourcegraph for GitHub:提供 IDE 上常用的功能操作
Awesome Autocomplete for GitHub:提供更強大的智能搜索
Isometric Contributions:更友好地展示提交記錄
Git.io
Git.io 是 Github 的 短網址 服務
你可以通過 Curl 命令以普通 HTTP 協議使用它
$ curl -i https://git.io -F "url=https://github.com/..." HTTP/1.1 201 Created Location: https://git.io/abc123 $ curl -i https://git.io/abc123 HTTP/1.1 302 Found Location: https://github.com/...
Gists
Gists 方便我們管理代碼片段,不必使用功能齊全的倉庫
Gist 可以非常方便地得到便于嵌入到其他網站的 HTML 代碼
而且,Gists 可以像任何標準倉庫一樣被克隆,你可以像 Github 倉庫一樣去修改和更新 Gists,只不過,Gists 不支持目錄,所有文件都添加在倉庫的根目錄下
使用快捷鍵
github 倉庫頁面 提供了一些 快捷鍵 方便大家快速導航,按 ? 可以查看當前頁面支持的 快捷鍵列表
使用表情符
我們在 Pull Requests, Issues, commit, Markdown 文件中可以加我們喜歡的表情,使用方法如下
:name_of_emoji:
比如 :joy: 會返回一個
更多表情,可參考 emoji-cheat-sheet
其中,可能常用的表情有
:tada:
:sparkles:
:bug::
:white_check_mark::
:wrench:
:ok_hand:
:construction_worker:
:whale:
:clap:
到此,關于“怎么高效地使用Git”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。