git add 文件時(shí)葵擎,出現(xiàn)報(bào)錯(cuò)
LF will be replaced by CRLF in 文件夾
這是由于windows中的換行符為CRLF,而linux中為L(zhǎng)F
所以需要首先,刪除git:
$ rm -rf .git //刪除.git
$ git config --global core.autocrlf false//禁用自動(dòng)轉(zhuǎn)換
然后重新執(zhí)行
$ git init
$ git add 文件
第一步是
$ git add
——————add每次一個(gè)
第二步是
$ git commit
—————commit一次可以提交很多文件
git commit
一般跟一個(gè)-m"說(shuō)明在此"
$ git status
查看狀態(tài)
$ git diff
查看不同
$ git diff HEAD -- 文件
可以查看工作區(qū)和版本庫(kù)的最新版本的區(qū)別
$ git log
查看日志------從最近到最遠(yuǎn)-----可以加上參數(shù)--pretty=oneline
(漂亮的一行展示)
日志內(nèi)可以看到commit id(版本號(hào))
重點(diǎn)來(lái)啦
HEAD表示當(dāng)前版本
HEAD^上一個(gè)版本
HEAD^^上上個(gè)版本
HEAD~100——上100個(gè)版本
版本回退:$ git reset --hard HEAD^
$git reset --hard 3553634(某個(gè)版本號(hào))
$ git reflog 展示了commit id
第一次修改-->git add -->第二次修改-->git commit
第二次的修改沒(méi)體現(xiàn)在commit中
第一次修改-->git add -->第二次修改-->git add-->git commit
第二次的修改體現(xiàn)了
$ git checkout --filename
注意刚梭,checkout還有別的功能
丟棄工作區(qū)的修改须妻,2種情況:
1、修改后還未放到暫存區(qū),撤銷,工作區(qū)變?yōu)楹桶姹編?kù)一模一樣
2、修改添加至?xí)捍鎱^(qū)后由桌,又修改,撤銷邮丰,則目前和暫存區(qū)一樣
總之行您,是回到最近一次 git commit ####或者####git add 的狀態(tài)
$ git reset HEAD filename
(HEAD表示最新的版本)
撤銷暫存區(qū)的修改
接下來(lái)再加一步, $ git checkout -- filename 清理工作區(qū)
刪除操作 $ rm filename
------刪除的是工作區(qū)
A/ $ git rm filename
-------將刪除操作提交至?xí)捍鎱^(qū)
$ git commit
-----提交修改柠座,此文件版本庫(kù)內(nèi)頁(yè)被刪除了
B/$ git checkout -- filename
把誤刪的文件恢復(fù)到最新版本(還原操作)
本地庫(kù)鏈接至遠(yuǎn)程倉(cāng)庫(kù):
- github上創(chuàng)建新項(xiàng)目
- 在本地倉(cāng)庫(kù)運(yùn)行命令進(jìn)行關(guān)聯(lián)
$ git remote add origin git@github.com:名字/項(xiàng)目名字.git
3.把本地內(nèi)容推送上去
$ git push -u origin master
此處遇到一個(gè)問(wèn)題邑雅,由于我新項(xiàng)目創(chuàng)建了readme,然而本地沒(méi)有妈经,git push失敗了淮野,加一個(gè)命令:
git pull --rebase origin master
把遠(yuǎn)程倉(cāng)庫(kù)的readme加載到本地,然后就可以了
4 . 以后有修改吹泡,就可以簡(jiǎn)化提交
$ git push origin master
克隆遠(yuǎn)程庫(kù)
$ git clone git@github.com:名字/項(xiàng)目名字.git
地址還有http格式: http://github.com/名字/項(xiàng)目.git
創(chuàng)建與合并分支
git checkout -b dev ——新建分支dev并切換到該分支
git branch dev——新建分支dev
git checkout dev——切換到該分支
git branch——查看分支
在該分支上工作骤星,git add --git commit
接下來(lái)切換到主干, $ git checkout master
把分支工作合并到主干 $ git merge dev
刪除分支 $ git branch -d dev
刪除一個(gè)沒(méi)有被合并過(guò)的分支 $ git branch -D dev
有沖突時(shí)git log --graph可以看到分支合并圖
git log 查看日志信息后爆哑,按 q退出
合并分支時(shí)洞难,禁用Fast forword可以看出分支信息
git merge --no-ff dev
git stash 把當(dāng)前工作現(xiàn)場(chǎng) “儲(chǔ)藏” 起來(lái)
git stash list 查看儲(chǔ)藏的內(nèi)容--git stash apply stash@{0}
git stash apply 恢復(fù),git stash drop扔掉stash內(nèi)容
或者揭朝,git stash pop 恢復(fù)后同時(shí)刪除stash
查看遠(yuǎn)程倉(cāng)庫(kù)信息 git remote / git remote -v(更詳細(xì))
推送到遠(yuǎn)程master ------git push origin master
推送到遠(yuǎn)程dev ------git push origin dev
另一個(gè)小伙伴队贱,首次操作時(shí):
- git clone git@github.com:名字/項(xiàng)目.git
- 查看本地時(shí)只有master分支 因此要?jiǎng)?chuàng)建遠(yuǎn)程origin的dev分支到本地
git chckout -b dev origin/dev
小伙伴提交了更新的dev后,我本地推送上去會(huì)失敗潭袱,因?yàn)檫M(jìn)度落后了
因此柱嫌,先git pull 把最新進(jìn)度從origin/dev上抓下來(lái),
但是要指定本地dev與遠(yuǎn)程origin/dev的鏈接屯换,設(shè)置:
git branch --set-upstream-to=origin/dev dev
然后在本地合并编丘,解決沖突,再推送git pull origin dev
可能會(huì)遇到奇怪界面:請(qǐng)輸入提交消息來(lái)解釋為什么這種提交是必要的什么的
解決:按esc ----- 輸入 :wq
接下來(lái)就可以 git pull origin dev了
標(biāo)簽
git tag v1.0
git tag v0.9 +commitid 打在某個(gè)版本上
git tag 查看標(biāo)簽
標(biāo)簽按字母排序彤悔,查看標(biāo)簽信息:git show v0.9
-a 指定標(biāo)簽名 -m指定說(shuō)明文字
git tag -a v1.0 -m"說(shuō)明" commitid
git show v1.0
刪除標(biāo)簽 git tag -d v1.0
推送標(biāo)簽到遠(yuǎn)程: git push origin v1.0
一次推送所有標(biāo)簽 git push origin --tags
刪除遠(yuǎn)程標(biāo)簽 :先刪除本地:git tag -d v1.0 再刪遠(yuǎn)程 : git push origin :refs/tags/v1.0
參與開(kāi)源項(xiàng)目
在別人的項(xiàng)目上嘉抓,fork一個(gè)到自己的賬號(hào)
然后在本地 git clone +地址
可以pull request 給官方倉(cāng)庫(kù)貢獻(xiàn)代碼
配置別名
git config --global alias.st status 用st代表status
co---checkout
ci----commit
br-----branch
last----log -1
lg------log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"