自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何高效地使用 Git

開源
Git 是一個(gè)免費(fèi)且開源的版本控制系統(tǒng),是目前最為流行的 源代碼管理 工具,本篇文章從 Git 的基本指令到進(jìn)階操作,包含了使用 Git 的過程中遇到的大部分大小問題

 [[385887]]

Git 是一個(gè)免費(fèi)且開源的版本控制系統(tǒng),是目前最為流行的 源代碼管理 工具,本篇文章從 Git 的基本指令到進(jìn)階操作,包含了使用 Git 的過程中遇到的大部分大小問題

基本操作

初始化設(shè)置

設(shè)置用戶名和郵箱

  1. $ git config --global user.name "用戶名" 
  2. $ git config --global user.email "郵箱" 
  3.  
  4. - 其中,--global 是全局設(shè)置,如果想對特定項(xiàng)目使用不同配置,可取消該參數(shù) 
  5. - git config 還可以設(shè)置其他選項(xiàng),因?yàn)槠綍r(shí)不怎么用,所以詳細(xì)可以參考 git config --help 

查看配置

  1. $ git config --list 
  2.  
  3. # 查看 Git 的某一項(xiàng)配置 
  4. $ git config user.name 

創(chuàng)建 SSH Key

  1. $ ssh-keygen -t rsa -C "郵箱" 
  2.  
  3. # 然后會(huì)在用戶主目錄下,發(fā)現(xiàn) .ssh 目錄,其中包含 id_rsa 和 id_rsa.pub 兩個(gè)文件 
  4. # id_rsa.pub 是 SSH Key 公鑰,將其添加到 github 的 SSH keys 中,就可以將本地倉庫推送到遠(yuǎn)程倉庫了 

創(chuàng)建本地倉庫,進(jìn)行基本源代碼管理

  1. # 初始化倉庫 
  2. $ git init 
  3.  
  4. # 將源代碼提交到暫存區(qū) 
  5. $ git add . 
  6.  
  7. # 提交暫存區(qū)的源代碼 
  8. $ git commit -m "本次提交說明" 
  9.  
  10. # 查看當(dāng)前狀態(tài) 
  11. $ git status 
  12. $ git status -sb  // 查看 branch 和 short status 
  13.  
  14. # 查看提交歷史 
  15. $ git log 

將本地代碼同步至遠(yuǎn)程倉庫

  1. # 克隆 
  2. $ git clone 倉庫地址 
  3.   
  4. # 遠(yuǎn)程倉庫 
  5. $ git remote 
  6.   
  7. # 分支 
  8. $ git branch 分支名    // 創(chuàng)建 
  9. $ git checkout 分支名  // 切換 
  10.   
  11. # 合并 
  12. $ git merge 分支名 
  13.   
  14. # 拉取更新 
  15. $ git fetch 主機(jī)名 分支名    // 不合并 
  16. $ git pull 主機(jī)名 分支名    // 合并 
  17.   
  18. # 推送 
  19. $ git push 主機(jī)名 分支名 
  20.   
  21. # 打標(biāo)簽 
  22. $ git tag -a 版本號 -m "版本說明" 

進(jìn)階操作

忽略 SSL 證書錯(cuò)誤

通過 HTTPS 訪問 Git 遠(yuǎn)程倉庫時(shí),如果服務(wù)器的 SSL 證書未經(jīng)過第三方機(jī)構(gòu)簽署,那么 Git 就會(huì)阻止這一操作

  1. $ env GIT_SSL_NO_VERIFY=true git clone 倉庫地址 
  2. $ cd 倉庫名稱 
  3. $ git config http.sslVerify "false" 
  4.  
  5. - 使用 env 命令保證了忽略證書錯(cuò)誤只應(yīng)用于此次克隆 

儲(chǔ)藏

當(dāng)有未提交的修改,執(zhí)行 切換分支 或 拉取更新 需要倉庫狀態(tài)保持 clean 的一些操作時(shí),可以使用 git stash 將目前的修改臨時(shí)儲(chǔ)藏起來

  1. # 儲(chǔ)藏 
  2. $ git stash 
  3.   
  4. # 查看儲(chǔ)藏 
  5. $ git stash list 
  6.   
  7. # 應(yīng)用最近儲(chǔ)藏并刪除 
  8. $ git stash pop 
  9.   
  10. # 應(yīng)用指定儲(chǔ)藏不刪除 
  11. $ git stash apply [儲(chǔ)藏名] 
  12.   
  13. # 移除儲(chǔ)藏 
  14. $ git stash drop 儲(chǔ)藏名 

