學(xué)習(xí)筆記-Git基本操作

Git時間——初識版本控制工具

安裝

在Git官網(wǎng)下載相應(yīng)系統(tǒng)和版本的安裝包。

配置身份,區(qū)分誰提交了代碼

git config --global user.name "你的名字"
git config --global user.email "你的郵箱"

查看是否配置成功

git config --global user.name
git config --global user.email

創(chuàng)建代碼倉庫

進(jìn)入需要創(chuàng)建代碼倉庫的項目的根目錄,如AccountingApp,所有本地代碼提交的代碼會被提交到代碼倉庫中,如果有需要也可以推送到遠(yuǎn)程代碼倉庫中,執(zhí)行以下命令:

git init

執(zhí)行后在其根目錄會生成一個隱藏的.git文件夾,用來記錄本地所有的git操作,可通過ls-al命令來查看。

ls -al
git-1.png

如果想要刪除本地倉庫,只需要刪除這個文件夾就行了。

提交本地代碼

提交代碼主要用到兩個命令——add和commit。
add用于把想要提交的代碼先添加進(jìn)去。
commit則是真正地去執(zhí)行提交操作。

git add build.gradle           // 添加build.gradle;添加單個文件
git add app                    // 添加app這個目錄;添加一個目錄
git add .                      // 添加該項目下所有的文件;添加所有文件
git commit -m "First commit."  // 真正提交代碼;-m參數(shù)表示為該次提交添加信息描述,若沒有會被認(rèn)為是不合法的

Git時間——版本控制工具進(jìn)階

忽略文件

項目里的所有文件并不是都需要提交的。AS生成的項目中存在兩個.gitignore文件,一個在根目錄下,一個在app模塊下,該文件是用來告訴git那些文件不需要提交,每一行代表要忽略的文件或是一類文件。配置好后,直接提交即可。

查看修改內(nèi)容

查看文件修改情況的方法非常簡單,只需要使用status命令就可以了,在項目的根目錄下輸入如下命令:

git status

比如修改MainActivity.java這個文件,然后執(zhí)行git status命令。

如何才能看到更改的內(nèi)容呢?這就需要借助diff命令了,用法如下:

// 查看所有文件的更改內(nèi)容
git diff

// 查看指定文件的更改內(nèi)容,如MainActivity.java
git diff app/src/main/java/com/jwstudio/accountingapp/MainActivity.java

其中,減號代表刪除部分,加號代表添加部分。

撤銷為提交的修改

有時候我們的代碼可能會寫得過于草率,以至于原本正常的功能,結(jié)果反倒被我們改出了問題。遇到這種情況時也不用著急,因為只要代碼還未提交,所有修改的內(nèi)容都是可以撤銷的。

比如之前修改的MainActivity.java,可以使用checkout命令,用法如下所示:

git checkout app/src/main/java/com/jwstudio/accountingapp/MainActivity.java

重新運行git staus命令檢查一下。

不過這種撤銷方式只適用于那些沒有執(zhí)行過add命令的文件,如果某個文件被添加過了,這種方式就無法撤銷其更改內(nèi)容。

只不過對于已添加的文件我們應(yīng)該先對其取消添加,然后才可以撤回提交。取消添加使用的是reset命令,用法如下所示:

git reset HEAD app/src/main/java/com/jwstudio/accountingapp/MainActivity.java

然后運行一遍git status命令,之后再執(zhí)行checkout操作。

查看提交記錄

可以使用log命令查看歷史提交信息,用法如下所示:

git log
git-log.png

可以看到,每次提交記錄都會包含提交id、提交人、提交日期以及提交描述4個信息。
當(dāng)提交記錄非常多的時候,如果我們只想查看其中一條記錄,可以在命令中指定該記錄的id,并加上-1參數(shù)表示我們只想看到一行記錄,如下所示:

git log 52e3d157982aeb0810532a0aebed519915d5e2ae -1

而如果想要查看這條提交記錄具體修改了什么內(nèi)容,可以在命令中加入-p參數(shù),命令如下:

git log 52e3d157982aeb0810532a0aebed519915d5e2ae -1 -p

Git時間——版本控制工具的高級用法

準(zhǔn)備階段:進(jìn)入一個新的項目的根目錄,然后打開Git Bash,然后執(zhí)行提交操作:

git init
git add .
git commit -m "First Commit."

分支的用法

分支是版本控制工具中比較高級且比較重要的一個概念,它主要的作用就是在現(xiàn)有代碼的基礎(chǔ)上開辟一個分叉口,使得代碼可以在主干線和分支線上同時進(jìn)行開發(fā),且相互之間不會影響。

