本文主要介紹git
密鑰生成與配置,基礎命令包括clone
、add
、commit
、pull
、push
等,衝突處理,查看並回退歷史版本,以及提交規範等。git
//打開git bash 輸入如下命令 //用戶名,填你的名字全稱 如:yaoxfly 方便識別 git config --global user.name 'yaoxfly' //郵箱,填你的經常使用郵箱,代碼出錯時會發郵件通知你 git config --global user.email '123@qq.com'
ssh-keygen -t rsa 並按回車3下
tips:爲何按三下,是由於有提示你是否須要設置密碼,若是設置了每次使用git都會用到密碼,通常都是直接不寫爲空,直接回車就行了.
私鑰:id_rsa
,公鑰:id_rsa.pub
默認文件夾在你打開git bash
的目錄,或者在你的用戶目錄~/.ssh
文件夾下github
複製id_rsa.pub
文件裏的全部內容粘貼到須要地方,好比github
或碼雲的公鑰配置上npm
tips: 在生成key
以前git config --global
姓名和郵箱必定要設置, 不然每次操做都要填寫用戶名和密碼,不要在祕鑰上設置密碼,直接下一步就好。
git clone 'xxxx'
git add . // 匹配全部的文件, 提交被修改的和新建的文件,但不包括被刪除的文件 git add -u // update tracked files 更新全部改變的文件,將修改的文件提交到暫存區。 git add -A // 是上面兩個功能的合集(git add --all的縮寫)
git commit -m "添加你的註釋,通常是一些更改信息"
//僅僅是撤回commit操做,您寫的代碼仍然保留 git reset --soft HEAD^
git push origin master:master
fatal: refusing to merge unrelated histories
拒絕合併不相關的歷史解決方式,強制提交git push origin master:master -f
git push -u
tips:出現這個問題的最主要緣由仍是在於本地倉庫和遠程倉庫其實是獨立的兩個倉庫。
命令基本上就是 git fetch
和 git merge
命令的組合體,git 從指定的遠程倉庫中抓取內容,而後立刻嘗試將其合併進你所在的分支中。緩存
這個命令會訪問遠程倉庫,從中拉取全部你尚未的數據。 執行完成後,你將會擁有那個遠程倉庫中全部分支的引用,能夠隨時合併或查看。
可是注意的是 git fetch
並不會自動合併或修改你當前的工做。 你必須手動將其合併入你的工做。性能優化
合併分支bash
使用 git pull
,命令來自動的抓取而後合併遠程分支到當前分支。(至關於一次執行fetch加merge命令)更簡單,更方便快捷,更溫馨的工做流程。ssh
git branch newBranch
git checkout newBranch
git merge newBranch
git branch -D newBranch
tips:合併分支前,必定要切換到想要合併的分支上,好比主分支,再執行分支合併操做
git log
git status
git rm -r --cached .
tips:應用場景,好比.gitignore忽略的文件無效的狀況等
git remote set-url origin ssh://git@ip:端口/home/git/gitrepo/git.git
tips:當代碼庫遠程遷移後,可以使用當前功能
git clone http://XXXX/XX.git //克融項目 git log // 查看commit歷史,並找到須要的版本 git checkout '版本號' //獲取
tips:運行
git log
命令 ,查看commit後跟着的哈希值就是版本號
問題描述:提交git倉庫時出現:Your branch is up-to-date with 'origin/master'.ide
/*解決方案*/ //這時候咱們就須要新建一個分支 git branch newBranch //檢查分支是否建立成功,前面的*表明的是當前你所在的工做分支 git branch //切換到你的新分支 git checkout newBranch //添加修改和新增的文件 git add . //提交到本地 git commit -m "18.03.01" //檢查是否成功 git status //而後切換到主分支 git checkout master //將新分支提交的改動合併到主分支上(合併前必定要切換到主分支) git merge newBranch // push代碼了 git push -u origin master //刪除這個分支 git branch -D newBranch
++<<<<<<< HEADgrunt
++<<<<<<< new_branch工具
可直接刪除掉這些亂碼,保存後再提交,某些ide
可提示,並可刪除這些亂碼等其餘智能操做,如vs code
,編碼神器,個人最愛,哈哈,強推一波。
問題描述:committing is not possible because you have unmerged files
/*解決方案*/ //把你修改的文件一個個添加進去 git add '文件名', //提交本地 git commit -a -m "備註信息" //提交遠程 git push -u
git提交也有規範,業內作的比較好,具備參考價值的就是Angular
的提交。
<type>(<scope>): <subject> #header // 空一行 <body> // 空一行 <footer> //中文釋義 <類型>[可選的做用域]: <主題> 描述 [可選的正文] [可選的腳註]
參數 | 說明 | 是否必須 |
---|---|---|
type | 提交類型 | true |
scope | 提交影響的範圍 | false |
subject | 提交目的的簡短描述 | false |
header | 內容 | true |
type有如下標識
tips:
- 若是type爲feat和fix,則該 commit 將確定出如今 Change log 之中。其餘特殊狀況(docs、chore、style、refactor、test)由你決定,要不要放入 Change log,建議是不要。
- 當一次改動包括主要type與特殊type時,統一採用主要type。