git 獲取ssh、本地切換用戶和rebase

獲取ssh

vim ~/.ssh/id_rsa.pub

本地切換用戶

1、查看當(dāng)前git用戶名和郵箱:

git config user.name
git config user.email

2、切換git用戶名和郵箱

git config --global user.name "your_name"'
git config --global user.email "you_email"

3、倉庫合并
兩個獨立倉庫合并被拒絕使用此命令可以合并本地和遠(yuǎn)程倉庫:

git pull origin master --allow-unrelated-histories

4、遠(yuǎn)端覆蓋本地

git reset --hard origin/master

5、取消暫存區(qū)的更改

git reset HEAD

6、推送修改到遠(yuǎn)端

// 當(dāng)前分支修改提交到暫存區(qū)
git add .
// 當(dāng)前分支修改提交到本地倉庫
git commit -m "提交說明"
// 當(dāng)前分支本地修改提交到當(dāng)前分支的遠(yuǎn)端倉庫
git push
// 拉取遠(yuǎn)端倉庫保證代碼一致
git pull

7、刪除分支

// 刪除本地分支
git branch -d target-branch
// 強制刪除本地分支
git branch -D tatget-branch
// 刪除遠(yuǎn)端分支
git push origin --delete tatget-branch

git rebase和merge

之前一直是用的merge,現(xiàn)在用rebase了,記錄一下理解,也是翻閱了很多資料來的,rebase 這篇寫的很好:https://baijiahao.baidu.com/s?id=1680806105354751556&wfr=spider&for=pc

git rebase

變基:在開發(fā)時我們會從主分支進(jìn)行拉取本地分支,在經(jīng)過多人提交之后,主分支跟開始拉分支的時候節(jié)點狀態(tài)已經(jīng)不同,變基就是指,將本地分支的更改暫存,拉取當(dāng)前最新的主分支節(jié)點,將暫存更新到現(xiàn)在的主分支。那么主分支不會記錄合并的過程,也不會記錄在分支上的行為,無法進(jìn)行回退,如果不想保留在分支上的各種提交的操作,可以用rebase -i來保證主分支的clean。

git rebase target

首先確認(rèn)當(dāng)前分支是否需要rebase,查看提交的merge request是否有沖突(gitHub上面是 pull request),如有則進(jìn)行下面的步驟:
1、首先切換到目標(biāo)分支,master為例,git pull/push保證本地和遠(yuǎn)端代碼一致
2、切換到dev分支進(jìn)行rebase變基處理

git checkout dev
git rebase master

3、這個時候會有沖突,則解決沖突,解決完成后用添加暫存,用git rebase --continue繼續(xù)解決沖突

git add .
git rebase --continue

4、沖突解決完后,會沖變基狀態(tài)會到分支狀態(tài),直接進(jìn)行g(shù)it push -f可以同步到遠(yuǎn)端

git push -f

5、去request上查看沖突已經(jīng)解決

git rebase -i

在請求合并的分支上有多次提交想要變?yōu)橐淮?br> 1、首先要確認(rèn)要將提交都合并到哪次,我是通過git log查看,結(jié)合在merge request上提交的commit id來確認(rèn),只要合并到第一次commit的前一次就可以了,在日志后面的分支變化的那種commit是不算的,自己判斷下,太難了。或者可以合并到提交的最新的一次commit id 然后再將最新的兩次和為一次。
2、確認(rèn)了commit_id后,進(jìn)行合并,或者通過合并前幾次的提交(但是一般不好確定)

git rebase -i commit_id 
git rebase -i HEAD~3 // 這里是幾就合并前幾次的提交,這里是前三次

3、提交后會彈出文本編輯器,點i進(jìn)入編輯模式,將除了第一個之外的pick都改為s,esc退出編輯模式,通過:wq保存并退出。
4、這時候如果出現(xiàn)沖突就進(jìn)行解決,使用git add .和git rebase --continue兩個命令,直到?jīng)]有沖突
5、完成后會彈出編輯日志的文本編輯器,將不需要的提交日志刪除,在非編輯狀態(tài)雙擊d即可刪除整行,修改完成后,同樣:wq保存并退出
6、非常重要的操作,這時候從變基狀態(tài)退回了分支狀態(tài),但是分支處表示需要拉取和推送,這個時候直接用強制推送,將我們的合并操作強制同步到遠(yuǎn)端。

git push -f

7、查看merge request的提交已經(jīng)合并為一次,在rebase的時候想要退回到原來的狀態(tài)可以用 git rebase --abort

git merge

合并,把當(dāng)前的分支合并到主分支為例,會把主分支拉到本地和當(dāng)前的分支進(jìn)行合并,有 沖突則需要解決沖突,解決沖突后進(jìn)行合并,會產(chǎn)生一個合并沖突的commit,如果沒有沖突則直接合并成功,通過merge進(jìn)行合并時會在主分支上誠實的記錄著你在當(dāng)前分支的各種git操作,所以你可以通過主分支進(jìn)行回退的操作。
1、保證分支遠(yuǎn)端和本地一致后進(jìn)行分支合并,切換到目標(biāo)分支,這里是dev合并到master則切換到master

git pull
git checkout master

2、將dev合并到master,這里將dev的代碼拉到本地與 master進(jìn)行本地倉庫的合并,如果有沖突則解決,解決完成后進(jìn)行推送即可(當(dāng)前已經(jīng)在master了,解決沖突后直接推送到遠(yuǎn)端即可)

git merge dev
git push
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容