eclipse中git插件使用


1,首先看下文件的幾個工作區:Unstaged Changes(本地工作空間),Staged Changes(Add to Index操作之后代碼存放的地方),Local Repository(本地倉庫),Remote Repository(遠程倉庫)。

圖片中只展示兩個工作區:Unstaged Changes,Staged Changes(中文名叫暫存區,一般存放在".git目錄下"的index(.git/index)文件中,所以我們把暫存區有時也叫索引(index)),但是當你點擊提交(Commit)按鈕的時候,它就會被提交到本地倉庫(Local Repository)了。如果你點擊左邊的Commit and Push,代碼就會被提交到本地倉庫(Local Repository),然后推送遠程倉庫(Remote Repository)。

你也可以點擊Push Branch,代碼被推送到遠程倉庫(Remote Repository)。操作方法如下:

選擇你剛才提交的本地分支,如上圖,帶有local標識的,然后右擊,再選擇Push Branch。就被推送到遠程倉庫(Remote Repository)了。

2,eclipse中git的其他操作介紹

 

右擊git工程文件a-->Team-->commit:提交到本地倉庫(Local Repository)。

右擊git工程文件a-->Team-->Push to Upstream:把本地倉庫(Local Repository)代碼提交到遠程倉庫(Remote Repository)。

右擊git工程文件a-->Team-->Fetch from Upstream:從遠程獲取最新版下載到本地倉庫(Local Repository),不會自動merge。示例

git fetch origin master
git log -p master..origin/master
git merge origin/master

或者
git fetch origin master:tmp git diff tmp  git merge tmp

以上命令的含義:
首先從遠程的origin的master主分支下載最新的版本到origin/master分支上
然后用git diff比較本地的master分支和origin/master分支的差別
最后進行合並

右擊git工程文件a-->Team-->Push branch 'master':提交本地分支代碼到遠程服務器,就是在遠程服務器上新建一個分支。

右擊git工程文件a-->Team-->Pull:從遠程獲取最新版本並merge到本地。它把過程的細節都隱藏了起來,以至於你不用去了解git中各種類型分支的區別和使用方法。而且你的本地工作目錄在未經確認的情況下就會被遠程分支更新。當然,除非你關閉所有的安全選項,否則git pull在你本地工作目錄還不至於造成不可挽回的損失,但很多時候我們寧願做的慢一些,也不願意返工重來。慎用。盡量用git fetch和git merge代替示例

git pull origin master

上述命令其實相當於git fetch 和 git merge。在實際使用中,git fetch更安全一些。因為在merge前,我們可以用git diff命令查看更新情況,然后再決定是否合並。

右擊git工程文件a-->Team-->Synchronize Workspace:把本地代碼跟本地倉庫(Local Repository)上的代碼進行比對,是否有沖突。

右擊git工程文件a-->Team-->merge:把本地代碼合並到另一個分支上,點擊之后出現彈出框,讓你選擇另一分支。

右擊git工程文件a-->Team-->rebase:它比較高級,可以重寫所有的信息,不過據說也很危險。

右擊git工程文件a-->Team-->reset:放棄修改,同步運程倉庫(Remote Repository),回退到以前某個版本。

2,你提交文件了,發現該錯了,想撤回,怎么辦?

其中:Working Area對應eclipse中git插件的狀態是Unstaged Changes,Staging Area對應eclipse中git插件的狀態是Staged Changes,后面的兩個階段跟eclipse中git插件的狀態是一樣的意思。git -commit -a表示從workspace直接到local repository。git -checkout HEAD表示從local repository到workspace。git -checkout表示從Staging Area到workspace。git -diff HEAD表示從local repository到workspace。git -diff表示從Staging Area到workspace。

4個階段分為3個步驟:

第一步--》第二步:git add .把所有文件放入暫存區。

第二步--》第三步:git commit -m "comment",其中comment表示提交的注釋。

第三步--》第四步:git push把所有文件從本地倉庫推送進遠程倉庫。

