**
#設(shè)置全局的配置文件糖荒,放在當(dāng)前用戶主目錄下(Administrator)的.gitconfig文件中杉辙。用戶名和郵箱,別名
$ git config --global user.email "252532242@qq.com"
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"```
`$ git config http.postBuffer 24288000` // 需要clone的目標(biāo)太大報(bào)錯(cuò)捶朵,配置這個(gè)
\# 設(shè)置當(dāng)前文件配置文件蜘矢,.git/config文件中狂男。別名
`$ git config alias.st status`
***
*<!-- 初始化為GIT倉(cāng)庫(kù) -->*
`$ git init` ? ? ? ?// 初始化git倉(cāng)庫(kù)
***
*<!-- 將數(shù)據(jù)提交到暫存區(qū) -->*
`$ git add <fileName1> <fileName2>` ? ? ? ?// 添加文件
`$ git add . ` ? ? ? ?// 添加所以的文件、文件夾
***
*<!-- 將數(shù)據(jù)更新到版本庫(kù) -->*
`$ git commit -m "comment"` ? ? ? ? // 提交文件
***
*<!-- 查詢提交狀態(tài) -->*
`$ git status` ? ? ? ? // 查看工作區(qū)的狀態(tài)
***
*<!-- 查詢文件和git倉(cāng)庫(kù)的區(qū)別 -->*
`$ git diff` ? ? ? ? // 查看修改的內(nèi)容
`$ git diff <file>` ? // 查看文件和版本庫(kù)中的區(qū)別
***
*<!-- 打印歷史記錄 -->*
`$ git log` ? ? ? ?//查看提交歷史
`$ git log --pretty=oneline` ? ? ? ?// 更簡(jiǎn)潔的顯示提交歷史
`$ git log --graph ` ? ? ? ?// 可以看到分支合并圖
`$ git log --graph --pretty=oneline --abbrev-commit ` ? ?// 查看分支合并情況
`$ git reflog` ? ?? ?// 查看命令歷史(可以顯示提交版本號(hào)commit_id)
***
*<!-- 版本退回品腹,HEAD最新提交的版本 -->*
`$ git reset --hard HEAD^^^` ? ? // 回退3個(gè)版本 等價(jià)于 HEAD~3
`$ git reset --hard commit_id` ? ? // 跳到指定版本岖食,提交的版本號(hào)可以只寫(xiě)前面幾位
***
*<!-- 操作回退 -->*
`$ git diff HEAD -- <file>` ? ? // 查看工作區(qū)和版本庫(kù)里的區(qū)別
`$ git reset HEAD <file>` ? ? // 撤銷暫存區(qū)的修改,撤銷add操作
`$ git checkout -- <file>` ? ?// 把工作區(qū)恢復(fù)到版本庫(kù) (commit后就先恢復(fù)版本)舞吭,
? ?? ?? ?? ?? ?? ?撤銷modified的內(nèi)容
***
*<!-- 刪除操作 -->*
`$ rm <file>` ? ?? ? // 刪除文件
\# 刪除文件泡垃,并將版本庫(kù)中的也刪除掉
`$ git rm <file>`? ? // 刪除操作提交的暫存區(qū),提交后從版本庫(kù)刪除
`$ git commit -m "commit info"`
***
*<!-- 標(biāo)簽 -->*
`$ git tag` ? ?// 查看所有標(biāo)簽
`$ git tag show <tagname>` ? ?// 查看指定標(biāo)簽說(shuō)明
`$ git tag <tagname>` ? ?// 默認(rèn)再最新的commit上打一個(gè)標(biāo)簽
`$ git tag <tagname> commit_id` ? ?// 給commit_id打標(biāo)簽
`$ git tag -d <tagname>` ? ?// 刪除標(biāo)簽
\# 遠(yuǎn)程標(biāo)簽
`$ git push origin <tagname>` ? ?// 推送指定標(biāo)簽到遠(yuǎn)程
`$ git push origin --tags` ? ?//推送所有未推送的標(biāo)簽
\# 刪除推送的遠(yuǎn)程標(biāo)簽
`$ git tag -d <tagname> ` ? ?? ?// 先刪除本地的標(biāo)簽
`$ git push origin --delete tag <tagname>` ? ?// 刪除遠(yuǎn)程標(biāo)簽
`$ git push origin :refs/tags/<tagname>` ? ? // 刪除遠(yuǎn)程標(biāo)簽
***
*<!-- 分支 -->*
`$ git branch` ? ?? ? // 查看分支
`$ git branch -a`? ?? //查看分支镣典,和更多信息兔毙。 *當(dāng)前分支,白色本地其他分支兄春,
? ?? ?? ?? ?? 紅色遠(yuǎn)程倉(cāng)庫(kù)分支
`$ git branch <name>` ? ? // 創(chuàng)建分支
`$ git checkout <name>` ? ? // 切換分支
`$ git checkout -b <name>` ? ? // 創(chuàng)建+切換分支
`$ git merge <name> `? ?// 合并某一分支(name)到當(dāng)前分支.如果可能澎剥,Git會(huì)用
? ?? ?? ?? ?? Fast-forward,此時(shí)刪除分支后,會(huì)丟掉分支信息
`$ git merge --no-ff -m "info" `? ? // 強(qiáng)制禁用Fast forward模式赶舆,Git會(huì)在merge時(shí)生成
? ?? ?? ?? ?? ?? ?一個(gè)新的commit,從分支歷史中可以看到分支信息
`$ git branch -d <name>`? ? // 刪除分支
\# 刪除遠(yuǎn)程分支
`$ git push origin --delete <branchname>`? ? // 直接刪除
`$ git push origin :<branchname>`? ? // 推送一個(gè)空分支
`$ git remote prune origin`? ? // 其他人更新遠(yuǎn)程分支狀態(tài)哑姚,不操作時(shí),
? ?? ?? ?? ?? ??用$ git branch -a 還是可以看到被刪除的分支
`$ git fetch -p`? ? // 刪除沒(méi)有和遠(yuǎn)程分支對(duì)應(yīng)的本地分支
***
*<!-- git stash -->*
`$ git stash`? ? // 備份當(dāng)前的工作區(qū)內(nèi)容到git棧中芜茵,并把工作區(qū)內(nèi)容還原到最新
`$ git stash list`? ? // 顯示git棧中的所以備份叙量,可以利用顯示的 stash@{n} 恢復(fù)
`$ git stash apply` ? ?? ?// 恢復(fù)最近一次的備份
`$ git stash apply stash@{n}` ? ?// 恢復(fù)到指定備份
`$ git stash drop [stash@{n}] `? ?// 刪除最近一次保存的內(nèi)容,或指定的
`$ git stash pop [stash@{n}] `? ?// 恢復(fù)并刪除最近一次保存的內(nèi)容九串,或指定的
`$ git stash clear `? ?? ?// 清空所以備份記錄
***
*<!-- 2绞佩、遠(yuǎn)程倉(cāng)庫(kù)GitHub -->*
`$ ssh-keygen -t rsa -C "youremail@example.com" `? ?// 創(chuàng)建SSH Key。 用戶主目錄下
? ?? ?沒(méi)有的話猪钮,用該命令生成.登錄GitHub,賬戶設(shè)置中的SSH and GPG keys頁(yè)
? ?? ?面品山,New SSH key,復(fù)制粘貼公鑰并保存烤低。
\# 已有本地庫(kù)肘交,關(guān)聯(lián)遠(yuǎn)程庫(kù)
`$ git remote add origin git@github.com:username/repo-name.git ` ? ?// 關(guān)聯(lián)遠(yuǎn)程倉(cāng)庫(kù)
`$ git push -u origin master `? ?// 第一次推送master分支內(nèi)容,后面修改推送不用 -u
\# 已有遠(yuǎn)程庫(kù)扑馁,克隆到本地
`$ git clone git@github.com:username(用戶名)/repo-name(倉(cāng)庫(kù)名).git `? ?// git@使用ssh, 也可以通過(guò)https
? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?等其他協(xié)議
$ git remote rm origin // 刪除已經(jīng)存在的遠(yuǎn)程鏈接(fatal: remote origin already exists.)
***
*<!-- 3涯呻、git進(jìn)階 -->*
`$ git remote -v `? ?? ? // 顯示遠(yuǎn)程分支的名稱和url
`README.md `? ?? ? // 該文件一般記錄使用幫助信息
`.gitignore `? ?? ? // 該文件一般登記不用提交的文件名
***
*<!-- 4、沖突解決 -->*
\# 場(chǎng)景:同時(shí)修改同一文件腻要,merge時(shí)出現(xiàn)conflict. 解決:根據(jù)提示的沖突地方修改复罐,然后add,commit。 比如當(dāng)前是master,要merge分支dev雄家。
```$ git merge dev --> conflict =>手動(dòng)修改文件沖突部分
$ git add .
$ git commit -m "commit info" --> 重新提交
$ git branch -d dev
$ git log --graph```
***
*<!-- 5效诅、協(xié)同 -->*
\# 推送分支
`$ git remote`? ?? ? // 查看遠(yuǎn)程倉(cāng)庫(kù)的信息
`$ git remote -v`? ? // 查看遠(yuǎn)程倉(cāng)庫(kù)更詳細(xì)的信息
`$ git push origin <name>`? ? // 推送分支,name為分支名,如master,dev等填帽,有些分
? ?? ?? ?? ?? ?支如bug蛛淋,log等分支可能不需要推送
\#抓取分支
`$ git clone git@github.com:<name>/repo.git `? ?//先f(wàn)ork資源,得到master分支篡腌,然后
? ?? ?? ?? ?? ?$ git branch或其他命令查看下褐荷。如果提示沒(méi)有,從新開(kāi)一下
? ?? ?? ?? ?? ?bash或者$ git init試試
`$ git checkout -b dev origin/dev `? ? // 得到其他分支嘹悼,前提是該分支已經(jīng)被推送到
? ?? ?? ?? ?? ?github上了叛甫。 如果推送了還得不到,可以從新進(jìn)入git bash,
? ?? ?? ?? ?? ?或者$ git fetch
`$ git pull `? ?? ?// 更新同步杨伙,pull后commit有沖突手動(dòng)修改后commit其监,再push
`$ git branch --set-upstream dev origin/dev `? ? // 如果沒(méi)有指定本地dev與遠(yuǎn)程分支
? ?? ?? ?? ?? ?? ?origin/dev的鏈接,$ git pull會(huì)出錯(cuò)限匣,請(qǐng)執(zhí)行這條語(yǔ)句抖苦。
? ?? ?? ?? ?? ?? ?$ git checkout -b dev origin/dev已經(jīng)指定了鏈接所以用
? ?? ?? ?? ?? ?? ?這語(yǔ)句建立的分支不會(huì)出現(xiàn)這個(gè)情況
`$ git push origin dev `? ?? ? // push分支到遠(yuǎn)程 ,如果推送失敗米死,先$ git pull