如果想要查看當(dāng)前的版本當(dāng)中有哪些分支,可以使用以下命令:

git branch
git分支示意圖.png
git-branch.png

創(chuàng)建一個分支,命令如下:

git branch version1.0        // 名為version1.0的分支

分支前面的“*”號表示我們的操作還是在該分支上,可以使用以下命令進(jìn)行切換:

git checkout version1.0      // 切換到分支version1.0上

各分支的操作互不影響。

可以使用以下命令對分支進(jìn)行合并:

git checkout master
git merge version1.0

僅僅這樣簡單的兩行命令,就可以把在version1.0分支上修改并提交的內(nèi)容合并到master分支上。當(dāng)然。在合并分支的時候還有可能出現(xiàn)沖突的情況,這個時候就需要靜下心來慢慢地找出并解決這些沖突。

可以使用如下命令將不要的分支刪除:

git branch -D version1.0

與遠(yuǎn)程版本庫協(xié)作

所有版本控制工具最重要的一個特點就是可以使用它來進(jìn)行團(tuán)隊合作開發(fā)。每個人的電腦上都會有一份代碼,當(dāng)團(tuán)隊的某個成員在自己的電腦上編寫完成了某個功能后,就將代碼提交到服務(wù)器,其他成員只需要將服務(wù)器上的代碼同步到本地,就能保證整個團(tuán)隊所有人的代碼都相同。

因此,需要有一個遠(yuǎn)程的版本庫!

以GitHub作為示例:

  1. 登錄GitHub,若沒有賬號注冊一個。
  2. 點擊右上角“加號”,選擇“New repository”,然后填寫“Repository name”,還有填寫描述“Description”,public和private表示是公開還是私有的。
github-1.png
  1. 創(chuàng)建完成后,復(fù)制Git地址,比如https://github.com/example/test.git,有HTTP和SSH兩種方式。
github-2.png
  1. 執(zhí)行以下命令:
git init
git add .
git commit -m "First Commit."
git remote add origin https://github.com/example/test.git  // 與GitHub進(jìn)行關(guān)聯(lián)
git push -u origin master                                  // 會提示讓你使用GitHub賬號登錄
  1. 在GitHub上刷新下,會發(fā)現(xiàn)本地代碼已成功上傳。
  2. 大致的流程就是這樣子,可以根據(jù)需求更改。

其中,origin部分指定的遠(yuǎn)程版本庫的Git地址,master部分指定的是同步到哪一個分支上。

比如說現(xiàn)在有一個遠(yuǎn)程版本庫的Git地址是https://github.com/example/test.git,就可以使用如下命令將代碼下載到本地:

git clone https://github.com/example/test.git

接下來看一下如何將遠(yuǎn)程版本庫下的修改同步到本地。Git提供了兩種命令來完成此功能,分別是fetch和pull,fetch的語法規(guī)則和push是差不多的,如下所示:

git fetch origin master      // origin含義同上

執(zhí)行這個命令后,就會將遠(yuǎn)程版本庫上的代碼同步到本地,不過同步下來的代碼并不會合并到任何分支上,而是會存放到一個origin/master分支上,這是可以通過diff命令來查看遠(yuǎn)程版本庫上到底修改了那些東西:

git diff origin/master

之后在調(diào)用merge命令將origin/master分支上的修改合并到主分支上即可,如下所示:

git merge origin master

而pull命令則是相當(dāng)于將fetch和merge這兩個命令放在一起執(zhí)行了,它可以從遠(yuǎn)程版本庫上獲取最新的代碼并且合并到本地,如法如下所示:

git pull origin master

Git時間——將代碼托管到GitHub上

可以使用一個新的項目從頭到尾進(jìn)行實戰(zhàn)!

補充

  • 廖雪峰-Git教程
  • git commit --amend:既可以對上次提交的內(nèi)容進(jìn)行修改,也可以修改提交說明。需要先對修改后的代碼進(jìn)行手動git add,再執(zhí)行命令。執(zhí)行該命令后,直接push一般會失敗,原因是分支落后,可以解決問題后再push;也可以使用強推git push --force-with-lease origin 遠(yuǎn)程分支名稱。(參考博客
  • 撤銷push,并同步到遠(yuǎn)程
  • git revert <commitId>:撤銷指定的commit,對其它commit沒影響
  • git stash:暫存當(dāng)前分支的改動,針對還沒開發(fā)完的分支
  • git stash pop:恢復(fù)當(dāng)前分支的改動
  • git stash list:查看是否有stash操作
  • reset:在本地reset后,同步到遠(yuǎn)程倉庫參考博客
最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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