當然,以上4個區,進入每一個區成功之后會產生一個狀態,再加上最初始的一個狀態,一共是5種狀態。以下我們把這5種狀態分別命名為:

未修改(Origin):從git服務器上下載下來的文件的狀態,原始狀態

已修改(Modified):Working Area

已暫存(Staged):Staging Area

已提交(Committed):Local Repository

已推送(Pushed):Remote Repository

撤銷修改的步驟:

1)檢查修改

了解了基本概念之后,我們來談一談犯錯誤之后如何撤銷的問題。首先,我們要了解如何檢查這3個步驟當中每一個步驟修改了什么,然后才好判斷有沒有修改成功。檢查修改的二級命令都相同,都是diff,只是參數有所不同。

已修改,未暫存

git diff

首先,我們來看一下,如果我們只是簡單地在瀏覽器里保存了一下文件,但是還沒有做git add .之前,即已修改(Modified):Working Area,我們如何檢查有哪些修改。我們先隨便拿一個文件來做一下實驗:

Git的4個階段的撤銷更改

 

我們在文件開頭的第2行胡亂加了4個數字1234,存盤,這時文件進入了已修改狀態,但是還沒有進入暫存區,我們運行git diff,結果如下:

diff --git a/index.md b/index.md

index 73ff1ba..1066758 100644

--- a/index.md

+++ b/index.md

@@ -1,5 +1,5 @@

---

-layout: main

+1234layout: main

color: black

---

git diff的結果告訴我們哪些文件已經做了哪些修改。

已暫存,未提交,即已暫存(Staged):Staging Area

git diff --cached

現在我們把修改放入暫存區看一下。先執行git add .,然后執行git diff,你會發現沒有任何結果:

Git的4個階段的撤銷更改

 

這說明git diff這個命令只檢查我們的工作區和暫存區之間的差異,如果我們想看到暫存區和本地倉庫之間的差異,就需要加一個參數git diff --cached:

diff --git a/index.md b/index.md

index 73ff1ba..1066758 100644

--- a/index.md

+++ b/index.md

@@ -1,5 +1,5 @@

---

-layout: main

+1234layout: main

color: black

---

這時候我們看到的差異是暫存區和本地倉庫之間的差異。

已提交,未推送,即已提交(Committed):Local Repository

git diff master origin/master

現在,我們把修改從暫存區提交到本地倉庫(Local Repository),再看一下差異。先執行git commit,然后再執行git diff --cached,沒有差異,執行git diff master origin/master,可以看到差異:

Git的4個階段的撤銷更改

 

在這里,master就是你的本地倉庫(Local Repository),而origin/master就是你的遠程倉庫(Remote Repository),master是主分支的意思,因為我們都在主分支上工作,所以這里兩邊都是master,而origin就代表遠程。

2,開始撤銷修改

了解清楚如何檢查各種修改之后,我們開始嘗試各種撤銷操作。

已修改,未暫存,即Working Area

如果我們只是在編輯器里修改了文件,但還沒有執行git add .,這時候我們的文件還在工作區,並沒有進入暫存區,我們可以用:

git checkout .

或者

git reset --hard

來進行撤銷操作。

Git的4個階段的撤銷更改

 

可以看到,在執行完git checkout .之后,修改已被撤銷,git diff沒有任何內容了。

一對反義詞 git add .的反義詞是git checkout .。做完修改之后,如果你想向前走一步,讓修改進入暫存區,就執行git add .,如果你想向后退一步,撤銷剛才的修改,就執行git checkout .。

已暫存,未提交,即Staging Area

你已經執行了git add .,但還沒有執行git commit -m "comment"。這時候你意識到了錯誤,想要撤銷,你可以執行:

git reset

git checkout .

或者

git reset --hard

git reset只是把修改退回到了git add .之前的狀態,也就是說文件本身還處於已修改未暫存狀態,你如果想退回未修改狀態,還需要執行git checkout .。

