創(chuàng)建版本庫
mkdir res-name
cd res-name
git init
查看工作區(qū)狀態(tài)
git status
如果git status告訴你又文件被修改,查看修改內(nèi)容
git diff file-name
版本穿梭
- HEAD指向的版本是當(dāng)前版本,HEAD^是上一個 HEAD^^是上兩個
- git reset –hard commit_id
- 使用git log可以查看提交歷史矾睦,以便確定要回退到哪個版本
- 如果要重返未來勾栗,使用git reflog查看歷史命令苍苞,可以找到你想回到的commit_id
工作區(qū)和暫存區(qū)
- 當(dāng)前的目錄就是工作區(qū)
- git add 把工作區(qū)的內(nèi)容添加到暫存區(qū)
- git commit 把暫存區(qū)的內(nèi)容添加的版本庫里面狰晚,暫存區(qū)清空筒饰。
管理修改
- git add 然后再git commit
- git add path 把path中的內(nèi)容都添加到暫存區(qū)。
- 通過.gitignore文件來忽略特殊的文件
撤銷修改
- 放棄工作區(qū)的某個文件的修改用git checkout –- file-name
- 把暫存區(qū)的內(nèi)容放回工作區(qū)git reset HEAD file
- 已經(jīng)提交到版本庫壁晒,版本回退
刪除文件
- 如果你rm了file1瓷们,那么你有兩個選擇
- 刪除版本庫中file1,使用git rm file1
- 誤刪了從版本庫中恢復(fù)回來秒咐,git checkout -– file1
遠(yuǎn)程倉庫
- 先創(chuàng)建一個本地的换棚,然后git remote add …
以github為例:
git remote add origin git@github.com:cuihz/learngit.git
其中origin是遠(yuǎn)程倉庫在本地的名字。 - git clone
以github為例:
git clone https://github.com/cuihz/learngit.git
clone下來默認(rèn)的遠(yuǎn)程倉庫在本地的名稱就是origin
分支管理
查看分支: git branch
創(chuàng)建分支:git branch branch-name
切換分支:git checkout branch-name
創(chuàng)建+切換分支:git checkout -b branch-name
合并某個分支到當(dāng)前分支:git merge branch-name
刪除分支:git branch -d branch-name
沖突處理
當(dāng)執(zhí)行g(shù)it merge的時候反镇,git會進(jìn)行快速合并,但是當(dāng)兩個文件有沖突的時候就無法進(jìn)行快速合并娘汞。注意git merge是把指定的分支中的內(nèi)容合并到當(dāng)前這條分支上歹茶,對指定分支的內(nèi)容沒有任何影響。有時在合并的過程中會產(chǎn)生沖突你弦,快速合并無法進(jìn)行惊豺。這時候需要你介入去解決沖突。解決沖突要修改這條分支上的沖突文件禽作,在git標(biāo)注的地方修改成你想要合并成的樣子尸昧。就是把<<<<<<< 和 >>>>>>中的東西刪除,然后改成你要加的旷偿。比如你可以把 a abc 和 abc d合并成 a abc d這個也是可以的烹俗。修改后git add file 然后git commit file就可以了。處理過的沖突再合并時候可以直接快速合并萍程。
使用普通合并
git merge –no-ff -m "merge with no-ff" dev幢妄。
使用普通合并能夠保存分支歷史,可以使用git log去查看茫负。而快速合并是看不出來曾經(jīng)做過合并的蕉鸳。這個更推薦點吧感覺。
Bug分支
當(dāng)手頭工作沒有做完并且還不想提交時候忍法,先git stash一下潮尝,然后去切到主分支,新建個bug分支修復(fù)bug饿序,把bug分支合并到主分支勉失。然后再git stash pop回到工作現(xiàn)場。
feature分支
正常的為軟件添加一個新功能就是建立一個feature分支嗤堰,然后開發(fā)戴质,然后合并到master度宦。但是假如開發(fā)到一半決定取消這個功能了,這時候就需要強(qiáng)行的刪掉這個分支告匠,使用git branch -D branch-name
多人協(xié)作模式
- 首先戈抄,可以試圖用git push origin branch-name
- 如果推送失敗,則因為遠(yuǎn)程分支比你的本地更新后专,則需要先用git pull試圖合并划鸽。
- 如果合并有沖突,則解決沖突并在本地提交
- 如果沒有沖突或者解決掉沖突后戚哎,再用git push origin branch-name推送就能成功
- 常用命令
-如果git pull提示 “no tracking information” 則需要用
git branch –set-upstream branch-nameorigin/branch-name
建立本地分支與遠(yuǎn)程分支的關(guān)聯(lián)裸诽。
-查看遠(yuǎn)程庫信息,使用git remote -v
-從本地推送分支型凳,使用
git push origin branch-name
如果推送失敗丈冬,先用git pull抓取遠(yuǎn)程的新提交
-在本地創(chuàng)建和遠(yuǎn)程分支對應(yīng)的分支,使用
git checkout -b branch-name orgin/branch-name
-建立本地分支與遠(yuǎn)程分支的關(guān)聯(lián)甘畅,使用
git branch –set-upstream branch-name orgin/branch-name
-從遠(yuǎn)程抓取分支埂蕊,使用git pull,使用git pull疏唾,如果有沖突蓄氧,就先處理沖突。