1. 程式人生 > 遊戲 >玩家自制《最終幻想7:重製版》勞拉mod 代替蒂法

玩家自制《最終幻想7:重製版》勞拉mod 代替蒂法

git本地倉庫操作

建立本地倉庫

git init就會將當前目錄變成一個git倉庫,同時當前目錄也會有個.git的目錄。

預設用master作為本地分支的名字,可以通過git branch -m <name>命令修改當前分支的名字。

當前執行git branch是檢視不到當前的master分支的,那是因為當前我們還沒有執行git commit操作。

git add a.txt就可以將a.txt新增到暫存區。

git commit -m [日誌] 將暫存區的所有檔案提交到本地庫。

git commit -m [日誌] [file] 將暫存區的指定檔案提交到本地庫。

執行git status

也會看到當前的工作區是乾淨的,沒有要提交的東西。

這時我們再執行git branch就可以看到當前的master分支了。

分支切換

git checkout [分支名]可以切換分支。但是如果對應分支不存在的話,那就會報錯。

git checkout -b [分支名]如果分支不存在,那就需要新增-b引數,建立分支並切換。

git branch [分支名] 建立分支,但不切換分支

git branchgit branch -va檢視所有分支

刪除分支

git branch -d [分支名]

分支合併

比如將dev分支的修改合併到master分支。

git checkout master切換到master

分支

git merge dev 就可以將dev分支的內容合併到master分支

衝突處理:

如果在合併分支過程中提示有衝突那就需要做如下處理。

  • 如果當前衝突的是是一個文字檔案,比如檔名是a.txt。那開啟檔案,將衝突的內容修改掉。重新執行git add a.txt ,git commit -m "xxx"重新提交就可以了。

  • 如果當前衝突的是二進位制檔案,比如檔名是a.so,這就不能通過手工的方式將它合併了。那就可以執行下面的命令

git checkout a.so --ours或者git checkout a.so --theirs選擇保留一個分支的,捨棄另一個分支的。

--ours

表示檢出當前分支,即合併後儲存當前分支的改動而丟棄另外一個分支的改動。

--theirs 表示檢出另外一個分支,即儲存另外一個分支的改動丟棄當前分支的改動。

重新執行git add a.so ,git commit -m "xxx"重新提交就可以了。

刪除檔案

從本地庫中刪除a.txt

git rm a.txt 這會將這個刪除操作提交到暫存區,也會本地刪除a.txt這個檔案。如果想保留本地的檔案不被刪除,那就需要新增--cache引數。對應的命令就是git rm a.txt --cached

git commit -m "delete a.txt" 將這次刪除提交到本地庫

從暫存區中刪除a.txt

git restore --staged a.txt

還原檔案

如果檔案a.txt已經修改了,但是之前我們已經新增到暫存區或者已經提交到了本地庫,現在想還原a.txt

從暫存區中還原:

git restore a.txt

從本地庫中還原:

git reset a.txt執行完這個操作a.txt並沒有被還原。主要是為了避免本地工作區中的修改丟失。

git restore a.txt 繼續執行完這個操作後就可以將本地庫中最新的a.txt還原到工作區

​ 要還原本地庫中之前提交的版本:

git log a.txt檢視檔案提交記錄,獲取commit id

git reset [commit id] a.txt 還原指定版本

git restore a.txt

git checkout a.txt也可以還原a.txt。如果暫存區有,就還原暫存區的,否則就還原本地庫的。這個命令還是比較危險的,會將當前工作區中的檔案直接覆蓋掉。

檢視歷史提交日誌

git log檢視歷史提交日誌,如果有版本回退,回退版本之後的歷史提交日誌這個命令是看不到的。

它有好多種格式化輸出形式git log --graph --pretty=onelinegit log --oneline等等。

git reflog也可以檢視歷史提交日誌。與git log 不同的是它會顯示所有歷史提交記錄,包括回退版本之後的。

常用的形式git reflog show