或許你已經注意到了,以上兩個步驟都可以用同一個命令git reset --hard來完成。是的,就是這個強大的命令,可以一步到位地把你的修改完全恢復到未修改的狀態。

已提交,未推送,即Local Repository

你的手太快,你既執行了git add .,又執行了git commit,這時候你的代碼已經進入了你的本地倉庫,然而你后悔了,怎么辦?不要着急,還有辦法。

git reset --hard origin/master

還是這個git reset --hard命令,只不過這次多了一個參數origin/master,正如我們上面講過的,origin/master代表遠程倉庫,既然你已經污染了你的本地倉庫,那么就從遠程倉庫把代碼取回來吧。

已推送,即Remote Repository

很不幸,你的手實在是太快了,你既git add了,又git commit了,並且還git push了,這時你的代碼已經進入遠程倉庫。如果你想恢復的話,還好,由於你的本地倉庫和遠程倉庫是等價的,你只需要先恢復本地倉庫,再強制push到遠程倉庫就好了:

git reset --hard HEAD

git push -f

Git的4個階段的撤銷更改

總結:

以上4種狀態的撤銷我們都用到了同一個命令git reset --hard,前2種狀態的用法甚至完全一樣,所以只要掌握了git reset --hard這個命令的用法,從此你再也不用擔心提交錯誤了。

本文再貢獻其他git命令:

git cherry-pick

git config

git init

git clone

git add

git commit

git diff

git reset

git status

git rm

git log

git show

git tag

git branch

git checkout

git merge

git remote

git push

git pull

git stash

所以,讓我們開始吧!

git cherry-pick

用法:git cherry-pick [-x] <commit id>,其中可以加-x參數,表示保留原提交者信息,如果不加參數,就不保留。

注意:當執行完 cherry-pick 以后,將會生成一個新的提交;這個新的提交的哈希值和原來的不同,但標識名 一樣;如果在cherry-pick 的過程中出現了沖突,找到該文件的最新一次提交記錄,即commid id,然后再執行上面的命令,或者也可以用git status來查看哪些文件出現沖突,修改好了之后,再用命令git add 文件名和git commit -c <新的commit號碼>。Git從1.7.2版本開始支持批量cherry-pick,就是一次可以cherry-pick一個區間的commit。命令格式如下:

git cherry-pick <start-commit-id>..<end-commit-id>
或
git cherry-pick <start-commit-id>^..<end-commit-id>

前者表示把<start-commit-id>到<end-commit-id>之間(左開右閉,不包含start-commit-id)的提交cherry-pick到當前分支;后者表示把<start-commit-id>到<end-commit-id>之間(閉區間,包含start-commit-id)的提交cherry-pick到當前分支。其中,<start-commit-id>到<end-commit-id>只需要commit-id的前6位即可,並且<start-commit-id>在時間上必須早於<end-commit-id>。注:以上合並,需要手動push代碼。

 

git config

用法:git config -global user.name“[name]”

用法:git config -global user.email“[email address]”

此命令分別設置要與提交一起使用的作者姓名和電子郵件地址。

前20大主要Git命令和示例

 

git init

用法: git init [repository name]

此命令用於啟動新存儲庫。

前20大主要Git命令和示例

 

git clone

用法: git clone [url]

此命令用於從現有URL獲取存儲庫。

前20大主要Git命令和示例

 

git add

用法: git add [file]

此命令將文件添加到暫存區域。

前20大主要Git命令和示例

 

用法: git add *

此命令將一個或多個添加到暫存區域。

前20大主要Git命令和示例

 

git commit

用法:git commit -m“[Type in the commit message]”

此命令在版本歷史記錄中永久記錄或快照文件。

前20大主要Git命令和示例

 

用法: git commit -a

此命令使用git add命令提交你添加的所有文件,並提交自此以后你更改的所有文件。

前20大主要Git命令和示例

 

git diff

用法:git diff

此命令顯示尚未暫存的文件差異。

前20大主要Git命令和示例

 

用法:git diff -staged

