Git 使用總結

weixin_34148340發表於2019-02-27

之前專案一直使用的是SVN,唯一使用的Git就是GitHub,但是也是個人專案用到的也是幾個簡單Git命令,並沒有團隊合作開發使用過,在使用過程中難免會遇到一些新手都會遇到的問題,這篇文章就專門記錄一些Git常用命令及使用過程中遇到的一些問題。

常用命令

建立專案並新增檔案

# 初始化專案
git init 
# 新增指定檔案到快取區
git add test.text
# 新增所有檔案到快取區,簡單粗暴
git add .
# 新增提交說明
git commit -m "新增了test.text檔案"

git本地倉庫關聯到github遠端倉庫

# 關聯到遠端倉庫
git remote add origin https://github.com/UserName/ProjectName.git
# 推送到遠端倉庫實現同步,-u的作用是關聯本地和遠端倉庫並將本地倉推送到遠端倉
git push -u origin master

拉取最新程式碼

git pull

推送本地修改到遠端倉庫

# 推送本地到遠端倉庫主幹或分支
# git push origin <branchName>
git push origin master

克隆專案

git clone https://github.com/UserName/ProjectName.git

分支管理

# 檢視分支
git branch
# 建立分支
git branch <name>
# 切換分支
git checkout <name>
# 建立並切換分支
git checkout -b <name>
# 合併某分支到當前分支
git merge <name>   
# 刪除分支,已經推送到遠端庫需要兩步
# 1、刪除本地分支
git branch -d <name>
# 2、刪除遠端分支
git push origin :branchName

儲存和恢復,通常用於分支間切換修復bug

# 儲存當前狀態
git stash
# 檢視儲存狀態
git stash list
# 恢復指定的儲存狀態
git stash apply stash@{0}
# 恢復儲存狀態
git stash apply
# 刪除儲存狀態
git stash drop
# 恢復儲存狀態並刪除stash,推薦使用
git stash pop     

標籤管理

# 檢視標籤列表
git tag
# 建立標籤
git tag <tagName>
# 建立標籤
git tag -a <tagName> -m "V7.0釋出了,打個標籤"
# 檢視最近commit id列表
git log --pretty=oneline --abbrev-commit
# 針對指定commit id打標籤
git tag <tagName>  <commit id>
# 刪除標籤
git tag -d <tagName>
# 推送指定標籤到遠端倉庫
git push origin <tagName>
# 推送全部標籤到遠端倉庫
git push origin --tags
# 刪除標籤,已經推送到遠端庫需要兩步
# 1、刪除本地標籤
git tag -d <tagName>
# 2、刪除遠端標籤
git push origin :refs/tags/<tagName>

版本回退

# 退回到上一個版本
git reset --hard HEAD^
# 退回到指定版本,只輸入commit id前幾位也可以
git reset --hard commit id
# 將提交到快取中檔案回退到工作區
git reset HEAD <fileName>
# 將提交到快取中全部檔案回退到工作區
git reset HEAD .

刪除檔案

# 刪除檔案
git rm <fileName>
# 刪除目錄及目錄下所包含的檔案
git rm <fileName> -r -f 
#  從快取中刪除檔案,但物理檔案還在專案中
git rm --cached <fileName>
# 快取和物理檔案同時刪除
git rm --f  <fileName>

撤銷修改,恢復到最近一次git commit或git add時的狀態

# 放棄當前檔案的修改,未加入快取區才有效
git checkout -- <fileName>
# 放棄所有的修改,未加入快取區才有效
# git checkout -- .

frok更新到最新的源庫程式碼

# upstream是一個自定義命名,相當於把你克隆的專案與源專案進行一個關聯
git remote add upstream https://github.com/UserName/Project.git 
# 更新源專案程式碼
git fetch upstream 
# 更新之後合併到本地,此刻可能發生衝突
git merge upstream/master  

檢視遠端庫的資訊

# 忘記git地址可以使用檢視
git remote -v

操作日誌

# 檢視操作日誌
git log
# 檢視歷史操作日誌
git reflog

檢視版本狀態

# 可以看修改或操作了那些檔案
git status

常見問題

合併分支UserInterfaceState.xcuserstate引起衝突問題

方法一:

刪除xcuserdata目錄,重新合併

方法二:

全域性設定忽略xcuserdata修改
1、vi .gitignore_global
2、新增xcuserdata 到檔案中

總結

後續使用遇到問題或者小技巧還會持續更新。