撤消操作

對于 工作區(qū) 和 暫存區(qū) 的修改,我們不能保證上次操作是完美的,git 就是這么強(qiáng)大,提供了很多 反悔 的操作

  1. # 丟棄暫存區(qū)的文件,放回工作區(qū) 
  2. $ git reset HEAD 文件 
  3.   
  4. # 丟棄工作區(qū)的修改 
  5. $ git checkout -- 文件 
  6.   
  7. - 修改后沒添加到暫存區(qū),則撤銷到 git commit 時(shí)的狀態(tài) 
  8. - 修改后添加到暫存區(qū),則撤銷到 git add 時(shí)的狀態(tài) 
  9.   
  10. # 覆蓋上次提交 
  11. $ git commit --amend [-m "本次提交說明"] 

版本回退

  1. # 回退到之前的某次提交 
  2. $ git reset --hard commit_id 
  3.   
  4. - HEAD 指向當(dāng)前版本 
  5. - git log 可以查看提交歷史,以便確定要回退到哪個(gè)版本 
  6. - git reflog 可以查看命令歷史,以便確定要回到未來的哪個(gè)版本 
  7.   
  8. # 撤銷一個(gè)已經(jīng)提交 
  9. $ git revert commit_id 
  10.   
  11. - 并沒有從項(xiàng)目歷史中移除這個(gè) commit, 而是生成一個(gè)新的 commit 

分支

Git 有很多優(yōu)點(diǎn),其中 分支使用方便 就是很顯著的一條,創(chuàng)建倉庫的時(shí)候,master 是默認(rèn)的分支,一般,我們會(huì)創(chuàng)建其他的分支在上面進(jìn)行開發(fā),完后再將它們合并到主分支上來

  1. # 創(chuàng)建開發(fā)分支 
  2. $ git branch dev 
  3.   
  4. # 創(chuàng)建并切換到開發(fā)分支 
  5. $ git checkout -b dev 
  6.   
  7. # 切換回主分支 
  8. $ git checkout master 
  9.   
  10. # 快速檢出上一個(gè)分支 
  11. $ git checkout - 
  12.   
  13. # 查看所有分支 
  14. $ git branch -a 
  15.   
  16. # 查看合并到當(dāng)前分支的分支列表 
  17. $ git branch --merged 
  18.   
  19. # 查看還沒合并到當(dāng)前分支的分支列表 
  20. $ git branch --no-merged 
  21.   
  22. # 刪掉臨時(shí)分支 
  23. $ git branch -d fix 
  24.   
  25. # 將開發(fā)分支推送到遠(yuǎn)程倉庫 
  26. $ git push origin dev 
  27.   
  28. # 重命名分支 
  29. $ git branch -m dev develop 
  30.   
  31. # 刪除遠(yuǎn)程分支 
  32. - $ git push origin --delete 分支名 
  33. - $ git push origin :分支名 

標(biāo)簽

軟件要發(fā)布一個(gè)新的版本的時(shí)候,我們通常給它打個(gè) tag

  1. # 打標(biāo)簽 
  2. $ git tag [-a] 標(biāo)簽名 [-m 附注信息 某次提交的id] 
  3.   
  4. # 推送標(biāo)簽到遠(yuǎn)程倉庫 
  5. $ git push origin 標(biāo)簽名 
  6. $ git push origin --tags    // 推送所有標(biāo)簽 
  7.   
  8. # 刪除本地標(biāo)簽 
  9. $ git tag -d 標(biāo)簽名 
  10.   
  11. # 刪除遠(yuǎn)程標(biāo)簽 
  12. $ git push origin --delete 標(biāo)簽名 
  13. $ git push origin :refs/tags/標(biāo)簽名 

提交

  1. # 花式查看提交 
  2. $ git log --pretty=oneline  // 只顯示一行 
  3. $ git log --abbrev-commit   // 只顯示 SHA-1 的前幾個(gè)字符 
  4. $ git log --graph           // 顯示 ASCII 圖形表示的分支合并歷史 
  5. $ git log --relative-date   // 使用較短的相對時(shí)間顯示 
  6. $ git log --name-only       // 僅在提交信息后顯示已修改的文件清單 
  7. $ git log -n                      // 顯示最近的 n 條提交 
  8. $ git log --author=fengshangwuqi  // 僅顯示指定作者相關(guān)的提交 
  9. $ git log --grep                  // 僅顯示含指定關(guān)鍵字的提交 
  10.   
  11. # 沒有任何改動(dòng)的提交 
  12. git commit -m "a no chnage commit" --allow-empty 
  13.   
  14. 主要用于一下情形: 
  15. - 標(biāo)記新的工作或一個(gè)新功能的開始 
  16. - 記錄對項(xiàng)目的跟代碼無關(guān)的改動(dòng) 
  17. - 跟使用你倉庫的其他人交流 
  18. - 作為倉庫的第一次提交,因?yàn)榈谝淮翁峤缓蟛荒鼙?nbsp;rebase 

