實用干貨分享(3)- Git常用操作干貨分享
官方學(xué)習(xí)地址
https://git-scm.com/book/zh/v2
簡單的代碼提交流程
1. git status 查看工作區(qū)代碼相對于暫存區(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分支,分支名是可以修改的。
防止出錯的步驟
1. git add xx/xxx/file1 xx/xx/file2;
2. git stash 將本地修改存儲起來;
3. git pull 從倉庫獲取最新代碼;
4. git stash pop stash@{0} 將本地的代碼和遠(yuǎn)程獲取的合并(這里可能提示沖突conflict);
5. git status 看哪幾個有沖突,如果沒沖突,→8 commit,push, 如果沖突→6;
6. git difftool xx/xxx/file3 喚起對比工具,將遠(yuǎn)程的代碼段合并到本地的文件中;
7. git status 看剛才修改的文件有沒有add,如果是紅色,add一下;
8. git commit -m "姓名 修改某某功能";
9. git push origin head:refs/for/dev_core。
回退流程
【參考】
https://www.cnblogs.com/wpcnblog/p/9945732.html
現(xiàn)在先假設(shè)幾個環(huán)境,本文將會給出相應(yīng)的解決方法:
1. 本地代碼(或文件)已經(jīng)add但是還未commit;
2. 要回退的commit的代碼已經(jīng)commit了,但是還未push到遠(yuǎn)程個人repository;
3. 要回退的commit的代碼已經(jīng)push到遠(yuǎn)程的個人分支,但是還未merge到公共的repository;
4. 要回退的commit的代碼已被merge(合入)到公共的repository。
git reset有三個參數(shù)soft、mixed、hard分別對應(yīng)head的指針移動、index(暫存區(qū))以及工作目錄的修改,當(dāng)缺省時,默認(rèn)為mixed參數(shù)。
git revert與reset的區(qū)別是git revert會生成一個新的提交來撤銷某次提交,此次提交之前的commit都會被保留,也就是說對于項目的版本歷史來說是往前走的。而git reset 則是回到某次提交,類似于穿越時空。
沖突解決
【解決本地和遠(yuǎn)程倉庫沖突,當(dāng)需要pull時提示本地和遠(yuǎn)程倉庫有沖突時】
1. 將本地修改的文件添加到暫存區(qū)
git add filename
2. 將本地修改存儲起來
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}
撤銷檢查
撤銷對某個文件的修改,還原成歷史版本,相當(dāng)于cc的撤銷檢出
git checkout -- xxx.java (帶--)
刪除文件
git刪除代碼的時候務(wù)必使用git -rm -r
不要使用rm -rf等linux命令,或者在文件夾里面刪除,然后再git add
這樣在gerrit會顯示沖突(雖然強(qiáng)行提交也沒有問題,但是非常不建議這樣操作)
去掉換行符自動轉(zhuǎn)換
git config --global core.autocrlf false (!關(guān)閉自動轉(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的過程中,時常會出現(xiàn)這樣一種情況,明明已經(jīng)提前寫好了規(guī)則,但是卻不起作用,導(dǎo)致每次仍需要重復(fù)提交規(guī)則,讓人難以忍受。
其實是因為這個文件里的規(guī)則對已經(jīng)追蹤的文件是沒有效果的,所以我們需要使用rm命令清除一下相關(guān)的緩存內(nèi)容。這樣文件就會以未追蹤的形式出現(xiàn),然后再重新添加提交一下規(guī)則,此時再運(yùn)行一下git status指令就可以發(fā)現(xiàn),.gitignore文件變?yōu)榱藆ntrack。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。