博客專欄

EEPW首頁 > 博客 > 實(shí)用干貨分享(3)- Git常用操作干貨分享

實(shí)用干貨分享(3)- Git常用操作干貨分享

發(fā)布人:中電金信人 時(shí)間:2022-06-05 來源:工程師 發(fā)布文章
實(shí)用干貨分享(3)- Git常用操作干貨分享


官方學(xué)習(xí)地址


https://git-scm.com/book/zh/v2

實(shí)用干貨分享(3)- Git常用操作干貨分享


簡單的代碼提交流程


1. git status 查看工作區(qū)代碼相對(duì)于暫存區(qū)的差別;

2. git add . 將當(dāng)前目錄下修改的所有代碼從工作區(qū)添加到暫存區(qū) . 代表當(dāng)前目錄;

3. git commit -m ‘注釋’ 將緩存區(qū)內(nèi)容添加到本地倉庫;

4. git push origin master 將本地版本庫推送到遠(yuǎn)程服務(wù)器;

5. origin是遠(yuǎn)程主機(jī),master表示是遠(yuǎn)程服務(wù)器上的master分支,分支名是可以修改的。


防止出錯(cuò)的步驟


1. git add xx/xxx/file1 xx/xx/file2;

2. git stash 將本地修改存儲(chǔ)起來;

3. git pull 從倉庫獲取最新代碼;

4. git stash pop stash@{0} 將本地的代碼和遠(yuǎn)程獲取的合并(這里可能提示沖突conflict);

5. git status 看哪幾個(gè)有沖突,如果沒沖突,→8 commit,push, 如果沖突→6;

6. git difftool xx/xxx/file3 喚起對(duì)比工具,將遠(yuǎn)程的代碼段合并到本地的文件中;

7. git status 看剛才修改的文件有沒有add,如果是紅色,add一下;

8. git commit -m "姓名 修改某某功能";

9. git push origin head:refs/for/dev_core。

實(shí)用干貨分享(3)- Git常用操作干貨分享


回退流程


【參考】

https://www.cnblogs.com/wpcnblog/p/9945732.html


現(xiàn)在先假設(shè)幾個(gè)環(huán)境,本文將會(huì)給出相應(yīng)的解決方法:


1. 本地代碼(或文件)已經(jīng)add但是還未commit;

2. 要回退的commit的代碼已經(jīng)commit了,但是還未push到遠(yuǎn)程個(gè)人repository;

3. 要回退的commit的代碼已經(jīng)push到遠(yuǎn)程的個(gè)人分支,但是還未merge到公共的repository;

4. 要回退的commit的代碼已被merge(合入)到公共的repository。


git reset有三個(gè)參數(shù)soft、mixed、hard分別對(duì)應(yīng)head的指針移動(dòng)、index(暫存區(qū))以及工作目錄的修改,當(dāng)缺省時(shí),默認(rèn)為mixed參數(shù)。


git revert與reset的區(qū)別是git revert會(huì)生成一個(gè)新的提交來撤銷某次提交,此次提交之前的commit都會(huì)被保留,也就是說對(duì)于項(xiàng)目的版本歷史來說是往前走的。而git reset 則是回到某次提交,類似于穿越時(shí)空。


沖突解決


【解決本地和遠(yuǎn)程倉庫沖突,當(dāng)需要pull時(shí)提示本地和遠(yuǎn)程倉庫有沖突時(shí)】


1. 將本地修改的文件添加到暫存區(qū)

git add filename

2. 將本地修改存儲(chǔ)起來

git stash

可以通過git stash list查看暫存的內(nèi)容stash@{0}就是剛才修改的內(nèi)容

3. pull遠(yuǎn)程倉庫

git pull

git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地主機(jī)名>

4. 還原暫存的內(nèi)容

git stash pop stash@{0}


撤銷檢查


撤銷對(duì)某個(gè)文件的修改,還原成歷史版本,相當(dāng)于cc的撤銷檢出

git checkout -- xxx.java (帶--)


刪除文件


git刪除代碼的時(shí)候務(wù)必使用git -rm -r

不要使用rm -rf等linux命令,或者在文件夾里面刪除,然后再git add

這樣在gerrit會(huì)顯示沖突(雖然強(qiáng)行提交也沒有問題,但是非常不建議這樣操作)


去掉換行符自動(dòng)轉(zhuǎn)換


git config --global core.autocrlf false (!關(guān)閉自動(dòng)轉(zhuǎn)換換行符命令)

git config --global core.safecrlf true


防止提交字符亂碼


git config --global gui.encoding utf-8

git config --global core.quotepath false

git config --global i18n.commit.encoding utf-8

git config --global i18n.logoutputencoding utf-8


查看用戶名和郵箱地址


$ git config user.name

$ git config user.email


修改用戶名和郵箱地址


$ git config --global user.name "username"

$ git config --global user.email "email"


撤回commit操作


寫完代碼后,我們一般這樣:

git add . //添加所有文件

git commit -m "本功能全部完成"

執(zhí)行完commit后,想撤回commit,如何操作?

git reset --soft HEAD


如何忽略.gitignore文件本身


git rm -r --cached .gitignore

git add .

git commit -m 'update .gitignore'


在使用Git的過程中,時(shí)常會(huì)出現(xiàn)這樣一種情況,明明已經(jīng)提前寫好了規(guī)則,但是卻不起作用,導(dǎo)致每次仍需要重復(fù)提交規(guī)則,讓人難以忍受。


其實(shí)是因?yàn)檫@個(gè)文件里的規(guī)則對(duì)已經(jīng)追蹤的文件是沒有效果的,所以我們需要使用rm命令清除一下相關(guān)的緩存內(nèi)容。這樣文件就會(huì)以未追蹤的形式出現(xiàn),然后再重新添加提交一下規(guī)則,此時(shí)再運(yùn)行一下git status指令就可以發(fā)現(xiàn),.gitignore文件變?yōu)榱藆ntrack。


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: 干貨

技術(shù)專區(qū)

關(guān)閉