1. 程式人生 > >git常用命令小結+Android Studio環境配置

git常用命令小結+Android Studio環境配置

git常用命令小結

兩種常用的獲取git倉庫的辦法

  • 從現有倉庫克隆

可以將github上或gitee上已有的git倉庫克隆到本地

git clone [url].git

還可以自定義本地倉庫的名字

git clone [url].git [name]
  • 本地初始化
    可以在本地直接將當前資料夾初始化成一個倉庫
git init

管理倉庫

  • 跟蹤檔案
    可以將檔案新增到跟蹤列表,以跟蹤檔案的狀態
## 將當前倉庫的某檔案新增到跟蹤列表
git add [file name]

## 將當前倉庫的所有檔案新增到跟蹤列表
git add -A
  • 檢視狀態
    可以檢視當前倉庫已跟蹤的檔案使用情況,如新增、修改、刪除等
git status
  • 提交更新
    當檔案狀態不是最新時,可以通過提交更新以同步。通過上面add跟蹤到的檔案相當於是放在了一個暫存區,提交更新就是將當前暫存的內容正式記錄到倉庫。
## 更新時最好備註更新內容以便將來能精確地恢復到想要的早期版本
git commit -m "add your comment"

## 撤銷上次的提交
git commit --amend
  • 忽略檔案
    當有些雜七雜八的檔案比如某個專案的配置檔案或者一些庫檔案等非核心程式碼檔案,在每次建立專案的時候都會自動生成,沒必要放到線上的倉庫上加大儲存負擔和他人的下載負擔,可以忽略這些檔案的跟蹤。

    • 先建立一個.gitignore的檔案
    • 在檔案中列出需要忽略的檔名的特點,可用正則表示式描述
  • 移除檔案

git rm [name]
  • 移動&重新命名檔案
git mv [old-path/old-name] [new-path/new-name]

版本控制

有時候做出一些意外的改動,想恢復到之前的某個版本,這時候便可以使用git的版本控制,這也是git的看家本領。

  • 檢視所有版本
git log
  • 恢復到之前的某個版本
    • reset方法:乾脆利落,直接回退
    git reset --hard HEAD~[num]
    
    • revert方法:留條後路,會新增一次提交所以不影響之前的提交
    ## 撤銷上一次commit
    git revert HEAD
    
    ## 撤銷上上次commit
    git revert HEAD^
    
    ## 撤回指定commit-id,如 git revert 0818badf6882ea2664a205bc8ef3a85425bb2537
    git revert commit-id
    

分支控制

分支控制多數用於臨時在已有的應用上新增功能或者緊急修復,但又不能在開發過程中影響原來的應用的正常執行,所以建立分支其實是對建立分支前所在目錄的一個拷貝,在新建的分支上完成程式碼的修改之後,可以將新建的臨時分支合併到原來的分支上,並刪除臨時建立的分支。

  • 建立分支
git branch [name]
  • 切換分支
git checkout [name]
  • 建立並切換分支
git checkout -b [name]
  • 合併分支
## 先切換回原分支
git checkout master

## 再將要在原分支上新增的分支合併進來
git merge [name]
  • 刪除分支
git branch -d [name]

遠端控制

git提供了遠端倉庫,可以支援多人合作

  • 檢視遠端倉庫
## 只看遠端倉庫的名字
git remote

## 名字+倉庫URL
git remote -v

## 詳細資訊
git remote show [name]
  • 新增遠端倉庫
git remote add [name] [url].git
  • 拉取遠端倉庫
## 拉取併合並
git pull [name]

## 拉取不合並
git fetch [name]
  • 推送到遠端倉庫
git push [name] [master/branch]
  • 刪除遠端倉庫
git remote rm [name]
  • 重新命名遠端倉庫
git remote rename [old name] [new name]

Android開發環境搭建

下載並安裝Android studio(需科學上網)

下載並安裝Android sdk(需科學上網)

