git 學(xué)習(xí)

  1. 初始化一個(gè)倉庫:
    git init
    git只能記錄文本文件的變化,不能記錄圖片,視頻 等二進(jìn)制文件的內(nèi)容的變化;

  2. 要隨時(shí)掌握工作區(qū)的狀態(tài)
    git status -s

  3. 查看文件具體修改內(nèi)容
    git diff A.txt
    提交修改的文件
    git commit -a -m "Changed some files"

  4. 查看歷史版本記錄
    git log

  5. 本地還原到版本庫中某個(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è)版本。

  6. git diff HEAD -- readme.txt
    命令可以查看工作區(qū)和版本庫里面最新版本的區(qū)別;

  7. 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>

  1. 刪除文件:
    rm file 可以用git checkout -- file 恢復(fù)
    git rm filename git commit -m"remove file"
    當(dāng)執(zhí)行 "git rm --cached <file>" 命令時(shí),會直接從暫存區(qū)刪除文件,工作區(qū)則不做出改變。

  2. 連接遠(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 本地分支;

  1. 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)行刪除。

  2. 修復(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)容也刪了

  1. 查看遠(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,如果有沖突,要先處理沖突。

  1. 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)簽

  2. 忽略文件配置:
    忽略某些文件時(shí),需要編寫.gitignore;
    .gitignore文件本身要放到版本庫里,并且可以對.gitignore做版本管理
    不需要從頭寫.gitignore
    文件,GitHub已經(jīng)為我們準(zhǔn)備了各種配置文件,只需要組合一下就可以使用了。所有配置文件可以直接在線瀏覽:https://github.com/github/gitignore

  3. 用戶信息:

  • /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員工的任性之源

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容