開一家網(wǎng)站建設(shè)公司要多少錢深圳市網(wǎng)絡(luò)營銷推廣服務(wù)公司
git基本知識(shí)
工作區(qū)域
- 遠(yuǎn)程倉庫: 就是我們托管在github或者其他代碼托管平臺(tái)上的倉庫。
- 本地倉庫: 就是在我們本地通過
git init
命令初始化的新建的倉庫。 - 工作區(qū): 就是我們寫代碼、編輯文件的地方。
- 暫存區(qū): 當(dāng)工作區(qū)的內(nèi)容寫好了之后,就會(huì)通過add命令,將工作區(qū)的內(nèi)容放到暫存區(qū),等待commit命令提交到本地倉庫中。
文件狀態(tài)
- 未跟蹤的(untracked): 表示在工作區(qū)新建了某個(gè)文件,還沒有add。
- 已修改(modofied): 表示在工作區(qū)中修改了某個(gè)文件,還沒有 add。
- 已暫存(staged): 表示把已修改的文件已a(bǔ)dd到暫存區(qū)域。
- 已提交(commit): 表示文件已經(jīng)commit到本地倉庫保存起來了。
git常用操作
1.git clone?[遠(yuǎn)程倉庫的HTTP/SSH的URL]
用于將遠(yuǎn)程倉庫克隆到本地??寺『蟊镜鼐陀幸粋€(gè)本地倉庫。注意:遠(yuǎn)程倉庫不管哪個(gè)分支都是一個(gè)url,所以你想要克隆其它分支時(shí)就要指定分支,例如,如果你要克隆develop分支,可以使用以下命令:
git clone -b develop <repository-url>
或者
git clone --branch develop <repository-url>
2. git init?
用于初始化一個(gè)本地倉庫
本地已經(jīng)有個(gè)本地倉庫,但是對(duì)應(yīng)的遠(yuǎn)程倉庫還未創(chuàng)建,怎么將本地代碼推到遠(yuǎn)程倉庫??
1.創(chuàng)建一個(gè)遠(yuǎn)程倉庫
2.檢查本地倉庫是否與遠(yuǎn)程倉庫關(guān)聯(lián):
git remote -v
?
輸出空說明沒有任何關(guān)聯(lián)
3.將本地倉庫與遠(yuǎn)程倉庫關(guān)聯(lián):
git remote add origin <遠(yuǎn)程倉庫地址>
?origin:遠(yuǎn)程倉庫的默認(rèn)名稱
4.將本地文件push到遠(yuǎn)程倉庫:
git push -u origin main
-u:設(shè)置默認(rèn)的上游分支(upstream),便于后續(xù)操作。這會(huì)讓main分支與遠(yuǎn)程的main分支關(guān)聯(lián)起來,之后可以直接用 git push 或 git pull
main:遠(yuǎn)程倉庫分支名稱
3.日常操作
①.git add
②.git commit -m
③. git push
④. git pull
⑤.git fetch
git fetch和git pull的區(qū)別?
git fetch和git pull的區(qū)別?
git fetch命令用于從遠(yuǎn)程倉庫獲取最新的代碼提交和分支信息,但它不會(huì)將獲取到的內(nèi)容應(yīng)用到你的工作目錄或當(dāng)前分支,也不會(huì)改變你本地倉庫的歷史記錄。相當(dāng)于是將遠(yuǎn)程倉庫的最新信息下載到你的本地倉庫,你可以通過git merge或git rebase將這些更新合并到你的當(dāng)前分支。
?git pull=git fetch+ git merge
⑥.git merge
⑦.git rebase
git merge/rebase到底是哪合并到哪了?
一句話,就是你站在哪個(gè)分支上就合并到了哪個(gè)分支上,例如:git checkout feature , git merge main 就是將main主分支的新內(nèi)容合并到功能分支上
git merge和 git rebase的區(qū)別是什么?
當(dāng)我們從主干(Main)創(chuàng)建了一個(gè)新的分支(Feature)開始開發(fā)代碼時(shí),然后另外有人把自己的代碼提交到主干(Main)之后,就會(huì)產(chǎn)生分叉的提交記錄。
這時(shí)候我們想把main分支上的新內(nèi)容合并到我們的分支上就有兩種選擇:
1.git merge
git checkout feature //站在feature分支
git merge main //將main合并到feature
提交紀(jì)錄上就會(huì)有下面效果:
相當(dāng)于在feature分支中創(chuàng)建一個(gè)新的“merge commit'”,它將兩個(gè)分支的更改合并到一個(gè)新的提交中。
2.git rebase
git checkout feature
git rebase main
rebase意思變基,其實(shí)就是重新設(shè)立新起點(diǎn)的意思,我們?cè)趂eature上執(zhí)行的rebase,就重新設(shè)立了feature的起點(diǎn),就是將main上的commit記錄在feature上回放了一遍?
這時(shí)候如果我們想將feature合并到主干上,就可以執(zhí)行
git checkout main
git merge feature?
merge完后,整個(gè)合并線條是直的,就會(huì)使提交記錄變得清爽??梢詤⒖紃ebase這個(gè)大佬對(duì)rebase的介紹,很詳細(xì)。
分支操作?
git branch -v
查看都是有哪些分支,當(dāng)前處于的分支會(huì)被星星標(biāo)記?
git checkout -b <分支名稱>
切換到新分支,并創(chuàng)建該分支?
踩坑經(jīng)驗(yàn)總結(jié)
1.git克隆報(bào)錯(cuò)Failed to connect to 127.0.0.1 port 7890 after 2034 ms: Couldn‘t connect to server
當(dāng)無法連接github時(shí),可以設(shè)置git的代理
git config --global http.proxy http://127.0.0.1:7890
這種時(shí)全局配置,在C:\Users\[你的用戶名]\.gitconfig里能看到設(shè)置的全局配置
取消:
git config --global --unset http.proxy
或把配置文件中的配置信息刪除。
注意的是,打開代理后,要打開clash。
2.代碼push之前一定要先pull或fetch