從本質上講,Git可以記錄文字的變化,但其定義是一個版本控制系統。你有可能已經以這種或那種方式使用了git:由於它的分散性質,它是程式碼版本控制的事實標準,與集中式的Apache Subversion(SVN)相對。
安裝git
要檢查是否安裝了Git,在終端機運行:
$ git version git version 2.27.0.rc1.windows.1
如果沒有安裝,請依照https://git- scm.com/downloads 上的說明。 Mac用戶可以用brew來安裝它:brew install git。
配置git
我們只需要配置一些東西
git config --global user.name "前端小智" && # 你的名字 git config --global user.email johndoe@example.com && # 你的邮箱 git config --global init.defaultbranch main # 默认分支名称,与GitHub兼容
可以用下面命令查看當前的全域配置
git config --global --list # Type ":q" to close
git在純文字中儲存配置,如果你想直接修改,可以直接在~/.gitconfig或~/.config/git/config中編輯全域配置。
正如命令所建議的那樣,去掉--global會使這些命令的適用範圍擴大到目前資料夾。但要測試這一點,我們需要一個儲存庫。
建立新儲存庫
儲存庫只是一個資料夾,裡面有我們想要追蹤的所有東西。透過指令建立:
mkdir gitexample && cd gitexample && git init # gitexample git:(main)
這個指令在gitexample資料夾內建立了一個.git資料夾。這個隱藏的.git資料夾就是版本庫:所有的本機設定和修改都儲存在這裡。
改變
在儲存庫中建立一些東西:
echo "Hello, Git " >> hello.txt
運行git status,我們會看到新建立的未被追蹤的文件。
git status # On branch main # # No commits yet # # Untracked files: # (use "git add <file>..." to include in what will be committed) # hello.txt # # nothing added to commit but untracked files present (use "git add" to track)
根據提示建議,我們新增檔案:
git add .
如果我們不想要所有檔案提新增可以使用
git add hello.txt
如果你現在檢查版本庫的狀態,你會看到文件已經被加入了(又稱為staged),但還沒有提交。
git status # On branch main # # No commits yet # # Changes to be committed: # (use "git rm --cached <file>..." to unstage) # new file: hello.txt
為了記錄這些變化,我們來提交它。
git commit -m "Add hello.txt" # [main (root-commit) a07ee27] Adds hello.txt # 1 file changed, 2 insertions(+) # create mode 100644 hello.txt
git commit -m
檢查提交記錄:
git log # Author: qq449245884 <44924566884@qq.com> # Date: Sat Jul 17 14:57:24 2021 +0800 # # Add hello.txt #
建立分支
#在很多情況下,擁有一個獨立的初始程式碼版本是很有用的:例如,在測試你不確定的功能時,或在一起工作時避免程式碼衝突。這正是git分支的意義所在:它從歷史上一個特定的點開始生長。
要建立分支,運行git branch NAME,要切換分支,運行git checkout NAME。或簡單地
git checkout -b dev # 切换到一个名为“dev”的新分支 # Switched to a new branch 'dev' # gitexample git:(dev)
我們在Hello.txt檔案中更改一些內容並提交更改:
echo "\nHello, Git Branch" >> hello.txt && git commit -am "Change hello.txt"
現在,切換到主分支:
git checkout main && cat hello.txt # Switched to branch 'main' # Hello, Git
正如你所看到的,文件內容仍然和原來一樣。為了比較分支,我們可以運行。
git diff dev # diff --git a/hello.txt b/hello.txt # index 360c923..b7aec52 100644 # --- a/hello.txt # +++ b/hello.txt # @@ -1,3 +1 @@ # Hello, Git # - # -Hello, Git Branch # (END) # type ":q" to close
我們在主分支中進行更改:
echo "\nHi from Main Branch" >> hello.txt && git commit -am "Change hello.txt from main" # [main 9b60c4b] Change hello.txt from main # 1 file changed, 2 insertions(+)
現在讓我們試著把這些變化合併起來。
git merge dev # Auto-merging hello.txt # CONFLICT (content): Merge conflict in hello.txt # Automatic merge failed; fix conflicts and then commit the result.
因為檔案在同一個地方被修改了兩次,我們就產生了衝突。看看這個檔案
cat hello.txt <<<<<<< HEAD Hello, Git Hi from Main Branch ======= Hello, Git >>>>>>> dev
還有一個命令可以單獨查看更改:
git diff --ours # :q to close git diff --theirs #:q to close
你可以手動編輯檔案並提交修改,但我們設想一下,我們只想要其中一個版本。我們就從中止合併開始。
git merge --abort
並以 "theirs"策略重新啟動合併,這意味著在發生衝突時,我們將使用傳入的分支所堅持的東西。
git merge -X theirs dev # Auto-merging hello.txt # Merge made by the 'recursive' strategy. # hello.txt | 5 +---- # 1 file changed, 1 insertion(+), 4 deletions(-)
與此策略相反的是 "ours"。將這兩個改動合併在一起,需要手動編輯(或使用git mergetool)。
查看所有分支運行的清單
git branch # type :q to close # dev # * main
最後,刪除分支運行:
git branch -d dev # Deleted branch dev (was 6259828).
重置分支
分支從git歷史中的某一點開始"生長(grow)",rebase 允許改變這個點。我們再建立一個分支,並在hello.txt上加入一些改變。
git checkout -b story && echo "Once upon a time there was a file">>story.txt && git add story.txt && git commit -m "Add story.txt" # Switched to a new branch 'story' # [story eb996b8] Add story.txt # 1 file changed, 1 insertion(+) # create mode 100644 story.txt
現在,我們回到主分支並添加更改:
git checkout main && echo "Other changes" >> changes.txt && git add changes.txt && git commit -m "Add changes.txt"
重置我們在main到story分支所做的更改:
git checkout story && git rebase main # Successfully rebased and updated refs/heads/story.
可以看到在主分支建立的新檔案被加入到story 分支。
ls # changes.txt hello.txt story.txt
注意:不要rebase 別人可能使用過的分支,例如主分支。另外,請記住,在遠端版本庫上進行的每一次歷史操作都需要強制這些修改生效。
遠端儲存庫
如果你還沒有,請建立一個GitHub帳戶,登入並建立一個新的空倉庫(私人或公有)。
假設版本庫的名字是 "example",執行以下指令(改成你的使用者名稱)。
git remote add origin git@github.com:USERNAME/example.git && git push -u origin main
你可以重新整理頁面,看到主分支的檔案。要把所有本地分支推送到遠端倉庫,請運行。
git push --all origin
我們在GitHub上編輯一些東西:只要點擊任何文件和鉛筆圖示。新增一行你想要的任何文字,然後按 "提交修改"。
在本地運行這個命令,以獲得遠端的變化。 【推薦:Git教學】
git checkout main && git pull
管理未提交的變更
如果你想儲存你的本機修改以便以後使用,你可以使用git stash。
echo "Changes" >> hello.txt && git stash
現在你可以使用以下指令來檢查、套用或放棄這些變更。
git stash list # stash@{0}: WIP on main: 92354c8 Update changes.txt git stash pop # 应用更改 git stash drop # 撤销修改
你可以使用 stash 编号,即git stash pop 0来应用一个特定的储藏库,或者git stash drop 0来撤销。
如果你想放弃所有的本地修改,只需恢复版本库到最后提交的修改,请运行。
git restore .
管理提交的更改
一旦你创建了一个提交,这个变化就会保存在本地的git历史中。如前所述,所有影响远程历史的修改都需要git push --force。以下所有命令都要记住这一点。
我们从编辑最后的提交信息开始。
git commit --amend # type :wq to save and close # Press "i" to edit, "Esc" to stop editing
我们把一切重设到最开始怎么样?
要找到第一次提交的ID,请运行这个命令并滚动(向下箭头)到最后。
git log --abbrev-commit # commit a07ee27 # Author: Your Name <your@email.address> Date: Sun Jul 11 11:47:16 2021 +0200 Adds hello.txt (END) # type ":q" to close
现在运行这个来重置版本库,但保持所有的修改不被缓存。
git reset --soft COMMIT # e.g. a07ee27
与之相反,你也可以进行硬重置,用git reset --hard COMMIT来删除所有修改。还有几种其他的重置方式,你可以从git文档中了解到。
别名
大多数时候,你只需要使用少数几个命令(主要是checkout、add、commit、pull、push和merge),但有些命令可能是你想要“以防万一”的。
存储这些信息的一种方法是git aliases。要配置一个别名,只需在配置中设置它。例如,我经常使用的一个别名是git tree,它以树的形式打印出一个漂亮的历史日志。
git config --global alias.tree 'log --graph --decorate --pretty=oneline --abbrev-commit' # Try it with `git tree`
另一个有用的别名是删除所有合并的分支。
git config --global alias.clbr '!git branch --merged | grep -v \* | xargs git branch -D'
你可以看到它的前缀是"!",这允许我们使用任何命令,而不仅仅是git命令。
~完,我是刷碗智,今天礼拜六写的,要准备去刷碗了,骨的白!
▎作者:Valeria 译者:前端小智 来源:dev 原文:https://dev.to/valeriavg/master-git-in-7-minutes-gai
以上是10分鐘一步步帶你看完最常用的git指令的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Git和GitHub不是同一個東西:Git是一個分佈式版本控制系統,而GitHub是一個基於Git的在線平台。 Git幫助開發者管理代碼版本,通過分支、合併等功能實現協作;GitHub則提供代碼託管、審查、問題管理和社交互動功能,增強了Git的協作能力。