此命令顯示暫存區域中的文件與當前的最新版本之間的差異。

前20大主要Git命令和示例

 

用法:git diff [first branch] [second branch]

此命令顯示所提到的兩個分支之間的差異。

前20大主要Git命令和示例

 

git reset

用法:git reset [file]

此命令取消暫存文件,但它保留文件內容。

前20大主要Git命令和示例

 

用法:git reset [commit]

此命令撤消指定提交后的所有提交,並在本地保留更改。

前20大主要Git命令和示例

 

用法:git reset -hard [commit]

此命令會丟棄所有歷史記錄並返回指定的提交。

前20大主要Git命令和示例

 

git status

用法:git status

此命令列出了必須提交的所有文件,其中包括已修改(Unstaged Changes,即Working Area)的文件和沒有加入git追蹤的文件。

 

git rm

用法:git rm [file]

此命令從工作目錄中刪除該文件並分階段刪除。

前20大主要Git命令和示例

 

git log

用法:git log

此命令用於列出當前分支的版本歷史記錄。

前20大主要Git命令和示例

 

用法:git log -follow [file]

此命令列出文件的版本歷史記錄,包括文件的重命名。

前20大主要Git命令和示例

 

git show

用法:git show [commit]

此命令顯示指定提交的元數據和內容更改。

前20大主要Git命令和示例

 

git tag

用法:git tag[commitID]

此命令用於為指定的提交提供標記。

前20大主要Git命令和示例

 

git branch

用法:git branch

此命令列出當前存儲庫中的所有本地分支。

前20大主要Git命令和示例

 

用法:git branch [branch name]

此命令創建一個新分支。

前20大主要Git命令和示例

 

用法:git branch -d [branch name]

此命令刪除功能分支。

前20大主要Git命令和示例

 

git checkout

用法:git checkout [branch name]

此命令用於從一個分支切換到另一個分支。

前20大主要Git命令和示例

 

用法:git checkout -b [branch name]

此命令創建一個新分支並切換到它。

前20大主要Git命令和示例

 

git merge

用法:git merge [branch name]

此命令將指定分支的歷史記錄合並到當前分支中。

前20大主要Git命令和示例

 

git remote

用法:git remote add [variable name] [Remote Server Link]

此命令用於將本地存儲庫連接到遠程服務器。

前20大主要Git命令和示例

 

git push

用法:git push [variable name] master

此命令將master分支的已提交更改發送到遠程存儲庫。

前20大主要Git命令和示例

 

用法:git push [variable name] [branch]

此命令將分支提交發送到遠程存儲庫。

前20大主要Git命令和示例

 

用法:git push -all [variable name]

此命令將所有分支推送到遠程存儲庫。

前20大主要Git命令和示例

 

用法:git push [variable name]:[branch name]

此命令刪除遠程存儲庫上的分支。

前20大主要Git命令和示例

 

git pull

用法:git pull [Repository Link]

此命令將遠程服務器上的更改提取並合並到你的工作目錄。

前20大主要Git命令和示例

 

git stash

用法:git stash save

此命令臨時存儲所有已修改的跟蹤文件。

前20大主要Git命令和示例

 

用法:git stash pop

此命令可恢復最近隱藏的文件。

前20大主要Git命令和示例

 

用法:git stash list

此命令列出所有存儲的更改集。

前20大主要Git命令和示例

 

用法:git stash drop

此命令會丟棄最近隱藏的變更集。

前20大主要Git命令和示例

 

本文轉自:https://www.toutiao.com/a6586232599520215556/?tt_from=mobile_qq&utm_campaign=client_share&timestamp=1533516837&app=news_article&utm_source=mobile_qq&iid=39062783162&utm_medium=toutiao_android&group_id=6586232599520215556

https://www.toutiao.com/a6581719073296482823/?tt_from=mobile_qq&utm_campaign=client_share&timestamp=1532498727&app=news_article&utm_source=mobile_qq&iid=38958718850&utm_medium=toutiao_android

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM