0%

Git版本控制語法使用

Git 版本控制語法筆記

git基本操作篇

git初始化

使用Git必須要在你要管理的資料夾根部路初始化,使用Git終端機輸入

1
git init

git clone,從遠端複製到本地

複製一個遠端倉庫資料到當地,會複製所有內容,包含版本控制紀錄

1
git clone [url]

git add

新增修改文件添加到文件暫存區

1
git add

添加一個或多個文件到暫存區:

1
git add [file1] [file2] ...

添加指定目錄到暫存區,包括子目錄:

1
git add [dir]

添加當前目錄下所有變動的文件到暫存區:

1
git add .

接著可以查看文件狀態,已加入暫存區,或不在暫存區

1
git status

git commit

將檔案加入到暫存區後,要使用git commit來發布修改

1
git commit -m [message]

message,可以寫更改的備註,通常短而簡潔。
因為每次的改動,也不要太多太大量,保持習慣有小改動就發布git commit做紀錄,
方便未來有問題時回退或讓人容易了解改動。

若不想將暫存區全部推上可以使用

1
git commit [file1] [file2] ... -m [message]

修改最後一次commit內容

總是會不小心打錯字,或語意不清楚,希望重新修改commit的內容,但又不想退回版本時,可以使用

1
git commit --amend --no-edit -m 'message'

git 就會直接修改最後一次的 commit,而不會增加新的 commit。(版本號碼會變,但發布時間不會變動)

git reset

git reset 命令語法格式如下:

git reset [HEAD]
–mixed 為默認,可以不用帶該參數,用於重置暫存區的文件與上一次的提交(commit)保持一致,工作區文件內容保持不變。

git reset [commit版本號]

範例:
假設有三個版本
commit HEAD1 [當前]
commit HEAD2
commit HEAD3

1
2
3
4
git log # 先查看版本,目前當前commit後面標示 HEAD -> [branch]
git reset HEAD^ # 可以回退所有內容到上一個版本[HEAD2],工作區保持現況,但把所有文件退回到暫存區,並且可以查看跟HEAD3版本差異
git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一個版本
git reset 052e # 回退到指定版本 指定commit 版本號

查看遠端倉庫 git remote -v
新增遠端倉庫 git remote add
推送至遠端repository:git push [遠程主機名] [本地分支:遠程分枝名],如果遠程分枝名跟本地分枝名一樣可以省略

git rm

刪除檔案

1
git rm [file]

將檔案僅從暫存區移除,但還是保留此檔案

1
git rm --cached <file>

git remote

新增遠程倉庫[Repo]:

1
git remote add [shortname] [url]

顯示所有遠程倉庫

1
git remote -v 

顯示某個遠程倉庫訊息

1
2
3
4
5
6
7
git remote show [shortname]
* remote https://github.io/doug0849/doug0849.github.io
Fetch URL: https://github.io/doug0849/doug0849.github.io
Push URL: https://github.io/doug0849/doug0849.github.io
HEAD branch: master
Local ref configured for 'git push':
master pushes to master (local out of date)

刪除定義好的遠程倉庫連結

1
git remote rm [shortname]

git fetch

假設今天我把檔案上傳到了Github,但發現有個小錯誤之類的,然後我直接在github網頁上改動了,這時候Github倉庫版本資料就和本地端不同了,
這時候要先使用 git fetch把遠端倉庫的數據抓下來比對(只對數據做比較,不抓檔案)。

1
2
3
4
5
6
7
8
9
git fetch [shortname]

得到以下回應
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From github.com:tianqixin/runoob-git-test
0205aab..febd8ed master -> origin/master

可以看到最後一行 0205aab master -> origin/master
意思是 本地的master分支 與 遠端origin這個倉庫的 master 不一樣,有更新。

git merge

之後可以使用git merge來合併資料本地當前分支
git merge也可以用來合併本地分支

1
git merge [shortname]/[branch]

git pull

其實git pull就是 git fetch + git merge

1
git pull <遠程主機名> <遠程分支名>:<本地分支名>

將遠程主機 origin 的 master 分支拉取過來,與本地的 branch 分支合併。
更新操作範例:

1
2
git pull origin master:branch # 如果遠程分支是與當前分支是同樣的話,則冒號後面的部分可以省略。
git pull origin master

git push

git push 用來將本地的分支所有版本上傳到遠程並合併。

命令格式如下:

1
2
git push <遠程主機名> <本地分支名>:<遠程分支名>  # 如果本地分支名與遠程分支名相同,則可以省略冒號:
git push <遠程主機名> <本地分支名>

如果要刪除遠端主機的分支可以使用 –delete 參數,以下指令表示刪除 origin 主機的 master 分支:

1
git push origin --delete master

git 分支管理

使用分支就可以從開發主線上分離開來,然後在不影響主線的同時繼續工作。
所以當再開發任何作業的時候

git branch

1
2
3
git branch [name] # 創建分枝
git branch # 查詢分枝
git branch -d [name] # 刪除分枝

git checkout

1
git checkout [name] # 切換分枝

git merge

1
git merge [branch name] # 合併分支

Welcome to my other publishing channels