參考廖雪峰大佬的git教程,所作總結。在「刪除檔案」一節有所修改,經過測試,最後總結。
初始化乙個git倉庫,使用git init
命令。
新增檔案到git倉庫,分兩步:
使用命令git add
,注意,可反覆多次使用,新增多個檔案;git add .
將檔案全部新增到暫存區
使用命令git commit -m
,完成。
要隨時掌握工作區的狀態,使用git status
命令。
如果git status告訴你有檔案被修改過,用git diff
可以檢視修改內容。$ git diff head -- readme.txt
工作區、版本庫、暫存區的理解,請看另一篇博文:
現在總結一下:
head指向的版本就是當前版本,因此,git允許我們在版本的歷史之間穿梭,
使用命令git reset --hard commit_id
。(commit_id是版本號)
穿梭前,用git log
可以檢視提交歷史,以便確定要回退到哪個版本。
git log
命令顯示從最近到最遠的提交日誌,如果嫌輸出資訊太多,看得眼花繚亂的,可以試試加上–pretty=oneline引數:$ git log --pretty=oneline
要重返未來,用git reflog
檢視命令歷史,以便確定要回到未來的哪個版本。
你可以繼續git add
再git commit
,也可以別著急提交第一次修改,先git add第二次修改,再git commit,就相當於把兩次修改合併後一塊提交了:
第一次修改 -> git add -> 第二次修改 -> git add -> git commit -m "…"
好,現在,把第二次修改提交了,然後開始小結。
每次修改,如果不用git add到暫存區,那就不會加入到commit中。
手動修改工作區之後,發現寫錯。還未add新增修改。
使用命令:git checkout -- file
可以丟棄工作區的修改:
$ git checkout -- readme.txt
總之,就是讓這個檔案回到最近一次git commit
或git add
時的狀態。
手動寫錯工作區某個檔案的內容,並add到暫存區了,還沒有執行commit命令。
用命令git reset head
撤銷(unstage)暫存區的修改,再使用$ git checkout -- readme.txt
丟棄工作區的修改,ok了,已撤銷修改。
已經commit提交了不合適的修改到版本庫時,想要撤銷本次提交,不過前提是沒有推送到遠端庫。git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id
進行版本回退,回退之前可以使用git log命令顯示從最近到最遠的提交日誌 。 git log --pretty=oneline 顯示在一行。
commit之後可以再次add一次,再commit -amend 覆蓋之前的提交。或者參考上面第四節,先add再commit
git add git commit -amend
如果是手動刪除工作區的檔案,刪錯了,因為版本庫里還有呢,所以可以很輕鬆地把誤刪的檔案恢復到最新版本:$ git checkout -- test.txt
(git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。經我測試,這個方法只可以用於手動刪除了工作區的檔案,如果是用git rm file
命令刪除的這種方式恢復不了)
$ git rm flie
只刪工作區的檔案,版本庫未刪。
不該add到暫存區的檔案,卻add並commit了,使用git rm --cache
進行刪除。
已經遠端的的專案檔案.
要關聯乙個遠端庫,使用命令git remote add origin git@server-name:path/repo-name.gi
t;
$ git remote add origin [email protected]:chenzhengwin/倉庫名.git
關聯後,使用命令git push -u origin master
第一次推送master分支的所有內容;
此後,每次本地提交後,只要有必要,就可以使用命令git push origin master
推送最新修改;
分布式版本系統的最大好處之一是在本地工作完全不需要考慮遠端庫的存在,也就是有沒有聯網都可以正常工作,而svn在沒有聯網的時候是拒絕幹活的!當有網路的時候,再把本地提交推送一下就完成了同步,真是太方便了
要轉殖乙個倉庫,首先必須知道倉庫的位址,然後使用git clone 命令轉殖。git clone +位址
git支援多種協議,包括https,但通過ssh支援的原生git協議速度最快。
git鼓勵大量使用分支:
檢視遠端倉庫位置:git remote -v
檢視本地分支:git branch
帶有「*」號的表示當前分支
檢視遠端分支的情況:git branch -a
建立分支:git branch
切換分支:git checkout
建立+切換分支:git checkout -b
切換遠端分支到本地, 本地分支名稱叫v1 :git checkout -b v1 origin/v1
合併某分支到當前分支:git merge
刪除分支:git branch -d
強制將master分支指向c1:git branch -f master c1
將head向上移動一級:git checkout head^
將head向上移動兩級:git checkout head^^
將head向上移動**:git checkout head~3
將其他分支的提交commit
合併(複製)到當前分支:git cherry-pick
提交節點遷移:git rebase -i head~4
將其他分支彙總到master分支上:git rebase
用帶引數的git log也可以看到分支的合併情況:git log --graph --pretty=oneline --abbrev-commit
分支樹:git log --all --graph --decorate --oneline
$ where git
c:\program files\git\mingw64\bin\git.exe
c:\program files\git\cmd\git.exe
git分支常用命令
1 建立新的分支到遠端 git checkout b fenzhi01 建立新的分支交fenzhi01 git add 新增所有檔案到該分支 git commit m 備註 提交 git push origin fenzhi01 推送到fenzhi01分支,此時在碼雲上可以看到有了該分支 2 拉取遠...
git 分支常用命令
常用命令 轉殖遠端倉庫下的dev分支 git clone b dev 將本地master分支修改推送到遠端dev分支 如果遠端倉庫沒有dev分支會自動新建 git push origin master dev git branch 檢視分支列表 git checkout b newbranch 新建...
git常用命令總結詳解git分支(二)
git checkout b dev git checkout命令加上 b引數表示建立並切換,相當於以下兩條命令 git branch dev 建立分支 git checkout dev 切換分支 git branch git branch命令會列出所有分支,當前分支前面會標乙個 號。必須先切換到m...