文章來自帥地玩編程
Git最小配置
1、配置全局賬戶,也就是該賬戶對所有的Git倉庫都有效
git config --global user.name '你的賬號名稱' git config --global user.email '你的Email'
2、配置局部賬戶,也就是該賬戶對當前的Git倉庫有效
git config --global user.name '你的賬號名稱' git config --global user.email '你的Email'
一個是global(全局)一個是local(本地)
3、查看相關配置情況
配置了了之後,顯然有時候是需要查看我們當前配置的相關情況的,可以使⽤用如下命令
1、查看 global 類型的配置情況
git config --global --list
2、查看某個倉庫下的配置情況
git config --global --list
⼆二、本地基本操作
這部分命令有點多,也是使⽤用的最頻繁的命令了了,待我⼀一⼀一列列舉出來,建議收藏
1、基本操作
1、查看變更更情況
git status
2、查看當前工作在哪一個分支上
git branch -v
3、切換到指定分支
git checkout 指定分支的名稱
4、把當前目錄及其子目錄下所有變更都加入到暫存區。
git add. //注意:add後面是一個.
5.把倉庫內所有變更更都假如到暫存區
git add -A
6、把指定⽂文件添加到暫存區
git add 文件1 文件2 ... 文件n
7、創建正式的 commit,也就是把當前的數據提交上去
git commit
2、比較差異
1、⽐比較某⽂文件⼯工作區和暫存區的差異
git diff 莫文件
2、⽐比較某⽂文件暫存區和 HEAD 的差異
git diff --cache 莫文件
3、比較工作區和暫存區的所有差異
git diff
4、比較暫存區和HEAD的所有差異
git diff --cache
三、加塞臨時任務處理理
1、把未處理理完的變更更先保存到 stash 中
git stash
2、臨時任務處理理完後繼續之前的⼯工作
git stash pop //pop相當於棧的出棧和入棧一樣,把之前的任務彈出來 git stash apply//和pop不同的是,apply相當於從棧頂把任務取出來,但是會在棧中被移除
先說git stash:
git stash 命令可以將在當前分支修改的內容放到緩存區中,並會自動建立一個緩存的list集合,方便管理。
如果想將修改的內容重新釋放出來,git stash apply 和 git stash pop 都可以達到這個目的。
但是兩者有什麼區別呢。
剛纔說過,git stash 可以形成list 集合。通過git stash list 可以看到list下的suoy
使用git stash apply @{x} ,可以將編號x的緩存釋放出來,但是該緩存還存在於list中
而 git stash apply,會將當前分支的最後一次緩存的內容釋放出來,但是剛纔的記錄還存在list中
而 git stash pop,也會將當前分支的最後一次緩存的內容釋放出來,但是剛纔的記錄不存在list中
3、查看所有的stash
git stash list
4、取回某次stash的變更
git stash pop stash @{數字n}
四、修改個⼈人分⽀支歷史
我們的倉庫的內容每次變更更執⾏行行 commit 的時候,都會⽣生成⼀一個新的 commit,不不過有時候,我們不不想
產⽣生新的 commit,⽽而是想要通過修改之前的 commit 來變更更倉庫的內容,那麼就可以使⽤用如下命令了了
1、修改最後⼀一次 commit
git add //提交最近一次修改 git commit --amend//最近一次修改覆蓋
改變當前分支最近的一次提交的最簡單方法之一是使用 git commit –amend。
先改正工作目錄,然後跟任何提交一樣,使用命令更新索引,如 git add 或 git rm。然後發出 git commit-amend 命令。
git commit-amend 並沒有添加新的提交,而是用新提交取代了原始提交。
五、查看變更更⽇日誌等
1、當前分⽀支各個 commit ⽤用⼀一⾏行行顯示
git log --online
2、顯示最近的n個commit
git log -n
3、用圖顯示所有的分支歷史
git log --online --graph --all
4、查看涉及到莫文件變更的所有commit
git log 莫文件
5、某文件各行最後修改對應的commit以及作者
git blame 某文件
git-blame - 顯示文件的每一行最後修改的版本和作者
六、分⽀支與標籤
1、創建新分⽀支
基於當前分⽀支創建新分⽀支
git branch 新分支
基於指定分支創建新分支
git branch 新分支 已有分支
基於某個commit創建分支
git branch 新分支 某個 commit 的id
創建分支並且切換到該分支
git chechout -b新分支
2、列出分支
列出本地分支
git branch -v
列出本地和遠程分支
git branch -av
列出遠程所有分支
git branch -rv
列列出名稱符號某樣式的遠端分⽀支
git branch -rv -l '某樣式'
3、刪除分⽀支
安全刪除本地某分⽀支
git branch -d 要刪除的分支
強行刪除的分支
git branch -D
要刪除的分支
刪除遠端 origin 已不不存在的所有本地分⽀支
git remote prune origin
4、打標籤
從commit打上標籤
git tag 標籤名 commit 的id
七、git 中一些選項解釋
-d --delete:刪除
-D --delete --force的快捷鍵
-f --force:強制
-m --move:移動或重命名
-M --move --force的快捷鍵
-r --remote:遠程
-a --all:所有
-v 分支
八、兩分支之間的集成
git merge b
git cherry-pick可以bai選du擇某一個分支中的一個或幾個commit(s)來進行zhi操作。例如,假設我 們有個穩定版本的分支,叫v2.0,另外還有個開發版本的分支v3.0,我們不能直接把兩個分支合併,這樣會導致穩定版本混亂,但是又想增加一個v3.0 中的功能到v2.0中,這裏就可以使用cherry-pick了。
# 先在v3.0中查看要合併的commit的commit id
git log
# 假設是 commit f79b0b1ffe445cab6e531260743fa4e08fb4048b
# 切到v2.0中
git check v2.0
# 合併commit
git cherry-pick f79b0b1ffe445cab6e531260743fa4e08fb4048b
git rebase有點類似git merge,但是兩者又有不同,打個比方,你有兩個抽屜A和B,裏面都裝了衣服,現在想把B中的衣服放到A中,git merge是那種橫衝直撞型的,拿起B就倒入A裏面,如果滿了(衝突)再一併整理;而git rebase就很持家了,它會一件一件的從B往A中加,會根據一開始放入的時間順序的來加,如果滿了你可以處理這一件,你可以繼續加,或者跳過這一件,又 或者不加了,把A還原。所以merge適合那種比較瑣碎的,簡單的合併,系統級的合併還是用rebase吧。
專業的區別請移步到這裏合併和衍合
# 合併b
git rebase b
# 處理完衝突繼續合併
git rebase –continue
# 跳過
git rebase –skip
# 取消合併
git rebase –abort
八、和遠端交互
1、列列出所有 remote
git remote -v
2、增加remote
git remote add url地址
3、刪除remote
git remote remove remote的名稱
4、改變remote的name
git remote rename 舊名稱 新名稱
5、把遠程分支的變更拉到本地,且merge到本地分支
git fetch remote
6、把遠端分⽀支的變更更拉倒本地,且 merge 到本地分⽀支
git pull remote名稱 分支名
關於 pull 和 fetch 的區別不不懂可以看這篇⽂文章
https://mp.weixin.qq.com/s/r0FBPWKfQUk3nOBRHhPa8g
https://blog.csdn.net/dongapple/article/details/80451249