參考資料:廖雪峰中文網(wǎng)站
學(xué)習(xí)順序:
git的基本簡(jiǎn)介就不寫啦,從正文開始。
- 創(chuàng)建版本庫
初始化git倉庫,使用git init命令。
添加文件到git倉庫,分兩步:
第一步:git add <file>,注意可以添加多個(gè)文件
第二步:git commit -m "注釋文字" ,完成。 - 時(shí)光穿梭機(jī)
git status 查看工作區(qū)的狀態(tài)
若git status告訴你文件已被修改,使用git diff查看修改內(nèi)容
- 版本回退
HEAD指向的版本就是當(dāng)前的版本,所謂的版本回退,原 理就是使HEAD指向以前的版本 git reset --hard commit_id.
穿梭前,用git log可以查看提交的歷史,以便確定要回退到哪個(gè)版本。
要重返未來,用git reflog查看命令歷史,以便確定要回到未來哪個(gè)版本
為了簡(jiǎn)約,可以使用 git log --pretty=oneline。 -
工作區(qū)和暫存區(qū)
工作區(qū):在電腦里能看到的目錄,比如learngit文件夾。
版本庫(Repository)
工作區(qū)和版本庫圖片 - 撤銷修改
場(chǎng)景一:當(dāng)改亂了工作區(qū)某個(gè)文件的內(nèi)容,想直接丟棄 工作區(qū)的修改時(shí),用命令行 git checkout -- file.
場(chǎng)景二:當(dāng)改亂了工作區(qū)的某個(gè)文件的內(nèi)容,還添加到了暫存區(qū)時(shí),想丟棄修改,使用命令 git reset HEAD file, 就回到了場(chǎng)景1,第二步按場(chǎng)景1操作。
場(chǎng)景三:已經(jīng)提交了不合適的修改到版本庫時(shí),想要撤銷,參考上面版本回退。若推送到遠(yuǎn)程庫,就木有辦法了。 - 刪除文件
git rm用于刪除一個(gè)文件。如果一個(gè)文件已經(jīng)被提交到版本庫,那就不用擔(dān)心誤刪,但是要小心,你只能恢復(fù)文件到最新版本,你會(huì)丟失最近提交后你修改的內(nèi)容。
- 遠(yuǎn)程倉庫
- 添加遠(yuǎn)程庫
要關(guān)聯(lián)一個(gè)遠(yuǎn)程庫,使用git remote add origin git@server-name:path/repo-name.git;
關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有內(nèi)容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改; - 從遠(yuǎn)程庫克隆
要克隆一個(gè)倉庫,首先必須知道倉庫的地址,然后使用git clone命令克隆。
git支持多種協(xié)議,包括https,但通過ssh支持的原生git協(xié)議速度更快。
- 分支管理
- 創(chuàng)建與合并分支
查看分支: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> - 解決沖突
當(dāng)git無法自動(dòng)合并分支時(shí),就必須首先解決沖突(手動(dòng)選擇)。解決沖突后,再提交,合并完成。
用git log --graph命令可以看到分支合并圖。 - 多人協(xié)作
查看遠(yuǎn)程庫信息,使用git remote -v;
本地新建的分支如果不推送到遠(yuǎn)程,對(duì)其他人就是不可見的;
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠(yuǎn)程的新提交;
從本地創(chuàng)建和遠(yuǎn)程分支對(duì)應(yīng)的分支,使用git checkout -b branch -name origin/branch-name,本地和遠(yuǎn)程分支的名稱最好一致;
建立本地分支和遠(yuǎn)程分支的關(guān)聯(lián),使用git branch --set-upstream branch-name origin/branch-name;
從遠(yuǎn)程抓取分支,使用git pull,如果有沖突,要先處理沖突。
PS:今天是還學(xué)會(huì)了使用了markdown了呢?。?/em>
