Git版本控制工具使用方法整理
因為現在git是專案管理的主流,在學習使用過程中整理總結出了一些東西,特在此記錄一下。所有用法總結如圖:
- 基礎篇
- 遠端篇
- 分支篇
- 提交篇
- 衝突篇
- 回滾篇
- 刪除篇
- 檢視篇
基礎篇
命令 | 解釋 |
---|---|
git init | 初始化一個Git倉庫 |
git -rf .git | 刪除版本庫 |
遠端篇
命令 | 解釋 |
---|---|
git remote -v | 檢視遠端路徑 |
git remote set -url origin url | 設定遠端地址 |
git remote add name url | 關聯遠端庫 |
git fetch name | 拉取但不合並 |
git pull | 拉取併合並 |
git push | 推送 |
git clone url | 克隆倉庫 |
分支篇
命令 | 解釋 |
---|---|
git branch | 檢視分支 |
git checkout -b new_branch | 建立並切換到新的分支 |
git checkout master | 切換到master分支 |
git merge other_branch | 合併別的分支到當前分支 |
git rebase other_branch | 把當前分支的提交臨時儲存為補丁並臨時刪除這些提交,合併更新另一分支,最後把補丁應用到當前分支 |
git branch -d branch | 刪除分支 |
git log –graph –pretty=oneline –abbrev-commit | 檢視分支合併情況 |
1. master分支是主分支,因此要時刻與遠端同步 2. dev分支是開發分支,團隊所有成員都需要在上面工作,所以也需要與遠端同步 3. bug分支只用於在本地修復bug,就沒必要推到遠端了,除非老闆要看看你每週到底修復了幾個bug 4. feature分支是否推到遠端,取決於你是否和你的小夥伴合作在上面開發
提交篇
命令 | 解釋 |
---|---|
git add | 新增檔案,可反覆多次使用,修改放在暫存區 |
git commit -m “comments” | 將暫存區的所有修改提交到倉庫 |
git push origin | 推送 |
每次修改,如果不add到暫存區,那就不會加入到commit中
衝突篇
命令 | 解釋 |
---|---|
git status $file | 顯示衝突 |
cat $file | 檢視衝突檔案 |
git add $file | 處理後標記為解決 |
git commit -m “comments” | 提交 |
一般在專案開發過程中,在本地分支(feature/branch)寫程式碼,提交到自己的遠端分支(origin/feature/branch)從中央庫遠端分支(upstream/feature/branch)上merge下程式碼,如果merge時有衝突需要修改
You have not concluded your merge (MERGE_HEAD exists) git拉取失敗
回滾篇
命令 | 解釋 |
---|---|
git reset –hard commit_id | 回退到commit_id這個版本 |
git reset –hard $HEAD | 全部回退 |
git reset –soft $HEAD | 只回退commit內容 |
git reset –mixed $HEAD | 預設,回退commit和index |
一般情況HEAD指向的版本為當前版本,使用git reset –hard commit_id(上一個版本:HEAD^,上上一個版本:HEAD^^,往上100個,寫成HEAD~100)
刪除篇
命令 | 解釋 |
---|---|
git rm file | 從檔案跟蹤和檔案系統刪除,刪除版本庫的檔案,記得git commit提交修改 |
git rm –cached file | 從檔案跟蹤刪除 |
git checkout - file | 誤刪後恢復檔案到最新版本 |
git push origin –delete | 刪除遠端分支 |
git push origin : | 推送一個空分支,相當於刪除遠端分支 |
git fetch -p | fetch之後刪除掉沒有與遠端分支對應的本地分支 |
檢視篇
命令 | 解釋 |
---|---|
git status | 檢視當前狀況 |
git diff | 檢視修改內容,再通過git add和git commit 提交內容 |
git log | 檢視提交歷史,用於回退之前 |
git reflog | 檢視命令歷史 |
git log –pretty=oneline | 單行日誌 |
在Android studio開發過程中的一些總結: Project資料夾目錄下:
- fork專案;
- 在AndroidProject的目錄下開啟git shell,輸入git clone 專案路徑(github專案下載);
專案目錄下:
- git checkout -b feature/refactor origin/feature/refactor匯入並且切換其他分支
-
git remote -v 顯示遠端分支(Android);
-
(關聯遠端庫)git remote add upstream(遠端分支名) 專案ssh地址(Android);
- git fetch upstream(遠端分支名)
Android studio有關git的操作: 修改程式碼,點選上邊VCS(綠色)進行選擇
- commit:所有操作基於這個而留下痕跡,commit message需要記錄並且記錄仔細以便之後進行回退查詢。
- push:把commit的內容提交到遠端專案(自己專案)中
- Revert:重置回專案原來的節點
- show diff:檢視不同,以此來了解專案的改變內容,若是隻是因為錯誤而造成的改動不commit
多人協作的工作模式通常是這樣:
- 首先,可以試圖用git push origin branch-name推送自己的修改
- 如果推送失敗,則因為遠端分支比你的本地更新,需要先用git pull試圖合併
- 如果合併有衝突,則解決衝突,並在本地提交
- 沒有衝突或者解決掉衝突後,再用git push origin branch-name推送就能成功
如果git pull提示“no tracking information”,則說明本地分支和遠端分支的連結關係沒有建立,用命令git branch –set-upstream branch-name origin/branch-name