Take nothing for granted. Know that the harder you work, the luckier you'll get. — Ivanka Trump
沒有事情是理所當(dāng)然,要知道越努力越幸運(yùn)。 — 伊凡卡·川普
基礎(chǔ)命令
初始化一個(gè)git工程
git init: 在本地已存在的工程目錄下打開git base,輸入git init會(huì)在該目錄下創(chuàng)建.git隱藏目錄(該目錄保存一些基本配置)。
git clone 遠(yuǎn)程倉(cāng)庫(kù)地址:上面是直接在本地創(chuàng)建一個(gè)新的工程,而該命令是將遠(yuǎn)程倉(cāng)庫(kù)克隆到本地,直接將遠(yuǎn)程倉(cāng)庫(kù)克隆到本地。添加需要關(guān)注的文件
這一組命令是添加文件到暫緩區(qū),暫緩區(qū)的文件可以被commit,最后被push到遠(yuǎn)程倉(cāng)庫(kù)。
git add --all:添加所有變化。
git add -u:添加被修改(modified)和被刪除(deleted)文件,不包括新文件(new)。
git add .:添加新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件。
git add fileName:添加指定文件到暫緩區(qū)。提交變化
暫緩區(qū)的文件就是你關(guān)注的文件,處于這個(gè)狀態(tài)的文件是能被commit(提交某次修改)的。
git commit -m 'message':該命令就將你需要修改的文件提交,message是你為這次提交所做的描述信息。添加遠(yuǎn)程倉(cāng)庫(kù)
如果一個(gè)倉(cāng)庫(kù)是通過git init方式創(chuàng)建,是沒有綁定一個(gè)遠(yuǎn)程的倉(cāng)庫(kù),而git clone方式的倉(cāng)庫(kù)為克隆的地址,當(dāng)然你可以為你的git工程添加多個(gè)遠(yuǎn)程倉(cāng)庫(kù)。
git remote add 倉(cāng)庫(kù)名 對(duì)應(yīng)的倉(cāng)庫(kù)地址:添加遠(yuǎn)程倉(cāng)庫(kù)。push
git push <遠(yuǎn)程倉(cāng)庫(kù)> <本地分支> <遠(yuǎn)程分支>:將本地分支推送到遠(yuǎn)程倉(cāng)庫(kù)的遠(yuǎn)程分支,如果遠(yuǎn)程倉(cāng)庫(kù)不存在對(duì)應(yīng)的分支則創(chuàng)建,當(dāng)只有一個(gè)遠(yuǎn)程倉(cāng)庫(kù)時(shí)使用git push能直接將當(dāng)前本地分支推到對(duì)應(yīng)的遠(yuǎn)程分支。pull
git pull <遠(yuǎn)程倉(cāng)庫(kù)> <遠(yuǎn)程分支> : <本地分支>:將遠(yuǎn)程倉(cāng)庫(kù)的遠(yuǎn)程分支拉取下來與本地分支進(jìn)行合并,例如git pull origin next:master表示將遠(yuǎn)程倉(cāng)庫(kù)origin的next分支與本地的master分支合并,冒號(hào)及后面的本地分支可以省略即git pull origin next。其他命令
git branch:查看本地所有分支
git branch --all:查看所有分支包括遠(yuǎn)程倉(cāng)庫(kù)的。
git branch dev2:新建分支dev2
git branch -d dev2:刪除分支dev2
git checkout dev2:切換到制定分支 dev2
git merge 分支A:將分支A合并到當(dāng)前分支
git status list:將改動(dòng)緩存到臨時(shí)區(qū)域,并還原到上次commit后的狀態(tài),此時(shí)你可以直接切換分支
git status pop:將緩存區(qū)域的改動(dòng)重新應(yīng)用到該分支并且移除臨時(shí)緩存
修改提交git賬號(hào)
當(dāng)你在首次用git提交某次修改時(shí)會(huì)讓你輸入對(duì)應(yīng)的name和email,這個(gè)信息會(huì)作為當(dāng)前電腦的全局配置,那么在后續(xù)的提交都是用的這個(gè)賬號(hào)。如果需要修改提交的賬號(hào)呢?
通過命令git config --list查看當(dāng)前的git相關(guān)配置,找到user.name 和user.email,修改即可。
- 修改全局 (修改全局默認(rèn)值)name和email,通過以下命令:
git config --global user.name yourName;
git config --global user.email yourEmail;
- 只修改當(dāng)前project的name和email,在當(dāng)前project目錄下通過命令:
git config user.name yourName;
git config user.email yourEmail;
-
上面兩種方法如果不生效,可以修改位于在project下.git目錄下的config添加如下節(jié)點(diǎn)
增加配置
刪除遠(yuǎn)程倉(cāng)庫(kù)上被忽略的文件
由于種種原因,一些本應(yīng)該被忽略的文件被我們誤操作提交到了遠(yuǎn)程倉(cāng)庫(kù)了,那么我們?cè)撛趺磩h除這些文件呢?
以誤提交了.idea目錄為例,我們可以通過下面的步驟處理:
- 首先執(zhí)行命令
git rm -r --cached .idea將.idea從暫緩區(qū)中移除 - 編寫正確的.gitignore文件,忽略掉上面移除的文件,然后依次執(zhí)行下面的命令
git add --all
git commit -m '提交信息'
git push
Authentication failed
在代碼提交時(shí)如果出現(xiàn)fatal: Authentication failed for的錯(cuò)誤提示,那么絕大可能性是你的賬號(hào)和密碼錯(cuò)誤,所以可以嘗試下面解決方法:
- 執(zhí)行命令
git config --system --unset credential.helper進(jìn)行重置 - 進(jìn)行正常的提交操作即可,but現(xiàn)在可能遇到每次push操作都需要你輸入密碼怎么辦呢?
- 執(zhí)行命令
git config --global credential.helper store將密碼存在本地后,就不用再次輸入了(第一次還是要輸入的,后續(xù)不需要)
Error提交403
賬戶沒有權(quán)限,或者賬戶問題,以及其他問題。
- 讓管理員開通對(duì)應(yīng)提交權(quán)限等
- 如果是密碼問題,則編輯 /工程目錄/.git/config文件,在url中攜帶用戶名和密碼,例如
修改前:url = https://xxx.com/xxx/xxxx.git
修改后:url = https:///yourname:password@xxx.com/xxx/xxxx.git
改錯(cuò)代碼分支
當(dāng)開發(fā)了完功能準(zhǔn)備提交代碼時(shí)發(fā)現(xiàn)修改在了錯(cuò)誤的分支上面,如果在保留所有修改并切換到正確的分支上呢?根據(jù)情況不同有下面兩種方案。
- 還未commit的情況
git add --all (把所有改動(dòng)暫存)
git stash (把暫存的文件提交到git的暫存棧)
git checkout (切換到正確的分支)
git stash pop (將暫存棧中的代碼放出來)
- 已經(jīng)commit的情況
先切換到改錯(cuò)了的分支
git reset HEAD~1 (將我最近一次提交放回暫存區(qū), 并取消此次提交)
git stash (把暫存的文件提交到git的暫存棧)
git checkout (切換到正確的分支)
git stash pop (將暫存棧中的代碼放出來)
git push origin 錯(cuò)誤的分支 -f (把遠(yuǎn)程里面不該提交的移除)