git pull 與 git pull --rebase 的區(qū)別

  1. $ git pull = git fetch + git merge 
  2. $ git pull --rebase = git fetch + git rebase 

git merge 與 git rebase 的區(qū)別

  1. # 相同點(diǎn) 
  2. 整合的最終結(jié)果所指向的快照是一樣的 
  3.   
  4. # 不同點(diǎn) 
  5. ## 提交歷史不同 
  6. - merge 會(huì)生成一個(gè)新的 commit 節(jié)點(diǎn),提交歷史忠實(shí)地記錄了實(shí)際發(fā)生過什么 
  7. - rebase 不會(huì)產(chǎn)生額外的 commit 節(jié)點(diǎn),提交歷史反映了項(xiàng)目過程中發(fā)生了什么 
  8. ## 沖突處理策略不同 
  9. - merge 遇見沖突后會(huì)直接停止,等待手動(dòng)解決沖突并重新提交后,才能再次 merge 
  10. - rebase 遇見沖突后會(huì)暫停當(dāng)前操作,開發(fā)者可以選擇手動(dòng)解決沖突,然后 git rebase --continue 繼續(xù),或 --skip 跳過,或 --abort 停止 
  11.   
  12. # 注意事項(xiàng) 
  13. ## 推薦 git merge 結(jié)合 --no-ff 一起使用 
  14. - git merge 默認(rèn)是 fast forward(快速合并),適用于分支 B 從分支 A 從 checkout 出來后,分支 A 沒有 commit 
  15. - 如果分支 B 被 checkout 出來后,分支 A 也有修改,那么就沒法快速前進(jìn)合并,會(huì)額外建立一個(gè) merge commit,對分支 A 和分支 B 做一個(gè)合并操作,即 --no-ff,它的好處是保持了分支的結(jié)構(gòu) 

其他

忽略特殊文件

對于 操作系統(tǒng)自動(dòng)生成 的文件,編譯生成 的中間文件,以及帶有 敏感信息 的配置文件等,我們不想追蹤,也不想放進(jìn)我們的遠(yuǎn)程倉庫中,這時(shí),我們創(chuàng)建一個(gè) .gitignore 文件來忽略上述文件,下面是一個(gè)前端工程忽略的文件參考

  1. # Logs 
  2. logs 
  3. *.log 
  4.   
  5. # Runtime data 
  6. pids 
  7. *.pid 
  8. *.seed 
  9. *.DS_Store 
  10.   
  11. # testing 
  12. coverage 
  13.   
  14. # Dependency directory 
  15. node_modules 
  16.   
  17. # Bower 
  18. bower_components/ 
  19. dist 
  20.   
  21. # WebStorm文件 
  22. *.idea/ 
  23.   
  24. # vscode文件 
  25. .vscode/ 
  26.   
  27. # Emacs 
  28. .tern-port 
  29. .#* 
  30. *# 
  31. *~ 
  32.   
  33. # vim 
  34. .agignore 
  35.   
  36. # 敏感信息 
  37. default.yml 

Commit message 指南

好的 Commit message 可以提供更多的歷史信息,方便 快速瀏覽和查找,還可以直接生成 Change log,一般至少包含 type 和 subject,type 是 commit 的類別,subject 是 commit 的簡短描述

  1. ## type 
  2.   
  3. - feat:添加新功能 
  4. - fix:修補(bǔ)缺陷 
  5. - docs:修改文檔 
  6. - style:修改格式 
  7. - refactor:重構(gòu) 
  8. - perf:優(yōu)化 
  9. - test:增加測試 
  10. - chore:構(gòu)建過程或輔助工具的變動(dòng) 
  11. - revert:回滾到上一個(gè)版本 

除此之外,有興趣的同學(xué)還可以添加 gitmoji 和 validate-commit-msg 等更多內(nèi)容

使用 Commit 信息關(guān)閉 Issue

