1.前言
記得在我剛入行的時候,Git便成為了我入門路上的攔路虎,各種命令讓我眼花繚亂,好不容易記住了,過幾天又忘了,如此反復,讓我覺得不太友好。于是就想有沒有方法可以替代在終端里敲Git命令呢,功夫不負有心人,經過一段時間的摸索,發現原來在AS里早已有了Git操作的圖形界面,簡單的Git命令都可以用鼠標直接完成,方便不少。
這里插播一段提醒:Git的學習是程序員必經的一道坎,本文只是為了給那些和我一樣不愛敲Git命令的同學提供一種新的姿勢,切不可因此而忽視Git的學習。
2.在AS中常用的Git操作
首先右鍵點擊工程根目錄
-
查看代碼提交記錄
查看代碼提交記錄.png -
恢復修改過的代碼
image.png -
pull遠端代碼 和 向遠端push代碼
pull遠端代碼 和 向遠端push代碼.png -
切換分支
在AS右下角
選擇分支.png
切換分支.png -
查看代碼作者
這是我非常喜歡的一個功能,不管我看到優雅的代碼,還是糟糕的代碼,我都會查看一下作者,特別是剛到一個新的公司,試著通過代碼去了解你的同事,是一種很有趣的方式。
查看代碼作者.png
這便是我在工作中最常用的幾個Git操作,以后如果想到別的,會繼續補充...
3.在Gerrit環境下的操作
之前的公司基本都是采用 Git + Bitbucket 的代碼管理方式,目前換了一家新公司(不要問我為什么總換公司,我做Android又不是為了錢,是因為我愛Android 手動滑稽 ),新公司采用的是 Git + Gerrit 的方式進行代碼管理。一開始我并不知道什么是 Gerrit,后來查了一下,發現和 Bitbucket 是差不多的,主要功能還是用來做Code Review 和代碼托管。
但是在用上了Gerrit 之后,發現我的圖形界面push大法居然不好用了,每次push都失敗,于是只能在終端敲Git命令,并且查看錯誤原因:
-
missing Change-Id
這個錯誤是因為Gerrit 要求每次commit都得有一個Change-Id:
Change-Id.png
擁有Change-Id才是一個合法的commit。解決的辦法也很簡單,只需要敲一下報錯提示中的命令(下圖中箭頭所指的兩行),以后每次提交便會自動生成Change-Id。
錯誤提示.png
這個圖是網上找的,每個人的提示是有差別的,只要知道是這兩行就ok了,遇到了就照著自己錯誤提示上的這兩句敲。
這里還有一點需要注意:第一行命令的作用是通過hook的方式,每次提交自動添加change-id,但是只針對之后的提交,你既然都報這個錯了,證明你現在至少有一個以上的commit缺少change-id,所以我們才需要第二行命令,給最后一次commit添上change-id,如果你當前只有一個commit缺少change-id,那么執行完就ok了,但是如果你之前還有好幾個commit缺少change-id,那么你需要將所有的commit都添加上change-id才能通過,可能需要用到reset命令,也可以通過第5部分的方式來操作,這里就不再贅述了,文末的參考鏈接里也有相應的操作方法。我們執行完第二行命令后,默認會打開Vim編輯器,我們只需要保存退出即可(wq),Vim的簡單操作也會附在后面。 Push的遠程分支不對
當我解決完change-id的問題后,圖形界面操作push并沒有成功,但是通過敲命令的方式卻可以提交,push命令的格式為:$ git push <遠程主機名> <本地分支名>:<遠程分支名>
在Gerrit 上push代碼到 feature 分支我們需要敲:
git push origin HEAD:refs/for/feature
大家發現區別了嗎?對,問題就在 refs/for/ 上,這是Gerrit 上的特殊規則,必須先提交到 refs/for/feature 分支上,通過code review后,才能合入feature分支,和Bitbucket 上的 pull request 差不多。
解決的辦法也很簡單,正常情況我們在圖形界面push,路徑是這樣的:
我們只需要手動修改一下即可:
這樣便可以通過圖形界面順利地push代碼了,瞬間輕松。
4.code review不通過時,如何修改已經push的代碼:
$ git checkout 有問題的commit
修改代碼
$ git add -u
$ git commit --amend
git add -u:將文件的修改、文件的刪除,添加到暫存區
git add .:將文件的修改,文件的新建,添加到暫存區
git add -A:將文件的修改,文件的刪除,文件的新建,添加到暫存區
然后再進行push即可。或者abandon當前的push,修改完后再重新push也是可以的。
5.撤銷git commit的內容
- git log
找到之前提交的 commit 的 id - git reset id
完成Commit命令的撤銷,但是不對代碼修改進行撤銷,可以直接通過git commit 重新提交對本地代碼的修改
以上操作也可以用圖形界面來代替,在提交歷史中,選擇Log,然后將代碼重置到你想要的commit上:
這樣既撤銷了commit,代碼也會保留。
6.簡單的Vim操作
vim一共有4個模式:
正常模式
啟動vim后默認處于正常模式。不論位于什么模式,按下<Esc>鍵(有時需要按兩下)都會進入正常模式。插入模式
在正常模式中按下i, I, a, A等鍵,會進入插入模式。在插入模式中,擊鍵時會寫入相應的字符。命令模式
在正常模式中,按下:(英文冒號)鍵,會進入命令模式。在命令模式中可以執行一些輸入并執行一些vim或插件提供的指令,就像在shell里一樣。這些指令包括設置環境、文件操作、調用某個功能等等。
常用的命令有:q(退出)、q!(強制退出)、w(保存)、wq(保存并退出)。可視模式
在正常模式中按下v, V, <Ctrl>+v,可以進入可視模式。可視模式中的操作有點像拿鼠標進行操作,選擇文本的時候有一種鼠標選擇的即視感,有時候會很方便。
7.參考資料
https://blog.csdn.net/liuxu0703/article/details/54343096
http://www.lxweimin.com/p/b77fd16894b6
8.結語
終于重新開始寫博客了,年后換了工作,需要去熟悉的東西太多,所以停更了很久。稍微總結一下這兩年吧,畢業兩年了,工作換來換去(有公司倒閉的原因,也有對于自身發展的考慮),雖然工資以一個喜人的趨勢在上漲,但是給人的印象還是太不穩定了。這一次公司夠大,收入也令人滿意,周圍也有不少值得我學習的同事,所以接下來打算讓自己穩定下來,多多沉淀,不要再浮于表面了。
寫完這篇差不多也就放端午了,也祝大家端午快樂!工作生活兩不誤~