下載並安裝JDK

  • 名稱:jdk-8u181-windows-x64
  • 安裝後配置Java環境變數
    • 新建系統變數JAVA_HOME,值為jdk安裝目錄
    ## 例如
    F:\Java\jdk1.8.0_181
    
    • 新建系統變數CLASSPATH,指定Java的類路徑
    ## ;為分隔符
    .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
    
    • 在系統變數PATH末尾追加
    %JAVA_HOME%\bin
    %JAVA_HOME%\jre\bin
    
  • cmd輸入java和javac,出現報錯
could not find java.dll
could not find java SE Runtime Environment
  • 上網查後發現和原有的Java路徑衝突
    • 原因:在系統變數Path的最前面有一條:C:\ProgramData\Oracle\Java\javapath;是本機自帶的javapath,與將要配置的javapath有衝突
    • 解決方案:將剛剛追加的兩條path移到其前面

按順序完成

  • cmd輸入java和javac,出現相關資訊,配置成功
  • 重新執行sdk installer,可檢測到jdk,一直點下一步直到sdk安裝成功
  • Android studio啟動後開啟sdk manager,選擇新安裝的sdk路徑
  • 重啟Android studio,正常使用

測試helloworld

  • 新建project,命名新專案為helloworld,按預設選項完成建立
  • 問題1:會發現gradle同步出錯
  • 原因及解決方案
    • 所以就應該設定代理了
    • 將你的代理工具的本地代理埠設定成1080
    • 並在gradle.properties末尾新增對應的代理設定(埠要對應)
    systemProp.http.proxyHost=localhost
    systemProp.http.proxyPort=1080
    systemProp.https.proxyHost=localhost
    systemProp.https.proxyPort=1080
    
    • 儲存修改後重啟Android Studio或點選try again,會發現已經可以連線上
  • 問題2:在try again時發現說缺少Android 26,報錯視窗彈出的提示install點選後說unavailable
  • 原因及解決方案
    • 其實就是代理還沒有完全設定好,進一步設定代理後就能正常下載了
    • 並在setting裡的HTTP proxy設定對應的埠和host,點選apply後ok
  • 問題3:執行過程中還是說缺東西
  • 原因及解決方案
    • 之前安裝的installer_r24.4.1-windows是sdk tools,是用來幫助安裝相關工具和檢查更新,沒有帶附加的東西,也就是還有許多東西沒下載
    • 如果前面的代理都設定好了,現在缺什麼下什麼就好了
    • 代理設定不成功就得自己去別的地方手動
  • 問題4:最後模擬器也安裝好了,啟動說缺少硬體加速器(ERROR: x86 emulation currently requires hardware acceleration!)
    • 缺少Intel HAXM,需要去官網下,或者使用sdk manager下,自己下的話就要手動放到之前installer_r24.4.1-windows的安裝目錄下的extras資料夾並解壓手動安裝
    • 安裝的時候如果出現報錯,多半是沒有開啟Intel VT技術,要去bios上設定
      • 重啟主機,適當時候按F2進入BIOS介面
      • 點開高階模式(Advanced Mode)
      • 開啟CPU設定(CPU Configuration)
      • 找到Intel 虛擬技術(Intel VT-x)
      • 將關閉改成開啟(disable=>enable)
      • 重啟電腦
      • 再次開啟Android Studio並執行專案
  • 至此就應該解決所有問題了,可以正常跑出helloworld的手機模擬效果

其他

在之後啟動AS的時候發現都會先提醒sdk不存在,然後提示安裝的時候又檢測到我們已經裝好的sdk。這個其實不影響,造成的原因是因為檢測sdk的程式比匯入sdk的程式先運行了。如果覺得每次都要點這麼多下很麻煩,可以在AS的安裝目錄下的bin資料夾中找到idea.properties檔案,在檔案末尾追加一行

disable.android.first.run=true

git分享會補充

  • SVN版本控制流程
    • 集中式管理
      • 版本記錄都存在伺服器
      • 伺服器崩了就全崩了
    • 檔案之間相互獨立
  • Git版本控制流程
    • 分散式管理
      • 本地有某個貢獻者的完整版本庫
      • 如果伺服器崩了還可以使用某個最新貢獻者的本地庫重新部署伺服器
    • 顆粒度比SVN細(能識別到具體某個檔案的某幾行)