如果某個(gè)提交修復(fù)了一個(gè) Issue,當(dāng)提交到某個(gè)分支時(shí),提交信息里可以使用 fix/fixes/fixed, close/closes/closed 或者 resolve/resolves/resolved 等關(guān)鍵詞,后面再跟上 Issue 號,這樣就會(huì)關(guān)閉這個(gè) Issue

  1. $ git commit -m "fix: ..., fix #1, #2" 

這將會(huì)關(guān)閉 Issue #1 和 #2,并且在 Issue 討論列表里關(guān)聯(lián)引用這次提交

如果想鏈接 其他倉庫的 Issue,則使用 {user}/{repo}#ISSUE_NUMBER

快速添加許可證文件

在創(chuàng)建一個(gè)倉庫時(shí),Github 會(huì)為你提供一個(gè)預(yù)置的軟件許可證列表


如果此時(shí)沒有選擇,后來可以通過 web 界面 create new file,輸入 LICENSE,點(diǎn)擊右側(cè)的 choose a license template 來添加


一些不錯(cuò)的 github 插件

  • Octotree:提供項(xiàng)目目錄
  • GitHub Plus:提供每個(gè)文件的大小和下載鏈接
  • GitHub Hovercard:懸停在用戶頭像或倉庫地址上時(shí),通過懸浮框提供更多信息
  • Sourcegraph for GitHub:提供 IDE 上常用的功能操作
  • Awesome Autocomplete for GitHub:提供更強(qiáng)大的智能搜索
  • Isometric Contributions:更友好地展示提交記錄

Git.io

Git.io 是 Github 的 短網(wǎng)址 服務(wù)


你可以通過 Curl 命令以普通 HTTP 協(xié)議使用它

  1. $ curl -i https://git.io -F "url=https://github.com/..." 
  2. HTTP/1.1 201 Created 
  3. Location: https://git.io/abc123 
  4.   
  5. $ curl -i https://git.io/abc123 
  6. HTTP/1.1 302 Found 
  7. Location: https://github.com/... 

Gists

Gists 方便我們管理代碼片段,不必使用功能齊全的倉庫


Gist 可以非常方便地得到便于嵌入到其他網(wǎng)站的 HTML 代碼

而且,Gists 可以像任何標(biāo)準(zhǔn)倉庫一樣被克隆,你可以像 Github 倉庫一樣去修改和更新 Gists,只不過,Gists 不支持目錄,所有文件都添加在倉庫的根目錄下

使用快捷鍵

github 倉庫頁面 提供了一些 快捷鍵 方便大家快速導(dǎo)航,按 ? 可以查看當(dāng)前頁面支持的 快捷鍵列表


使用表情符

我們在 Pull Requests, Issues, commit, Markdown 文件中可以加我們喜歡的表情,使用方法如下

  1. :name_of_emoji: 

比如 :joy: 會(huì)返回一個(gè)

更多表情,可參考 emoji-cheat-sheet

其中,可能常用的表情有

  • :tada:
  • :sparkles:
  • :bug::
  • :white_check_mark::
  • :wrench:
  • :ok_hand:
  • :construction_worker:
  • :whale:
  • :clap:

 

責(zé)任編輯:姜華 來源: 今日J(rèn)ava
相關(guān)推薦

2021-08-05 18:34:55

IntelliJ ID高效

2023-11-28 08:22:05

goroutine語言

2022-05-11 09:51:10

云計(jì)算公共云

2019-09-27 12:44:03

數(shù)據(jù)建模企業(yè)數(shù)據(jù)存儲(chǔ)

2021-05-31 07:57:00

拼接字符串Java

2018-04-24 15:00:59

Kotlin語言函數(shù)

2014-04-14 15:27:01

2011-12-06 13:30:45

2012-05-10 10:20:04

memcached緩存

2023-08-08 13:51:13

Gherkin開發(fā)

2022-11-23 08:00:00

開發(fā)Regulator調(diào)試

2010-03-03 15:06:52

Android 游戲開

2013-02-18 08:39:15

powershell

2018-10-26 08:00:13

數(shù)據(jù)中心容量電力

2021-01-28 14:53:19

PHP編碼開發(fā)

2022-10-12 15:15:56

數(shù)字孿生物聯(lián)網(wǎng)

2011-08-11 10:16:15

2021-10-13 13:51:24

MDKGit管理

2019-07-08 09:10:48

TigGitLinux

2018-10-11 09:40:53

前端JavaScript編程語言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號