柚子快報(bào)激活碼778899分享:Git 的介紹和使用方法
柚子快報(bào)激活碼778899分享:Git 的介紹和使用方法
Git是什么?
Git是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)(類似于同時(shí)協(xié)作,每個(gè)人負(fù)責(zé)一個(gè)模塊后上傳到分支dev下,負(fù)責(zé)人審核過(guò)后合并到master中)。
下載方法和安裝
直接到官網(wǎng)下載后,默認(rèn)安裝。
Git - 安裝 Git
打開(kāi) 在桌面按著shift鍵同時(shí)鼠標(biāo)右鍵 會(huì)出現(xiàn)一個(gè)Open Git Bash here
單擊打開(kāi)后輸入
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
your name的位置填自己的名字(最好是英文)
email@example.com的位置填自己的郵箱
如何創(chuàng)建本地庫(kù)
$ mkdir learngit 創(chuàng)建一個(gè)文件夾叫 learngit???????
$ cd learngit ?? cd 是打開(kāi)這個(gè)文件夾
$ cd d: 切換到d盤(pán)目錄
$ cd xx/xx/learngit 打開(kāi)xx文件夾下的xx文件夾的learngit文件夾
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop 在桌面打開(kāi) 默認(rèn)是桌面的路徑 我的桌面放在d盤(pán)所以是d盤(pán)下的
$ cd d: cd 切換 意思就是回到d盤(pán)下的根目錄
l@LAPTOP-A06MTDD6 MINGW64 /d 現(xiàn)在的狀態(tài)就是在 d盤(pán)的根目錄
$ cd study/work/vscode/test cd 打開(kāi)d盤(pán)目錄下最后的test文件
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test 現(xiàn)在在test文件下
$ mkdir learngit mkdir是創(chuàng)建一個(gè)名叫l(wèi)earngit的文件夾
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test
$ cd learngit 打開(kāi)創(chuàng)建的文件夾
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit
$ git init 然后通過(guò) git init 這個(gè)命令將這個(gè)目錄添加到Git本地管理的倉(cāng)庫(kù)
Initialized empty Git repository in D:/Study/work/Vscode/test/learngit/.git/
然后會(huì)創(chuàng)建一個(gè) .git 文件夾
.git 文件夾默認(rèn)是隱藏在learngit文件夾中防止用戶誤刪
想要驗(yàn)證 需要打開(kāi)文件資源管理器到learngit文件下后 點(diǎn)功能查看 顯示 隱藏的項(xiàng)目 即可
如何將文件放入git本地倉(cāng)庫(kù)
手動(dòng)在learngit 文件夾下新建一個(gè) readme.txt 文本
第一步輸入 git add 添加到倉(cāng)庫(kù)
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git add readme.txt
此時(shí)的readme.txt 并未直接在倉(cāng)庫(kù) 而是在暫存區(qū)
第二步輸入git commit 將文件提交到倉(cāng)庫(kù)
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git commit -m "第一次提交" "" 這個(gè)里面是提交時(shí)需要寫(xiě)入的描述 標(biāo)識(shí)為什么上傳 區(qū)分
[master (root-commit) 99e019d] 第一次提交 這是提交后反饋的信息
1 file changed, 1 insertion(+)
create mode 100644 readme.txt
$ git add file1.txt
$ git add file2.txt file3.txt 可以同時(shí)將兩個(gè)文件提交到暫存區(qū)
$ git commit -m "add 3 files." 同時(shí)可以將三個(gè)文件同時(shí)提交的本地倉(cāng)庫(kù)
git status 命令可以讓我們時(shí)刻掌握倉(cāng)庫(kù)的狀態(tài)
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git status
On branch master
nothing to commit, working tree clean
git diff 命令可以讓我們查看提交的文件和 當(dāng)前的文件有什么區(qū)別?
下面意思就是說(shuō) 當(dāng)前文件比提交的 多了一行 第二次提交 原因是我們此時(shí)還未上傳到本地倉(cāng)庫(kù)
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git diff
diff --git a/readme.txt b/readme.txt
index ab5b55f..5843bf4 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1 +1,2 @@
-文本文本
\ No newline at end of file
+文本文本
+第二次提交
\ No newline at end of file
查看日志
git log 命令是查看版本提交的日志 方便回到指定的版本
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git log
commit 8ade6008934d486c570228a9e53570ba6fd80853 (HEAD -> master)
Author: 顯示的自己的名字和郵箱號(hào)
Date: Sat Jul 20 09:40:17 2024 +0800
三次
commit 0427f038d73926bfc0acd505bbe754fae40578a8
Author: 顯示的自己的名字和郵箱號(hào)
Date: Sat Jul 20 09:39:50 2024 +0800
第二次
commit 99e019dfec88d11d515f852e6b0c8e9d00552c6d
Author: 顯示的自己的名字和郵箱號(hào)
Date: Sat Jul 20 09:33:26 2024 +0800
第一次提交
git log --pretty=oneline 簡(jiǎn)短明了的顯示日志
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git log --pretty=oneline
8ade6008934d486c570228a9e53570ba6fd80853 (HEAD -> master) 三次
0427f038d73926bfc0acd505bbe754fae40578a8 第二次
99e019dfec88d11d515f852e6b0c8e9d00552c6d 第一次提交
返回版本
git reset --hard HEAD^ ????????的意思是返回上一個(gè)版本? ? HEAD 表示當(dāng)前版本
git reset --hard HEAD^^? ? ? ?的意思是返回上上一個(gè)版本
問(wèn)題來(lái)了如果上傳的版本多了 想返回前100個(gè)版本 難道寫(xiě)一百個(gè)^嗎??
可以間寫(xiě) HEAD~100? ? ? 但是同時(shí)有點(diǎn)數(shù)不清了 這時(shí)建議使用 commitID的方法回退
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git reset --hard HEAD^
HEAD is now at 0427f03 第二次
git reset --hard 99e019dfec88d(commitID)?切換指定版本? 只需要前幾位就行
(99e019dfec88d11d515f852e6b0c8e9d00552c6d?)是commitID
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git reset --hard 99e019dfec88d
HEAD is now at 99e019d 第一次提交
git reflog? 查看歷史版本變化? 是你回退到了之前的版本 又想撤回 就可以看到ID 使用上面的切換就行
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git reflog
99e019d (HEAD -> master) HEAD@{0}: reset: moving to 99e019dfec88d
0427f03 HEAD@{1}: reset: moving to HEAD^
8ade600 HEAD@{2}: commit: 三次
0427f03 HEAD@{3}: commit: 第二次
99e019d (HEAD -> master) HEAD@{4}: commit (initial): 第一次提交
工作區(qū)和暫存區(qū)
工作區(qū)的意思就是電腦中的目錄,例如我的learngit文件夾就是一個(gè)工作區(qū)。
版本庫(kù) 工作區(qū)中有一個(gè)隱藏文件夾 .git,這個(gè)不算工作區(qū) 算git的版本庫(kù)里面存放著暫存區(qū)和分支
git restore --staged 撤銷(xiāo)暫存區(qū)的修改
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git add . 添加到暫存區(qū)
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git status 使用status查看文件狀態(tài)
On branch master
Changes to be committed:
(use "git restore --staged
modified: readme.txt
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git restore --staged readme.txt 將文件從暫存區(qū)中撤銷(xiāo)回來(lái)
git restore 撤銷(xiāo)工作區(qū)的修改
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git restore readme.txt 撤銷(xiāo)工作區(qū)中沒(méi)有上傳到暫存區(qū)的內(nèi)容
刪除文件
rm 工作區(qū)刪除一個(gè)文件
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git add text.txt 先往版本庫(kù)中添加一個(gè)新的文件
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git commit -m "add text.txt" 并且上傳
[master 33c8e27] add text.txt
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 text.txt
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ rm text.txt 通過(guò)rm 指令 刪除這個(gè)文件
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git status 使用status指令 會(huì)告訴你工作區(qū)和版本庫(kù)的不同 哪些文件被刪除
On branch master
Changes not staged for commit:
(use "git add/rm
(use "git restore
deleted: text.txt
no changes added to commit (use "git add" and/or "git commit -a")
如果此時(shí)你真的需要把此文件刪除,需在版本庫(kù)中g(shù)it rm刪除該文件 然后git commit 提交
git rm 版本庫(kù)刪除一個(gè)文件?
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git rm text.txt 從版本庫(kù)中刪除
rm 'text.txt'
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git commit -m "remove text.txt" 提交
[master c5a9264] remove text.txt
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 text.txt
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git status 在使用status命令查看 版本庫(kù)和工作區(qū)一致了
On branch master
nothing to commit, working tree clean
此時(shí)刪錯(cuò)了,可以是git checkout指令從版本庫(kù)中恢復(fù) 原因是從版本庫(kù)中替換工作區(qū)的版本
沒(méi)有提交在版本庫(kù)中的(從版本庫(kù)中刪除的)???刪除是無(wú)法還原
如何建立遠(yuǎn)程庫(kù)
創(chuàng)建SSH Key
首先要?jiǎng)?chuàng)建自己的SSH Key,先看看自己的C盤(pán) 用戶 自己的里面有沒(méi)有.ssh文件,如果有,再看看里面有沒(méi)有id_rsa和id_rsa.pub這兩個(gè)文件,如果有說(shuō)明你之前創(chuàng)建過(guò),可以下一步了。如果沒(méi)有需要?jiǎng)?chuàng)建SSH Key: 需要把郵箱換成自己的郵箱,不需要設(shè)置密碼,一直回車(chē)即可。
id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心的告訴別人。
$ ssh-keygen -t rsa -C "郵箱"
打開(kāi)網(wǎng)站 gitee 國(guó)內(nèi)的遠(yuǎn)程倉(cāng)庫(kù),gitHub國(guó)外的遠(yuǎn)程倉(cāng)庫(kù) 可能會(huì)出現(xiàn)打不開(kāi)的現(xiàn)象。
登錄后 右上角點(diǎn)我的頭像 設(shè)置 往下滑找到這個(gè)SSH 公鑰 然后去找到剛才生成的id_rsa.pub 右鍵文本文檔打開(kāi)復(fù)制里面的內(nèi)容到 gitee 里面添加公鑰后去新建一個(gè)倉(cāng)庫(kù) 開(kāi)源就是gitee網(wǎng)站所有人都能看見(jiàn),私有就是只有你和你的倉(cāng)庫(kù)成員看見(jiàn)。倉(cāng)庫(kù)名稱填learngit 點(diǎn)創(chuàng)建即可
然后根據(jù)倉(cāng)庫(kù)提示進(jìn)行綁定
關(guān)聯(lián)遠(yuǎn)程庫(kù)
git remote add origin 遠(yuǎn)程倉(cāng)庫(kù)地址 本地庫(kù)和遠(yuǎn)程庫(kù)關(guān)聯(lián)
git push -u origin master / git push 本地庫(kù)推送到遠(yuǎn)程庫(kù)
輸入后 刷新你的遠(yuǎn)程庫(kù)就可以看見(jiàn)本地庫(kù)推送過(guò)來(lái)的內(nèi)容
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git remote add origin https://gitee.com/lysvip/learngit1.git 本地庫(kù)關(guān)聯(lián)遠(yuǎn)程庫(kù)
l@LAPTOP-A06MTDD6 MINGW64 /d/study/work/vscode/test/learngit (master)
$ git push -u origin "master" 本地庫(kù)推送到遠(yuǎn)程庫(kù)
Enumerating objects: 15, done.
Counting objects: 100% (15/15), done.
Delta compression using up to 32 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (15/15), 1.25 KiB | 1.25 MiB/s, done.
Total 15 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/lysvip/learngit1.git
* [new branch] master -> master
branch 'master' set up to track 'origin/master'.
SSH警告
當(dāng)你第一次使用Git的clone或者push命令連接GitHub時(shí),會(huì)得到一個(gè)警告:
因?yàn)镚it使用SSH連接,而SSH連接在第一次驗(yàn)證GitHub服務(wù)器的Key時(shí),需要你確認(rèn)GitHub的Key的指紋信息是否真的來(lái)自GitHub的服務(wù)器,輸入yes回車(chē)即可。
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
git clone 遠(yuǎn)程倉(cāng)庫(kù)地址 從遠(yuǎn)程庫(kù)克隆到本地?
別的成員想要編寫(xiě)需要先克隆到他的本地才能編寫(xiě) 然后推送更新
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop
$ git clone https://gitee.com/lysvip/learngit1.git
Cloning into 'learngit1'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 15 (delta 2), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (15/15), done.
Resolving deltas: 100% (2/2), done.
git pull 從遠(yuǎn)程庫(kù)獲取最新的版本?
例如兩個(gè) 我先推送到遠(yuǎn)程庫(kù)新的版本 他還在使用舊版本編譯然后也要推送到遠(yuǎn)程庫(kù) 會(huì)出現(xiàn)沖突? 需要先獲取最新版本 在推送就可以解決版本沖突
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
$ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), 269 bytes | 9.00 KiB/s, done.
From https://gitee.com/lysvip/learngit1
43cbb4e..eb9e2c6 master -> origin/master
Updating 43cbb4e..eb9e2c6
Fast-forward
readme.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
分支管理
將功能分發(fā)給兩個(gè)人,兩個(gè)人pull最新的內(nèi)容,在本地創(chuàng)建了自己的分支跟別人的分支不沖突,上傳的遠(yuǎn)程的時(shí)候,只需要將自己的分支和遠(yuǎn)程獲取的分支結(jié)合起來(lái)推送到遠(yuǎn)程倉(cāng)庫(kù)即可。
git branch 分支名 創(chuàng)建分支
git checkout 分支名 切換分支
git checkout -b 分支名 創(chuàng)建并切換分支
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
$ git checkout -b dev
Switched to a new branch 'dev'
git branch 查看當(dāng)前分支
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (dev)
$ git branch
* dev
master
git push origin dev 把本地庫(kù) dev 分支推送到遠(yuǎn)程庫(kù)
$ git push origin dev
git checkout -b dev origin/dev 在本地庫(kù)建 dev 分支并和遠(yuǎn)程庫(kù) dev 分支關(guān)聯(lián)(克隆倉(cāng)庫(kù)的背景下)
$ git checkout -b dev origin/dev
git checkout master 切換到master 分支
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (dev)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
$
git merge 分支名 合并分支 就是將dev里面寫(xiě)的同步到master分支下
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
$ git merge dev
Already up to date.
git branch -d dev刪除分支
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
$ git branch -d dev
Deleted branch dev (was eb9e2c6).
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
$ git branch
* master
刪除遠(yuǎn)程庫(kù)
git remote rm name 刪除遠(yuǎn)程庫(kù) 此時(shí)的刪除只是刪除了本地和遠(yuǎn)程庫(kù)的關(guān)系,不是真正的刪除遠(yuǎn)程庫(kù),真刪除遠(yuǎn)程庫(kù)需要手動(dòng)到gitee網(wǎng)站后臺(tái)中刪除
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
$ $git remote rm origin
bash: remote: command not found
git remot -v 查看遠(yuǎn)程庫(kù)的信息
l@LAPTOP-A06MTDD6 MINGW64 /d/Desktop/learngit1 (master)
$ git remote -v
origin https://gitee.com/lysvip/learngit1.git (fetch)
origin https://gitee.com/lysvip/learngit1.git (push)
柚子快報(bào)激活碼778899分享:Git 的介紹和使用方法
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。