柚子快報邀請碼778899分享:git 基本概念、基本操作
工作區(qū)、暫存區(qū)、git目錄
工作區(qū)是對項目的某個版本獨立提取出來的內(nèi)容。 這些從 Git 倉庫的壓縮數(shù)據(jù)庫中提取出來的文件,放在磁盤上供你使用或修改暫存區(qū)是一個文件,保存了下次將要提交的文件列表信息,一般在 Git 倉庫目錄中。 按照 Git 的術語叫做“索引”,不過一般說法還是叫“暫存區(qū)”。Git 倉庫目錄是 Git 用來保存項目的元數(shù)據(jù)和對象數(shù)據(jù)庫的地方。 這是 Git 中最重要的部分,從其它計算機克隆倉庫時,復制的就是這里的數(shù)據(jù)。
已修改、已暫存、已提交
已修改表示修改了文件,但還沒保存到暫存區(qū)已暫存表示對一個已修改文件的當前版本做了標記,使之包含在下次提交的快照中已提交表示數(shù)據(jù)已經(jīng)安全地保存在本地數(shù)據(jù)庫中(Git 目錄)
git 基本工作流程
在工作區(qū)中修改文件。將你想要下次提交的更改選擇性地暫存,這樣只會將更改的部分添加到暫存區(qū)。提交更新,找到暫存區(qū)的文件,將快照永久性存儲到 Git 目錄。
獲取git倉庫
1. 在本地已存在目錄中初始化倉庫
該命令將創(chuàng)建一個名為 .git 的子目錄,這個子目錄含有你初始化的 Git 倉庫中所有的必須文件,這些文件是 Git 倉庫的骨干。但是,在這個時候,我們僅僅是做了一個初始化的操作,你的項目里的文件還沒有被跟蹤
cd /c/user/my_project
git init
如果在一個已存在文件的文件夾(而非空文件夾)中進行版本控制,你應該開始追蹤這些文件并進行初始提交。 可以通過 git add 命令來指定所需的文件來進行追蹤,然后執(zhí)行 git commit?,F(xiàn)在,已經(jīng)得到了一個存在被追蹤文件與初始提交的 Git 倉庫
git add *.pom
git commit -m 'initial project version'
2. 克隆現(xiàn)有的倉庫
git clone https://github.com/libgit2/libgit2
這會在當前目錄下創(chuàng)建一個名為 “l(fā)ibgit2” 的目錄,并在這個目錄下初始化一個 .git 文件夾, 從遠程倉庫拉取下所有數(shù)據(jù)放入 .git 文件夾,然后從中讀取最新版本的文件的拷貝。 如果你進入到這個新建的 libgit2 文件夾,你會發(fā)現(xiàn)所有的項目文件已經(jīng)在里面了,準備就緒等待后續(xù)的開發(fā)和使用。
如果你想在克隆遠程倉庫的時候,自定義本地倉庫的名字,你可以通過額外的參數(shù)指定新的目錄名,這會執(zhí)行與上一條命令相同的操作,但目標目錄名變?yōu)榱?mylibgit
git clone https://github.com/libgit2/libgit2 mylibgit
記錄每次更新到git倉庫(.git文件夾)
檢查當前文件狀態(tài)
git status
新clone項目或無修改、無新增文件 可以用 git status 命令查看哪些文件處于什么狀態(tài)。 如果在克隆倉庫后立即使用此命令,會看到類似這樣的輸出: 這說明你現(xiàn)在的工作目錄相當干凈。換句話說,所有已跟蹤文件在上次提交后都未被更改過 新增文件未add至暫存區(qū)(未跟蹤) 創(chuàng)建一個新的 README 文件。 如果之前并不存在這個文件,使用 git status 命令,你將看到一個新的未跟蹤文件: 跟蹤新文件
git add README
此時再運行 git status 命令,會看到 README 文件已被跟蹤,并處于暫存狀態(tài): 4. 暫存已修改的文件 此時修改被跟蹤的CONTRIBUTING.md文件,執(zhí)行git status結果如下: 文件 CONTRIBUTING.md 出現(xiàn)在 Changes not staged for commit 這行下面,說明已跟蹤文件的內(nèi)容發(fā)生了變化,但還沒有放到暫存區(qū)。使用 git add CONTRIBUTING.md 命令提交至暫存區(qū),之后再次執(zhí)行 git status 命令查看文件狀態(tài),結果如下: 此時README、CONTRIBUTING.md文件都已提交至暫存區(qū),一個是新文件、一個是修改文件 5. 修改已暫存的文件 上面CONTRIBUTING.md文件修改后已提交至暫存區(qū),此時再次修改CONTRIBUTING.md文件,使用git status 命令查看文件狀態(tài): 此時需要重新使用 git add 命令把 CONTRIBUTING.md文件提交至暫存區(qū),再次通過git status 查看文件狀態(tài):
查看工作區(qū)修改文件和已暫存文件內(nèi)容差異 test1.txt 已被暫存文件內(nèi)容為111,此時在工作區(qū)又修改test1.txt修改后內(nèi)容為111222,使用git status查看文件狀態(tài): 想要知道工作區(qū)文件內(nèi)容和暫存區(qū)快照文件內(nèi)容的差異,使用git diff命令查看: 查看暫存區(qū)文件和git 倉庫內(nèi)容差異(查看將要提交的文件內(nèi)容的修改) 使用 git diff --staged/git diff --cached 查看暫存區(qū)和git 倉庫文件內(nèi)容的差異: 暫存區(qū)test1.txt的文件內(nèi)容為111
提交更新
1. 直接使用 git commit 命令
輸入 git commit 命令后會打開vim編輯器(基于git 編輯器配置,默認是vim編輯器),之后可以輸入提交內(nèi)容的注釋信息,提交結果如下:
2. 使用 git commit -m “提交內(nèi)容注釋”
3. 跳過使用暫存區(qū)域 git commit -a
使用git add將修改文件內(nèi)容提交至暫存區(qū)的操作有時候過于繁瑣,可以使用 git commit -a命令把所有修改并且已經(jīng)被git跟蹤的文件全部暫存起來一并提交,因為文件test2.txt沒有被git跟蹤,所以沒有提交:
移除文件
刪除未被git跟蹤的文件
直接手動刪除(rm test5.txt),因為沒有被git跟蹤,如果使用git rm test5.txt會提示找不到test5.txt這個文件,也不用使用git add 提交刪除操作至暫存區(qū)和commit提交至git數(shù)據(jù)庫
刪除被git跟蹤的文件
手動刪除test5.txt 文件、使用git add 提交刪除操作至暫存區(qū) 或直接使用git rm -f test5.txt 會在工作區(qū)刪除并把刪除操作提交至暫存區(qū) git comit 提交刪除操作
刪除暫存區(qū)保留工作區(qū)文件(文件不想被git跟蹤)
git rm --cached test8.txt
查看提交記錄
直接使用git log 會按順序列出所有提交記錄,最后提交的在最上面,最開始提交的在最下面 查看最近幾次的提交記錄 git log -p -2,會顯示每次提交的內(nèi)容變化 復雜例子 如果要在 Git 源碼庫中查看 Junio Hamano 在 2008 年 10 月其間, 除了合并提交之外的哪一個提交修改了測試文件,可以使用下面的命令:
撤銷操作
有時候我們提交完了才發(fā)現(xiàn)漏掉了幾個文件沒有添加,或者提交信息寫錯了。 此時可以使用git commit --amend 選項的提交命令來重新提交,最終你只會有一個提交——第二次提交將代替第一次提交的結果。
修改上次提交的注釋
直接使用git commit --amend,會打開vim編輯器,直接修改提交注釋
修改提交內(nèi)容、漏提文件
工作區(qū)修改文件,使用git add 提交修改文件、漏提文件至暫存區(qū),使用git commit --amend提交文件
撤銷暫存的文件
如果你修改了兩個文件,并使用git add * 將兩個文件的修改都提交至暫存區(qū),此時你想將其中的一個文件從暫存區(qū)撤銷, git status 命令提示了你該如何操作:
撤銷工作區(qū)的修改
git status 也提示了你該怎么做:
遠程倉庫操作
查看遠程倉庫
如果想查看你已經(jīng)配置的遠程倉庫服務器,可以運行 git remote 命令。 它會列出你指定的每一個遠程服務器的簡寫。 如果你已經(jīng)克隆了自己的倉庫,那么至少應該能看到 origin ——這是 Git 給你克隆的倉庫服務器的默認名字: 也可以指定 -v 參數(shù),會顯示遠程倉庫的簡寫與對應的url
添加遠程倉庫
使用git remote add 遠程倉庫別名 遠程倉庫地址,之后就可以通過別名代替url進行git 操作 設置別名之后就使用遠程倉庫別名拉取文件(git fetch 別名)
從遠程倉庫抓取
git fetch :這個命令會訪問遠程倉庫,從中拉取所有你還沒有的數(shù)據(jù)。 執(zhí)行完成后,你將會擁有那個遠程倉庫中所有分支的引用,可以隨時合并或查看。 例如:如果你使用 clone 命令克隆了一個倉庫,命令會自動將其添加為遠程倉庫并默認以 “origin” 為簡寫。 所以,git fetch origin 會抓取克?。ɑ蛏弦淮巫ト。┖笮峦扑偷乃泄ぷ?。必須注意 git fetch 命令只會將數(shù)據(jù)下載到你的本地倉庫——它并不會自動合并或修改你當前的工作。
如果你的當前分支設置了跟蹤遠程分支, 那么可以用 git pull 命令來自動抓取后合并該遠程分支到當前分支。 默認情況下,git clone 命令會自動設置本地 master 分支跟蹤克隆的遠程倉庫的 master 分支(或其它名字的默認分支)。 運行 git pull 通常會從最初克隆的服務器上抓取數(shù)據(jù)并自動嘗試合并到當前所在的分支。
推送到遠程倉庫
git push :當你想要將 master 分支推送到 origin 服務器時(再次說明,克隆時通常會自動幫你設置好那兩個名字), 那么運行這個命令就可以將你所做的備份到服務器:git push origin master 當你和其他人在同一時間克隆,他們先推送到上游然后你再推送到上游,你的推送就會毫無疑問地被拒絕。 你必須先抓取他們的工作并將其合并進你的工作后才能推送。
查看某個遠程倉庫
如果想要查看某一個遠程倉庫的更多信息,可以使用 git remote show 命令: 這個命令列出了當你在特定的分支上執(zhí)行 git push 會自動地推送到哪一個遠程分支。還有當你執(zhí)行 git pull 時哪些本地分支可以與它跟蹤的遠程分支自動合并。
Fetch URL 和 Push URL:這是 Git 用來從遠程倉庫拉取(fetch)和推送(push)數(shù)據(jù)的 URL。HEAD branch:這是遠程倉庫當前的默認分支。Remote branches:這是遠程倉庫的所有分支列表,以及它們是否在本地被跟蹤。Local branches configured for ‘git pull’:這是本地配置為可以從遠程分支拉取的分支列表。Local refs configured for ‘git push’:這是本地配置為可以推送到遠程分支的引用(通常是分支)列表。
柚子快報邀請碼778899分享:git 基本概念、基本操作
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。