安裝 Git 後,為了更有效地使用,需要進行以下設置:設置用戶信息(姓名和郵箱)選擇文本編輯器設置外部合併工俱生成 SSH 秘鑰設置忽略文件模式

解決 Git 下載速度慢時可採取以下步驟:檢查網絡連接,嘗試切換連接方式。優化 Git 配置:增加 POST 緩衝區大小(git config --global http.postBuffer 524288000)、降低低速限制(git config --global http.lowSpeedLimit 1000)。使用 Git 代理(如 git-proxy 或 git-lfs-proxy)。嘗試使用不同的 Git 客戶端(如 Sourcetree 或 Github Desktop)。檢查防火

Git 下載慢的原因包括網絡連接差、Git 服務器問題、大文件或大量提交、Git 配置問題、計算機資源不足以及其他因素,如惡意軟件。解決方法包括改善網絡連接、調整防火牆設置、避免下載不必要的文件或提交、優化 Git 配置、提供充足的計算機資源以及掃描並刪除惡意軟件。

如何更新本地 Git 代碼?用 git fetch 從遠程倉庫拉取最新更改。用 git merge origin/<遠程分支名稱> 將遠程變更合併到本地分支。解決因合併產生的衝突。用 git commit -m "Merge branch <遠程分支名稱>" 提交合併更改,應用更新。

更新 git 代碼的步驟:檢出代碼:git clone https://github.com/username/repo.git獲取最新更改:git fetch合併更改:git merge origin/master推送更改(可選):git push origin master

可以通過以下步驟刪除 Git 分支:1. 刪除本地分支:使用 git branch -d <branch-name> 命令;2. 刪除遠程分支:使用 git push <remote-name> --delete <branch-name> 命令;3. 保護分支:使用 git config branch. <branch-name>.protected true 添加保護分支設置。

Git 代碼合併過程:拉取最新更改以避免衝突。切換到要合併的分支。發起合併,指定要合併的分支。解決合併衝突(如有)。暫存和提交合併,提供提交消息。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

禪工作室 13.0.1
強大的PHP整合開發環境

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中