Git
Git
初始化
...
基礎操作
git init: 初始化當前文件夾作為一個git項目git add .: 將當前文件夾下所有的文件添加到 暫存區git commit -m "在雙引號里輸入你想提交的信息": 提交暫存區中的文件到 本地存儲庫
分支
git switch -c <branch-name>:創建并切換到新分支(推薦,Git 2.23+)。git checkout -b <branch-name>:創建并切換到新分支(適用于較舊版本的 Git)- 創建分支并上傳到遠端倉庫
-
創建并切換到分支
git switch -c <branch-name>
或者
git checkout -b <branch-name> -
上傳
git init
git add .
git commit -m "first commit" -
當你使用
git push -u origin <branch-name>設置了上游分支后,Git 會將當前本地分支(在這個例子中是 <branch-name>)與遠程倉庫中的 <branch-name> 分支建立跟蹤關系。這意味著以后在 <branch-name> 上執行 git push 或 git pull 時,Git 會自動知道要與哪個遠程分支進行交互git push -u origin <branch-name>
-
merge與rebase
merge
git merge
# 切換到目標分支
git checkout 主分支
# 將其他分支合并到當前分支
git merge 特性分支
# 如果有沖突,解決沖突后添加解決的文件
git add .
# 完成合并
git commit
git merge --abort
嘗試取消當前的合并過程,并將你的工作目錄恢復到合并開始前的狀態。這是在合并尚未完成(即未commit)時取消合并的標準方法。
rebase 變基
交互式變基(Interactive Rebase)
這是最靈活的方式之一,允許你挑選、編輯、壓縮或者刪除提交
當有多個commit的時候,希望把多個commit合并成一個完整的commit。
git log 、 git log --oneline查看提交歷史的編號
假設現在有以下幾個commit,現在覺得add 1, add 2,add 3其實可以合并成一個commit:add1~3
(Head->master) add 3
add 2
add 1
init
- 首先,假設現在HEAD在add 3,
git rebase HEAD~3,希望合并前三個commit。 - 之后將編輯交互式變基列表:
這將打開一個文本編輯器,列出最近的3次提交。每一行代表一個提交,并以pick開頭。要合并提交,只需將除第一個之外的所有提交前的pick改為squash(或簡寫s)。這會告訴Git將這些提交與前面的提交合并。 - 保存并關閉編輯器:
完成后保存更改并關閉編輯器。Git會開始應用你的修改。對于每個被標記為squash的提交,它還會提示你編輯合并后的提交信息。 - 完成變基:
最后一步是確認合并后的提交信息,然后保存退出。這樣就完成了提交的合并。
直接通過重置和暫存區操作
這種方法適用于當你想把一系列提交壓縮成一個新的提交。
- 找到起點之前的最后一次提交的哈希值:
比如說你想從init開始合并之后的所有提交。
git log --oneline
- 軟重置到那個提交:
使用git reset命令進行軟重置(不會影響工作目錄中的文件)。
git reset --soft [init的哈希值]
- 重新提交所有更改:
現在所有的改動都處于暫存狀態,你可以創建一個新的提交。
git commit -m "合并后的提交信息"
比較代碼
idea的圖形化工具很方便

遠程
git remote -v: 驗證遠程倉庫
![image]()
高級操作
1
需求:將某個分支,指定commit之后的提交回滾,并將這個commit之后的提交,合并到另一個新的分支上。
操作:
-
查看提交歷史
git log --oneline
-
創建一個臨時分支(可選但推薦):為了防止誤操作丟失提交,可以先創建一個臨時分支保存當前狀態
git branch temp-branch
-
回退當前分支到指定 commit(保留更改為未提交狀態)
3.1. 如果你想保留更改內容(只是撤銷提交),使用:git reset --soft abc1234
3.2. 如果你想刪除這些更改(完全回退):
git reset --hard abc1234
3.3. 如果你已經push到遠程,需要force強制回退
git push origin <你的分支(HEAD表示與當前分支一致的遠程分支)> --force
git push origin HEAD --force -
獲取從 abc1234 到原分支頂端的所有提交 hash
查看從 abc1234 之后的提交:git log abc1234..temp-branch --oneline
記錄下這些提交的 hash(比如 commit1, commit2, ...)
-
將這些提交應用到另一個分支(比如 feature)
切換到目標分支git checkout feature
然后依次 cherry-pick 提交(或 rebase):
方法 A:逐個 cherry-pick
git cherry-pick commit1
git cherry-pick commit2
...方法 B:交互式 rebase(更適用于連續提交)
git rebase abc1234 temp-branch
這會把 temp-branch 上從 abc1234 之后的所有提交重新應用到當前分支上
Q: 我不想修改原分支(main),只想提取提交合并到別的分支怎么辦?
A: 不用 reset 原分支,直接用 rebase 或 cherry-pick 即可。
git checkout feature
git rebase abc1234 main
git rebase 很強大,但它是“改寫歷史”的操作,適用于本地私有分支或尚未共享的提交;對于遠程分支或多人協作分支,請謹慎使用,避免強制推送帶來的混亂
本文來自博客園,作者:chendsome,轉載請注明原文鏈接:http://www.rzrgm.cn/chendsome/p/18587032


浙公網安備 33010602011771號