在 Git 中怎樣克隆、修改、新增和刪除檔案?
在 本系列的第一篇文章 開始使用 Git 時,我們建立了一個簡單的 Git 倉庫,並用我們的計算機連線到它,向其中新增一個檔案。在本文中,我們將學習一些關於 Git 的其他內容,即如何克隆(下載)、修改、新增和刪除 Git 倉庫中的檔案。
讓我們來克隆一下
假設你在 GitHub 上已經有一個 Git 倉庫,並且想從它那裡獲取你的檔案——也許你在你的計算機上丟失了本地副本,或者你正在另一臺計算機上工作,但是想訪問倉庫中的檔案,你該怎麼辦?從 GitHub 下載你的檔案?沒錯!在 Git 術語中我們稱之為“克隆”。(你也可以將倉庫作為 ZIP 檔案下載,但我們將在本文中探討克隆方式。)
讓我們克隆在上一篇文章中建立的名為 Demo 的倉庫。(如果你還沒有建立 Demo 倉庫,請跳回到那篇文章並在繼續之前執行那些步驟)要克隆檔案,只需開啟瀏覽器並導航到 https://github.com/<your_username>/Demo
(其中 <your_username>
是你倉庫的名稱。例如,我的倉庫是 https://github.com/kedark3/Demo
)。一旦你導航到該 URL,點選“克隆或下載”按鈕,你的瀏覽器看起來應該是這樣的:
正如你在上面看到的,“使用 HTTPS 克隆”選項已開啟。從該下拉框中複製你的倉庫地址(https://github.com/<your_username>/Demo.git
),開啟終端並輸入以下命令將 GitHub 倉庫克隆到你的計算機:
git clone https://github.com/<your_username>/Demo.git
然後,要檢視 Demo
目錄中的檔案列表,請輸入以下命令:
ls Demo/
終端看起來應該是這樣的:
修改檔案
現在我們已經克隆了倉庫,讓我們修改檔案並在 GitHub 上更新它們。首先,逐個輸入下面的命令,將目錄更改為 Demo/
,檢查 README.md
中的內容,新增新的(附加的)內容到 README.md
,然後使用 git status
檢查狀態:
cd Demo/
ls
cat README.md
echo "Added another line to REAMD.md" >> README.md
cat README.md
git status
如果你逐一執行這些命令,終端看起開將會是這樣:
讓我們看一下 git status
的輸出,並瞭解它的意思。不要擔心這樣的語句:
On branch master
Your branch is up-to-date with 'origin/master'.".
因為我們還沒有學習這些。(LCTT 譯註:學了你就知道了)下一行說:Changes not staged for commit
(變化未籌劃提交);這是告訴你,它下面列出的檔案沒有被標記準備(“籌劃”)提交。如果你執行 git add
,Git 會把這些檔案標記為 Ready for commit
(準備提交);換句話說就是 Changes staged for commit
(變化籌劃提交)。在我們這樣做之前,讓我們用 git diff
命令來檢查我們新增了什麼到 Git 中,然後執行 git add
。
這裡是終端輸出:
我們來分析一下:
diff --git a/README.md b/README.md
是 Git 比較的內容(在這個例子中是README.md
)。--- a/README.md
會顯示從檔案中刪除的任何東西。+++ b/README.md
會顯示從檔案中新增的任何東西。- 任何新增到檔案中的內容都以綠色文字列印,並在該行的開頭加上
+
號。 - 如果我們刪除了任何內容,它將以紅色文字列印,並在該行的開頭加上
-
號。 - 現在
git status
顯示Changes to be committed:
(變化將被提交),並列出檔名(即README.md
)以及該檔案發生了什麼(即它已經被modified
並準備提交)。
提示:如果你已經執行了 git add
,現在你想看看檔案有什麼不同,通常 git diff
不會輸出任何東西,因為你已經新增了檔案。相反,你必須使用 git diff --cached
。它會告訴你 Git 新增的當前版本和以前版本檔案之間的差別。你的終端輸出看起來會是這樣:
上傳檔案到你的倉庫
我們用一些新內容修改了 README.md
檔案,現在是時候將它上傳到 GitHub。
讓我們提交更改並將其推送到 GitHub。執行:
git commit -m "Updated Readme file"
這告訴 Git 你正在“提交”已經“新增”的更改,你可能還記得,從本系列的第一部分中,新增一條訊息來解釋你在提交中所做的操作是非常重要的,以便你在稍後回顧 Git 日誌時瞭解當時的目的。(我們將在下一篇文章中更多地關注這個話題。)Updated Readme file
是這個提交的訊息——如果你認為這沒有合理解釋你所做的事情,那麼請根據需要寫下你的提交訊息。
執行 git push -u origin master
,這會提示你輸入使用者名稱和密碼,然後將檔案上傳到你的 GitHub 倉庫。重新整理你的 GitHub 頁面,你應該會看到剛剛對 README.md
所做的更改。
終端的右下角顯示我提交了更改,檢查了 Git 狀態,並將更改推送到了 GitHub。git status
顯示:
Your branch is ahead of 'origin/master' by 1 commit
(use "git push" to publish your local commits)
第一行表示在本地倉庫中有一個提交,但不在 origin/master
中(即在 GitHub 上)。下一行指示我們將這些更改推送到 origin/master
中,這就是我們所做的。(在本例中,請參閱本系列的第一篇文章,以喚醒你對 origin
含義的記憶。我將在下一篇文章中討論分支的時候,解釋 master
的含義。)
新增新檔案到 Git
現在我們修改了一個檔案並在 GitHub 上更新了它,讓我們建立一個新檔案,將它新增到 Git,然後將其上傳到 GitHub。 執行:
echo "This is a new file" >> file.txt
這將會建立一個名為 file.txt
的新檔案。
如果使用 cat
檢視它:
cat file.txt
你將看到檔案的內容。現在繼續執行:
git status
Git 報告說你的倉庫中有一個未跟蹤的檔案(名為 file.txt
)。這是 Git 告訴你說在你的計算機中的倉庫目錄下有一個新檔案,然而你並沒有告訴 Git,Git 也沒有跟蹤你所做的任何修改。
我們需要告訴 Git 跟蹤這個檔案,以便我們可以提交併上傳檔案到我們的倉庫。以下是執行該操作的命令:
git add file.txt
git status
終端輸出如下:
git status
告訴你有 file.txt
被修改,對於 Git 來說它是一個 new file
,Git 在此之前並不知道。現在我們已經為 Git 新增了 file.txt
,我們可以提交更改並將其推送到 origin/master
。
Git 現在已經將這個新檔案上傳到 GitHub;如果重新整理 GitHub 頁面,則應該在 GitHub 上的倉庫中看到新檔案 file.txt
。
透過這些步驟,你可以建立儘可能多的檔案,將它們新增到 Git 中,然後提交併將它們推送到 GitHub。
從 Git 中刪除檔案
如果我們發現我們犯了一個錯誤,並且需要從我們的倉庫中刪除 file.txt
,該怎麼辦?一種方法是使用以下命令從本地副本中刪除檔案:
rm file.txt
如果你現在做 git status
,Git 就會說有一個檔案 not staged for commit
(未籌劃提交),並且它已經從倉庫的本地複製中刪除了。如果我們現在執行:
git add file.txt
git status
我知道我們正在刪除這個檔案,但是我們仍然執行 git add
,因為我們需要告訴 Git 我們正在做的更改,git add
可以用於我們新增新檔案、修改一個已存在檔案的內容、或者從倉庫中刪除檔案時。實際上,git add
將所有更改考慮在內,並將這些籌劃提交這些更改。如果有疑問,請仔細檢視下面終端螢幕截圖中每個命令的輸出。
Git 會告訴我們已刪除的檔案正在進行提交。只要你提交此更改並將其推送到 GitHub,該檔案也將從 GitHub 的倉庫中刪除。執行以下命令:
git commit -m "Delete file.txt"
git push -u origin master
現在你的終端看起來像這樣:
你的 GitHub 看起來像這樣:
現在你知道如何從你的倉庫克隆、新增、修改和刪除 Git 檔案。本系列的下一篇文章將檢查 Git 分支。
via: https://opensource.com/article/18/2/how-clone-modify-add-delete-git-files
作者:Kedar Vijay Kulkarni 譯者:MjSeven 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出
相關文章
- 在Linux中,如何建立、刪除和修改檔案?Linux
- Git——刪除檔案Git
- Git刪除指定檔案Git
- SVN培訓筆記(下拉專案、同步修改、新增檔案、修改檔案、刪除檔案、改名檔案等)筆記
- git 刪除已經新增到git跟蹤的檔案或資料夾Git
- git 刪除歷史指定檔案Git
- git刪除未跟蹤檔案Git
- Git恢復刪除的檔案Git
- git刪除歷史中的某個大檔案Git
- c盤爆紅了可以刪除哪些檔案 怎樣刪除c盤非系統檔案
- 怎樣刪除w10更新檔案提示_win10更新檔案提示刪除如何操作Win10
- 在 Linux 中如何刪除檔案中的空行Linux
- git 入門教程之刪除檔案Git
- 克隆git工程檔案的方法Git
- 在Linux中,如何建立、移動和刪除檔案和資料夾?Linux
- vue實現li列表的新增刪除和修改Vue
- 在Linux中,有一個檔案,如何刪除包含“www“字樣的字元?Linux字元
- Git刪除暫存區的指定檔案Git
- 在 Linux 中怎樣移除(刪除)符號連結Linux符號
- git刪除本地分支命令 git怎麼刪除本地分支Git
- 在Linux系統中如何刪除一個檔案?Linux
- 在Oracle中,如何定時刪除歸檔日誌檔案?Oracle
- 在Linux中,刪除一個檔案,刪不掉是什麼原因?Linux
- git 查詢大檔案、刪除大檔案詳細步驟Git
- win10休眠檔案如何清除 win10刪除休眠檔案怎樣操作Win10
- 【Git/Github】刪除遠端倉庫中的檔案/資料夾Github
- linux的刪除檔案命令和強制刪除命令Linux
- 如何刪除win10睡眠檔案_win10怎麼刪除睡眠檔案Win10
- win10系統ftp不讓刪除修改檔案怎麼辦Win10FTP
- win10怎樣強制刪除dll檔案 win10系統強制刪除dll檔案的步驟Win10
- Git修改配置檔案Git
- 在蘋果Mac上如何查詢和刪除檔案?蘋果Mac
- 在Linux中,如何實現檔案系統的快照和克隆?Linux
- 刪除檔案中的數字
- win10怎麼刪除更新檔案 win10刪除更新檔案的方法Win10
- win10怎麼刪除dll檔案_win10dll檔案刪除的方法Win10
- Git分支建立和刪除Git
- WPF中的ListBox怎麼新增刪除按鈕並刪除所在行