前言
在代碼開發和項目管理中,Git能幫你記錄每一次修改,在協作時避免衝突,還能輕鬆回溯歷史文件記錄。今天從安裝配置到遠程協作,給大家分享一些Git的用法。
一、準備工作:Git安裝與基礎配置
1. Windows安裝Git
- 下載:去Git for Windows官網或Gitee鏡像站(網速更快)下載安裝包;
- 安裝:雙擊安裝包,按嚮導一步步點“下一步”,默認選項即可滿足多數需求;
- 驗證:打開Git Bash或PowerShell,輸入
git --version,能顯示版本號(比如“git version 2.45.1.windows.1”)就代表安裝成功。
2. 基礎配置:讓Git“認識”你
安裝後要配置用户名和郵箱(用於標記提交者),還能設置默認分支和顏色顯示,命令直接複製執行:
# 配置用户名(替換成你的名字,比如“Zhang San”)
git config --global user.name "Your Name"
# 配置郵箱(替換成你的郵箱)
git config --global user.email "you@example.com"
# 設置默認分支為main(現在主流分支名)
git config --global init.defaultBranch main
# 開啓顏色顯示(讓命令結果更易讀)
git config --global color.ui auto
# Windows專屬:自動轉換換行符(避免跨平台文件格式問題)
git config --global core.autocrlf true
# 可選:把VS Code設為默認編輯器(後續寫提交信息更方便)
git config --global core.editor "code --wait"
3. Gitee綁定:安全連接遠程倉庫
想把代碼傳到Gitee,推薦用“個人訪問令牌”(比賬號密碼更安全):
- 登錄Gitee,進入“個人設置→私人令牌”;
- 點擊“生成新令牌”,勾選需要的權限(比如“projects”),按提示完成驗證;
- 保存生成的令牌(只顯示一次,丟了要重新生成),後續推送代碼時,“用户名”填Gitee賬號,“密碼”填這個令牌。
二、Git核心概念
Git的核心邏輯,就像“三層文件抽屜”,每層負責不同工作:
- 工作區:你能看到的文件和文件夾,比如電腦裏的“demo-git”文件夾,是你日常編輯代碼的地方;
- 暫存區:“待提交的草稿箱”,把工作區的修改添加到這裏,相當於“標記哪些修改要保存”;
- 本地倉庫:“正式檔案庫”,提交暫存區的內容後,會在這裏生成歷史記錄,HEAD指針會指向當前所在的分支;
- 遠程倉庫:比如Gitee上的倉庫,是“團隊共享的檔案庫”,方便多人協作時同步代碼。
三、常用命令清單
掌握這些高頻用法,能應對80%的場景:
1. 查看狀態與差異:知道代碼改了啥
# 查看當前倉庫狀態(哪些文件被修改、是否在暫存區)
git status
# 查看工作區與暫存區的差異(沒添加到暫存區的修改)
git diff
# 查看暫存區與最近一次提交的差異(已添加但沒提交的修改)
git diff --staged
2. 添加與提交:保存代碼修改
# 把單個文件添加到暫存區(替換<file>為文件名,比如“src/App.java”)
git add <file>
# 把所有修改(包括新增、修改、刪除)添加到暫存區
git add .
# 提交暫存區的內容,-m後是提交信息(要寫清楚改了啥,比如“新增登錄功能”)
git commit -m "feat: add new login"
# 修改上一次的提交信息(還沒推送到遠程時可用)
git commit --amend -m "fix: new correct message"
3. 歷史與回溯:查看過去的修改
# 簡潔查看所有分支的提交歷史(一行一個提交,帶分支圖)
git log --oneline --graph --decorate --all
# 查看某次提交的具體內容(替換<commit>為提交ID,比如“a1b2c3d”)
git show <commit>
4. 撤銷與恢復:改錯了也不怕
Git 2.23+推薦用restore命令,更直觀安全:
# 丟棄工作區的修改(比如誤改了文件,想恢復到最近一次提交的狀態,謹慎用)
git restore <file>
# 把文件從暫存區移除(保留工作區的修改,比如誤加了不需要的文件)
git restore --staged <file>
# 還原某次提交(生成反向提交,不會刪除歷史,安全)
git revert <commit>
# 重置分支到某次提交(危險!謹慎用,--mixed是默認模式,重置暫存區)
git reset --mixed <commit>
5. 忽略文件:讓不需要的文件不被Git“看到”
創建.gitignore文件,寫入要忽略的文件/文件夾(比如編譯產物、IDE配置),示例:
/target/ # 忽略target文件夾(編譯產物)
*.class # 忽略所有.class後綴的文件
*.log # 忽略所有.log後綴的文件
.idea/ # 忽略IDEA的配置文件夾
*.iml # 忽略IDEA的.iml文件
.DS_Store # 忽略Mac系統的隱藏文件
四、分支管理
分支就像“代碼開發的平行宇宙”——在新分支開發功能,不會影響主幹代碼,完成後再合併回去,這是多人協作的核心。
1. 分支基礎操作
# 創建並切換到新分支(比如“feature/login”,功能分支——開發登錄功能)
git switch -c feature/login
# 在已有分支間切換(比如切回main主幹)
git switch main
# 把feature/login分支合併到main主幹(先切到main)
git switch main
git merge feature/login
# 同步遠程主幹的最新代碼(先拉取,再變基,讓歷史更整潔)
git fetch origin
git switch main
git pull --rebase origin main
# 把主幹的最新修改同步到功能分支(兩種方式)
# 方式1:合併(保留分叉歷史)
git switch feature/login
git merge main --no-ff -m "merge main into feature/login"
# 方式2:變基(把功能分支的提交“挪到”主幹最新之後,歷史更加線性)
git switch feature/login
git rebase main
# 首次推送功能分支並建立上游
git push -u origin feature/login
# 發起合併(建議 PR/MR 流程),或本地合併:
git switch main
git merge --no-ff feature/login -m "feat(login): implement basic login"
git push origin main
2. 解決衝突:協作中難免遇到,按步驟來就好
合併或變基時遇到衝突(比如兩人改了同一文件的同一行),不用慌:
- 命令行提示“Automatic merge failed”,打開衝突文件,裏面會有
<<<<<<<、=======、>>>>>>>標記,中間就是衝突內容; - 編輯文件:保留需要的內容,刪除衝突標記;
- 標記衝突已解決:
git add <conflicted-files>(替換為衝突文件名); - 如果是變基過程中,執行
git rebase --continue繼續;如果想放棄變基,執行git rebase --abort。
3. 常見工作流:選適合團隊的方式
- Git Flow:適合版本節奏固定的項目,分支分為main(主幹)、develop(開發)、feature(功能)、release(發佈)、hotfix(緊急修復);
- Trunk-Based:多數團隊推薦,以main為主幹,開發用短生命週期的小分支,頻繁合併,配合CI/CD快速迭代。
五、遠程協作:連接Gitee,實現多人同步
本地代碼做好後,要傳到Gitee和團隊共享,或拉取別人的代碼,關鍵是管好“遠程倉庫”:
1. 管理遠程倉庫:添加、查看與修改
# 查看當前配置的遠程倉庫(顯示別名和地址,比如origin)
git remote -v
# 添加遠程倉庫(別名設為origin,<url>替換成Gitee倉庫的HTTPS或SSH地址)
git remote add origin <url>
# 修改遠程倉庫地址(比如換了倉庫,更新地址)
git remote set-url origin <new-url>
2. 拉取與推送:同步代碼
# 僅拉取遠程代碼,不更新本地分支(查看遠程有哪些新提交)
git fetch origin
# 拉取遠程main分支的代碼,並變基到本地main(推薦,避免多餘合併提交)
git pull --rebase origin main
# 推送本地main分支到遠程origin
git push origin main
# 首次推送功能分支(比如feature/login),並建立與遠程的關聯(後續可直接git push)
git push -u origin feature/login
3. Gitee實操:從創建倉庫到推送代碼
- 創建遠程倉庫:登錄Gitee,點擊“+”號→“新建倉庫”,填倉庫名(比如“demo-git”),選擇公開/私有,點擊“創建”;
- 獲取倉庫地址:倉庫創建後,複製頁面上的HTTPS地址(比如“https://gitee.com/your-name/demo-git.git”);
- 本地推送代碼:在本地倉庫執行以下命令,把代碼推到Gitee:
# 添加遠程倉庫(origin是別名)
git remote add origin https://gitee.com/your-name/demo-git.git
# 首次推送main分支,並設置上游
git push -u origin main
4.從 GitHub 遷移到 Gitee(鏡像):
- 方案 A:在 Gitee 倉庫設置中使用“從 GitHub 導入倉庫”
- 方案 B:本地設置兩個遠程,手動推送:
git remote add github git@github.com:<ns>/<repo>.git
git remote add gitee https://gitee.com/<ns>/<repo>.git
# 推送全部分支與標籤(如果打了發佈標籤,比如v1.0.0)
git push gitee --all
git push gitee --tags
六、常見問題
- push被拒絕:先執行
git fetch origin拉取遠程最新代碼,再用git pull --rebase origin main同步,解決衝突後再推送; - 進入Detached HEAD狀態:這是“遊離頭指針”,執行
git switch <branch>(比如git switch main)回到正常分支,需要保存當前修改就新建分支:git switch -c temp; - 誤刪文件:從最近一次提交恢復:
git restore --source=HEAD -- <file>; - 大文件入庫:考慮用Git LFS(大文件存儲),或把大文件加入
.gitignore,再清理歷史提交中的大文件。
七、總結
Git的核心是理解“工作區-暫存區-倉庫”的邏輯和分支協作的思路。從本地管理代碼到Gitee遠程協作,多在實際項目中用,遇到問題多查一查,慢慢就會覺得Git是個超好用的工具。