GIt面試寶典

文章來自帥地玩編程

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章