初始化一個(gè)倉庫:
git init
git只能記錄文本文件的變化,不能記錄圖片,視頻 等二進(jìn)制文件的內(nèi)容的變化;要隨時(shí)掌握工作區(qū)的狀態(tài)
git status -s
查看文件具體修改內(nèi)容
git diff A.txt
提交修改的文件
git commit -a -m "Changed some files"
查看歷史版本記錄
git log
本地還原到版本庫中某個(gè)版本
git reset --hard HEAD^
HEAD為當(dāng)前版本;
上一版本是HEAD^
上上一版本是HEAD^^
往上100個(gè)版本寫成:HEAD~100
回滾到未來某個(gè)版本:
git reset --hard 3182992
3182992為commit id 縮寫
尋找歷史某個(gè)版本的commit id :
git reflog
HEAD指向的版本就是當(dāng)前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個(gè)版本。
要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個(gè)版本。git diff HEAD -- readme.txt
命令可以查看工作區(qū)和版本庫里面最新版本的區(qū)別;git status 看提示,
丟掉工作區(qū)的內(nèi)容,還沒add 過
git checkout -- read.txt
-- 很重要,不能省略;
add 過:
git reset HEAD read.txt
前提是沒有推送到遠(yuǎn)程庫。
場景1:當(dāng)你改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄工作區(qū)的修改時(shí),用命令git checkout -- file。
場景2:當(dāng)你不但改亂了工作區(qū)某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí),想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。
一步到位恢復(fù):
git checkout HEAD^ <file>
刪除文件:
rm file 可以用git checkout -- file 恢復(fù)
git rm filename git commit -m"remove file"
當(dāng)執(zhí)行 "git rm --cached <file>" 命令時(shí),會直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變。連接遠(yuǎn)程倉庫:
ls .ssh
ssh-keygen -t rsa -C "wangchao0802@163.com"
本地和遠(yuǎn)程關(guān)聯(lián)起來:
git remote add origin https://git.oschina.net/chaoge0802/learnGit
關(guān)聯(lián)后第一次Push :
git push -u origin master
origin 遠(yuǎn)程地址
master 本地分支;
Git鼓勵大量使用分支:
查看分支:git branch
創(chuàng)建分支:git branch <name>
切換分支:git checkout <name>
創(chuàng)建+切換分支:git checkout -b <name>
合并某分支到當(dāng)前分支:git merge <name>
刪除分支:git branch -d <name>
刪除遠(yuǎn)程分支git push origin --delete <branchName>
查看合并情況:
git log --graph --pretty=oneline --abbrev-commit
git merge --no-ff -m "merge with no-ff" dev
如果要丟棄一個(gè)沒有被合并過的分支,可以通過git branch -D <name>
強(qiáng)行刪除。-
修復(fù)bug時(shí),我們會通過創(chuàng)建新的bug分支進(jìn)行修復(fù),然后合并,最后刪除;
當(dāng)手頭工作沒有完成時(shí),先把工作現(xiàn)場
git stash
一下,然后去修復(fù)bug,修復(fù)后,再git stash pop
,回到工作現(xiàn)場。
git stash list
查看內(nèi)容
Git把stash內(nèi)容存在某個(gè)地方了,但是需要恢復(fù) 一下,有兩個(gè)辦法:
一是用git stash apply
恢復(fù),但是恢復(fù)后, stash內(nèi)容并不刪除,你需要用git stash drop
來刪除;
另一種方式是用git stash pop
,恢復(fù)的同時(shí)把stash內(nèi)容也刪了
- 查看遠(yuǎn)程庫;
git remote
git remote -v
推送:
git push origin master
master 本地分支;
要推送其他分支:這樣把dev分支推送到遠(yuǎn)程
git push origin dev
git branch --set-upstream dev origin/dev
多人協(xié)作的工作模式通常是這樣:
首先,可以試圖用git push origin branch-name
推送自己的修改;
如果推送失敗,則因?yàn)檫h(yuǎn)程分支比你的本地更新,需要先用git pull
試圖合并;
如果合并有沖突,則解決沖突,并在本地提交;
沒有沖突或者解決掉沖突后,再用git push origin branch-name
推送就能成功!
如果git pull提示“no tracking information”,則說明本地分支和遠(yuǎn)程分支的鏈接關(guān)系沒有創(chuàng)建,用命令git branch --set-upstream branch-name origin/branch-name
。
查看遠(yuǎn)程庫信息,使用git remote -v
;
本地新建的分支如果不推送到遠(yuǎn)程,對其他人就是不可見的;
從本地推送分支,使用git push origin branch-name
,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交;
在本地創(chuàng)建和遠(yuǎn)程分支對應(yīng)的分支,使用git checkout -b branch-name origin/branch-name
,本地和遠(yuǎn)程分支的名稱最好一致;
建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián),使用git branch --set-upstream-to origin/branch-name branch-name
;
從遠(yuǎn)程抓取分支,使用git pull,如果有沖突,要先處理沖突。
tag
命令git tag <name>用于新建一個(gè)標(biāo)簽,默認(rèn)為HEAD,也可以指定一個(gè)commit id;
git tag -a <tagname> -m "blablabla..."
可以指定標(biāo)簽信息;
git tag -s <tagname> -m "blablabla..."可以用PGP簽名標(biāo)簽;
命令git tag
可以查看所有標(biāo)簽。
git show <tagname>
查看某個(gè)tag詳情
刪除標(biāo)簽:
git tag -d v0.1
推送標(biāo)簽到遠(yuǎn)程:
git push origin v1.0
推送所有標(biāo)簽
git push origin --tags
命令git push origin <tagname>
可以推送一個(gè)本地標(biāo)簽;
命令git push origin --tags
可以推送全部未推送過的本地標(biāo)簽;
命令git tag -d <tagname>
可以刪除一個(gè)本地標(biāo)簽;
命令git push origin :refs/tags/<tagname>
可以刪除一個(gè)遠(yuǎn)程標(biāo)簽忽略文件配置:
忽略某些文件時(shí),需要編寫.gitignore;
.gitignore文件本身要放到版本庫里,并且可以對.gitignore做版本管理
不需要從頭寫.gitignore
文件,GitHub已經(jīng)為我們準(zhǔn)備了各種配置文件,只需要組合一下就可以使用了。所有配置文件可以直接在線瀏覽:https://github.com/github/gitignore用戶信息:
- /etc/gitconfig
文件:系統(tǒng)中對所有用戶都普遍適用的配置。若使用 git config時(shí)用 --system 選項(xiàng),讀寫的就是這個(gè)文件。 - ~/.gitconfig
文件:用戶目錄下的配置文件只適用于該用戶。 若使用 git config 時(shí)用 --global 選項(xiàng),讀寫的就是這個(gè)文件。 - 當(dāng)前項(xiàng)目的 Git 目錄中的配置文件(也就是工作目錄中的 .git/config文件):這里的配置僅僅針對當(dāng)前項(xiàng)目有效。
- 每一個(gè)級別的配置都會覆蓋上層的相同配置,所以 .git/config里的配置會覆蓋 /etc/gitconfi 中的同名變量。
在工程中配置 .git/config
[user]
name = wangchao0802
email = wangchao0802@qq.com
基礎(chǔ)教程
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
http://www.cnblogs.com/flying_bat/p/3408634.html
git分支管理策略
http://www.ruanyifeng.com/blog/2012/07/git.html
learn:http://www.runoob.com/git/git-tutorial.html
Git 快速入門
本站也提供來Git快速入門版本,你可以點(diǎn)擊 Git簡明指南 查看。
入門后建議通過本站詳細(xì)學(xué)習(xí) Git 教程。
Git 完整命令手冊地址:http://git-scm.com/docs
PDF 版命令手冊:
http://www.w3cschool.cc/manual/github-git-cheat-sheet.pdf
相關(guān)文章推薦
1、Git 五分鐘教程
2、Git GUI使用方法
3、Github 簡明教程
4、互聯(lián)網(wǎng)組織的未來:剖析GitHub員工的任性之源