【本文以 Gitee 為例】
git學習筆記
Git 安裝
Git 官網下載地址
-
進入官網,下載 git
-
安裝 git
其實一直點選 next 就可以了
【具體安裝選項的闡述等之後再安裝 git 時再寫 awa】 -
驗證安裝是否成功
右鍵出現如下選項時表示安裝成功
基礎使用
倉庫
透過網站快速建立
建立倉庫
管理倉庫
倉庫成員
透過終端配置
建立倉庫
管理倉庫
倉庫成員
程式碼託管
資訊配置
git config --global user.name "uaer_name"
git config --global user.email "user_email"
如果沒有配置,bash 不會報錯,但是會有 " 請配置 使用者名稱和密碼 "的提示
git clone
git clone http_url
git init
對於一個本地的,未連線遠端倉庫的專案,執行git init
將生成 .git 資料夾
git pull
拉取專案
git stash
git stash # 將現在的狀態存入暫存區
git stash list # 檢視暫存的狀態列表
git stash pop # 恢復棧頂的狀態
git stash drop # 刪除棧頂狀態
git stash save "message" # 暫存現在的狀態並新增備註 "message"
stash 儲存到的暫存區,可以理解為一個棧
git add
將檔案更新到暫存區
git add . # 將所有檔案新增到暫存區
git add doc_url # 將特定檔案新增到暫存區(需要檔案字尾名)
git add doc_url1 doc_url2 # 將指定的幾個檔案新增到暫存區
git commit
git commit -m "message" # 提交暫存區的內容到本地倉庫
git push
git push # 提交本地倉庫的內容到遠端倉庫
深入介紹
基本理論
忽略檔案配置
怎麼實現在git提交時對某些檔案進行忽略
比較粗糙的一個辦法【針對 不需要同步的 新加入 的檔案】
在已有專案的 .gitignore 檔案處,右鍵執行 在整合終端中開啟
然後執行
git status
則不需要同步的檔案路徑會出現在終端視窗,將檔案路徑複製到 .gitignore 檔案中
分支
Git——分支 - 詳細解釋
Git/Gitee--- 分支管理
Gitee建立分支
基礎使用
建立分支
-
終端命令列建立
git branch branch_name
git branch branch_name
建立的分支,它的備註是分支起點的備註
它的分支七點為當前分支【它的內容為當前分支的克隆】使用終端命令建立的分支,建立完成後需要 git push,將分支與遠端倉庫連線
-
網頁建立
更新分支及程式碼
-
git pull
git pull
可以理解成git fetch
之後再git merge
檢視分支
-
git branch
-
git branch -v
-
git branch -a
git branch -v
可以檢視該分支的分支備註
git branch -a
還可以查詢到遠端倉庫的分支情況當前所在分支會用 * 進行特別標註
可能在建立分支之後使用命令查詢,並不能查詢到分支情況,在網頁上也不能跟蹤到該分支
但是不用擔心
需要透過git push
連線分支到倉庫
依然使用git checkout branch_name
可以成功切換分支
切換分支
git checkout branch_name
開發及提交
後續在分支中開發及提交流程與倉庫的基礎使用一致
git add
git commit -m ""
git push
分支合併
-
自行切換到主分支進行合併
此方法由開發者使用git checkout branch_name
切換到主分支後
使用git merge branch_name
將該分支合併到主分支上 -
請求Pull Requests
此方法由開發者在網頁端點選 Pull Requests 並完善 PR 請求資訊後,由他人進行稽核、衝突解決等操作
【注意,拉取遠端倉庫之前,使用git stash save
進行暫存並新增說明】I.
git pull
git pull
將拉取該分支的遠端程式碼以及該分支所關聯的遠端倉庫的程式碼II.
git merge branch_name
將當前分支與 branch_name 分支進行合併
在實際開發中,向遠端發起 PR 之前需要進行這一步,以達到與遠端程式碼的同步III.
git stash pop
IV.
git add
git commit -m ""
git push
V. 發起PR
合併其他分支的程式碼
- 理論上來講只需要進行
git merge branch_name
即可 - 可能出現 Already up to date. 的情況,是因為 git pull 執行時並未對其他分支的程式碼、狀態進行更新,因此在本地, git 認為當前分支與其他分支版本一致
- 切換到需要被合併的分支
git checkout branch_name
git pull
這將拉取該分支的程式碼到本地- 切換回自己原來的分支
git merge branch_name
可能遇到的問題
-
git pull
git merge branch_main
操作不能拉取到主分支最新的程式碼,顯示 Already up to date.理論上是 git pull 將拉取遠端倉庫中本分支 + 主分支的程式碼,然後執行 git merge 將對分支進行合併
但是(以使用 Visual Studio Code為例)
則需要先切換到主分支,然後 git pull
然後返回原分支,進行 git pull 和 git merge -
git push --set-upstream origin branch_name
使用終端命令建立的分支
在提交時要求連結上游分支使用
git push -u origin branch_name
提交一次即可
可能遇到的問題
身份驗證
【git 報錯The requested URL returned error: 403】
【解決git操作一直要求輸入使用者名稱和密碼的問題】
【如何解決git每次都要輸入使用者名稱密碼的問題】
【Git pull 或 push 提示:The requested URL returned error: 403】
問題復現:
我有一個 Gitee 賬號 H,我用 H 賬號參加了別人的專案(加入別人的倉庫),並在本地進行了開發;
我修改了 H 賬號的郵箱及手機號;
我註冊了一個新的賬號 MH,手機號為原來 H 賬號的手機號;
我使用 MH 建立了倉庫,並在本地進行了全域性配置,然後開發和更新;我再次登陸 H 賬號,進行 H 專案的更新;
- 配置全域性 user.name | user.email
git config --global user.name "uaer_name"
git config --global user.email "user_email"
沒有起效
- 清除快取
git config --local --unset credential.helper
git config --global --unset credential.helper
git config --system --unset credential.helper
- pull ==> 輸入使用者名稱和密碼 ==> 白色輸入框中點選【取消】
git pull
error: unable to read askpass response from 'git-askpass.exe所在位置'
Username for 'https://gitee.com': username
error: unable to read askpass response from 'git-askpass.exe所在位置'
Password for 'https://user_name@gitee.com':
Already up to date.
一般 git-askpass.exe 在 Git 的安裝目錄下:
Git/mingw64/bin/git-askpass.exe
Password for 'https://muhuai-muhuai@gitee.com': password(密碼不會顯示)
- 配置全域性資訊
git config --global credential.helper store
git config --global user.username "user_name"
git config --global user.password "password"
- 檢視全域性配置資訊
我是傻子,配置全域性資訊的時候打錯指令了
git config --global --list
credential.https://gitee.com.provider=generic
user.username=user_name
user.password=password.
(user.uaername=user_name) ~~我也不知道為什麼打成這樣了,我是傻子~~
- 修改全域性配置
git config --global --edit
I -- 開始寫入
Esc -- 退出寫操作
:wq -- 儲存並退出
- pull ==> 輸入使用者名稱和密碼 ==> 白色輸入框中點選【取消】
- 配置區域性資訊
git config --local credential.helper store
git config --local user.username "user_name"
git config --local user.password "password"
- 清除快取
- 檢視配置資訊
git config --global --list
credential.https://gitee.com.provider=generic
user.username=user_name
user.password=password.
其實到這裡應該已經可以了,但是我是傻子,我加了一句指令就不行了
git config --global credential.helper store
- 修改專案資料夾下的 .git ==> config 檔案
[core]
repositoryformatversion = 0
filemode = false
bare = false
logallrefupdates = true
symlinks = false
ignorecase = true
[remote "origin"]
url = https://user_name:password@gitee.com/project_url.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
全域性配置檔案 -- 使用者目錄
"C:\Users\username\.gitconfig"
[credential "https://gitee.com"] provider = generic [user] username = user_name password = password
預設區域性設定
可能
Git\git\Git\etc
[diff "astextplain"] textconv = astextplain [filter "lfs"] clean = git-lfs clean -- %f smudge = git-lfs smudge -- %f process = git-lfs filter-process required = true [http] sslBackend = openssl sslCAInfo = Git/git/Git/mingw64/etc/ssl/certs/ca-bundle.crt(安裝目錄下) [core] autocrlf = true fscache = true symlinks = false [pull] rebase = false [credential "https://dev.azure.com"] useHttpPath = true [init] defaultBranch = master
程式碼衝突
一般程式碼衝突發生在
- 如果每次提交程式碼按照
git stash --> git pull --> git stash pop
,那麼衝突一般發生在git stash pop
時 - 使用分支進行分支合併,即
git merge branch_name
時,也可能出現衝突
解決衝突的工具很多,git 自帶的網站、IDEA、Git GUI等
以 Visual Studio Code 為例
-
檔案的末尾出現 ! 表示該檔案中發生衝突 -- 點選 在合併編輯器中解析
-
合併衝突
一般來講,左邊部分是 stash pop 出來的更改,右邊部分是 pull 或 merge 之後的更改,下面是結果,結果中的內容可以手動修改 -
合併完成之後,檔案預設已經執行了
git add
指令,因此需要先提交
版本回退
其他
warning: in the working copy of ‘...‘, LF will be replaced by CRLF the next time Git touche
在執行 git add
操作之後,可能出現以上警告
warning: in the working copy of ‘...‘, LF will be replaced by CRLF the next time Git touche
警告的含義是:Git 已自動將 LF 換行替換為 CRLF 回車換行