版本回退

git reset --hard [區域性索引值] 回退到指定版本

git reset --soft [區域性索引值]

git reset --mixed [區域性索引值]

soft 僅僅在本地庫中移動head指標

mixed 在本地庫移動head指標,同時重置暫存區

hard 在本地庫移動head指標,同時重置暫存區、重置工作區

使用^符號只能後退

git reset --hard HEAD^ 一個^表示後退一步,n個表示後退n步

使用~符號:只能後退

git reset --hard HEAD~n 表示後退n步

將當前修改儲存到堆疊區

git stash 將當前的修改儲存在堆疊區

git stash save [日誌] 將當前的修改儲存在堆疊區

git stash list檢視當前所有的堆疊區儲存列表

git stash pop還原最近的stash。同時從堆疊區中刪除。

git stash pop [數字]還原指定stash。同時從堆疊區中刪除。

git stash drop [數字] 刪除堆疊區中指定stash。

git stash show 顯示最近堆疊區和工作區的差異.git stash show -p可以顯示更詳細的內容。

git stash show [數字]git stash show -p [數字]比較堆疊區中指定的stash和工作區

git stash clear清空

比較檔案差異

git diff [file] 將工作區的檔案和暫存區的比較
git diff [本地庫中的歷史版本] [file] 將工作區中的檔案和本地庫歷史記錄比較

不帶檔名比較所有差異檔案

遠端倉庫操作,如github

克隆遠端倉庫

git clone [遠端倉庫地址]命令可以將遠端倉庫及所有分支都克隆下來。同時會在本地庫建立master分支,與遠端庫的master分支關聯

本地倉庫與遠端倉庫關聯

git remote add [遠端倉庫別名] [遠端倉庫地址]將本地倉庫與遠端倉庫關聯。

本地倉庫可以關聯多個遠端倉庫

git remote -v可以檢視本地庫關聯的遠端庫的資訊。這裡

本地倉庫與遠端倉庫斷開關聯

git remote rm [遠端倉庫別名] 將本地倉庫與遠端倉庫斷開關聯

將本地庫內容推送到遠端倉庫

git push [遠端倉庫別名] [本地倉庫分支名]將本地倉庫對應分支推送到遠端倉庫,如果遠端倉庫沒有與本地對應分支名,就會在遠端倉庫建立一個對應分支。

如我本地有個dev分支。執行 git push origin dev就會將本地dev分支的內容推送到遠端倉庫dev分支,如果遠端倉庫沒有dev分支,就會在遠端倉庫建立個dev分支。

git push [遠端倉庫別名] [本地倉庫分支名]:[遠端倉庫分支名]

我本地有個dev分支。執行 git push origin dev:odev就會將本地dev分支的內容推送到遠端倉庫odev,如果遠端倉庫沒有odev分支,就會在遠端倉庫建立個odev分支。

如果本地分支與遠端倉庫分支名字相同,可以新增-u引數將其設定為預設推送、拉取分支,以後就可以直接使用git push進行推送,使用git pull之類的拉取。

如使用git push -u origin dev將本地dev分支推送給遠端倉庫dev分支,同時將遠端dev設定為預設推送分支。以後推送就可以直接使用git pushgit pull了。

從遠端倉庫拉取程式碼

git pull [遠端倉庫別名] [遠端倉庫分支名]:[本地分支名]將遠端倉庫 的 對應分支拉取過來,與本地的分支合併。

git pull 如果之前本地庫分支與遠端庫分支已經關聯過,那就可以直接使用這個命令拉取。

git fetch [遠端倉庫別名] 將遠端倉庫的程式碼拉取到本地,注意,這裡只是拉取下來,並沒有和本地庫合併。

git merge [遠端倉庫名]\[遠端分支名]git fetch拉下來的程式碼,指定遠端分支與本地當前分支程式碼合併。

刪除遠端倉庫分支

git push [遠端倉庫別名] --delete [遠端倉庫分支名]