因為git這個話題比較大,時間有限,所以本篇文章不會一次性寫完,會定期不斷更新。
在未進行git push
前的所有操作,都是在本地倉庫中執行的。我們暫且將本地倉庫的**還原操作叫做撤銷,已進行git push
,即已推送到遠端倉庫中。我們將已被提交到遠端倉庫的**還原操作叫做回滾。注意:對遠端倉庫做回滾操作是有風險的,需提前做好備份和通知其他團隊成員!。不要通過rebase對任何已經提交到公共倉庫中的commit進行修改。
工作目錄:你的檔案系統中可見的檔案,即使用git add
之前的檔案
暫存區:在下一次commit後即將寫入倉庫的變更的索引,即對應git add
之後,git commit
之前的檔案
倉庫:儲存檔案並記錄了檔案的每次變更
對於不同地方,需要使用不同的命令,將工作恢復到你想要的狀態
工作目錄的檔案
git checkout --
捨棄工作目錄中乙個檔案的修改,對git add
和git commit
之後的沒有影響
git checkout -- .
捨棄工作目錄中全部檔案的修改(新增的檔案會被刪除、刪除的檔案會恢復回來、修改的檔案會回去)
檔案在暫存區
git reset head
撤銷在暫存區的檔案
或者直接git reset
git reset head .
撤銷在暫存區的所有檔案
這些命令僅改變暫存區,如果還想撤銷檔案在本地的修改,還需要用git checkout
git commit到了本地分支、但沒有git push到遠端
git log
得到你需要回退一次提交的commit id
git reset --hard
回到其中你想要的某個版
git reset --hard head
回到最新的一次提交
git reset head
此時**保留,回到 git add 之前
如修改的檔案已被git commit,但想再次修改不再產生新的commit,可以git add
,然後git commit --amend -m "message"
git rebase -i
其中-i
的意思是--interactive
,即彈出互動式的介面讓使用者編輯完成合併操作,則指定了乙個編輯區間 (兩個commit id),如果不指定
,則該區間的終點預設是當前分支head所指向的commit (注:該區間指定的是乙個前開後閉的區間)。如果用
git rebase -i ^
,需要注意最後的^號,意思是commit id的前一次提交。
想要刪除某個commit,操作:在編輯框中刪除相關commit,用pick
,然後儲存退出就刪除了摸個commit。squash
會合併到之前的commit
已經git push把修改推送到遠端倉庫
(1)通過git reset是直接刪除指定的commit
git log
得到你需要回退一次提交的commit id
git reset --hard
git push origin head --force
強制推送一次,之前錯誤的推送就從遠端倉庫刪除
(2)通過git revert是用一次新的commit來回滾之前的commit
git log
得到你需要回退一次提交的commit id
git revert
撤銷指定的版本,撤銷也會作為一次提交進行儲存
git push origin master
提送到遠端
git revert 和 git reset的區別在untracked files裡面,如果是新增乙個新的資料夾的話,裡面的具體細節是不會顯示出來的,如果想單獨
git add
該資料夾的乙個檔案的話,需要用git status -u
來檢視
git 刪除遠端分支
git 建立本地分支,git checkout -b
檢視本地分支狀態,git branch
本地分支push遠端分支,git push origin :
檢視遠端分支,git branch -a
專案過大時,或者歷史的一些commit過大時,直接clone乙個專案會很慢也很佔地方。可以在git clone時加上--depth=1
解決。depth用於指定轉殖深度,為1即表示只轉殖最近一次commit。
但會產生另外乙個問題,這個只會把預設分支clone下來,其他遠端分支並不在本地,所以這種情況下,需要用如下方法拉取其他分支:
git 個人使用總結
git add a or git add a or git add it means to add all files which are unstaged 先cd到工程資料夾下!git init 即把該 資料夾變成了乙個倉庫 git add 新增進去!git status 當前倉庫的狀態 git ...
Git使用個人總結
1.eclipse git外掛程式配置秘鑰.解決方式 window preference general network connection ssh2 配置已有ppk 2.gitignore檔案中新增檔案路徑即可忽略,提交時不再出現已配置的路徑檔案 3.衝突時,先編輯衝突,再commit push...
git使用個人總結
git init建立版本庫 1.基礎命令 git add把檔案新增進去,將檔案修改新增到暫存區 git commit git commit m 提交描述 提交更改,將暫存區所有內容提交到當前分支 git status時刻掌握倉庫當前的狀態 git diff檢視different gitdiff he...