一宰啦、初始化項(xiàng)目,并上傳到git服務(wù)器
基本過程:創(chuàng)建遠(yuǎn)程倉庫奸例、初始化本地git倉庫彬犯、將本地倉庫于遠(yuǎn)程倉庫關(guān)聯(lián)起來、添加本地倉庫想要提交的代碼到本地git緩沖區(qū)查吊,將本地倉庫的本地分支于遠(yuǎn)程倉庫的遠(yuǎn)程分支關(guān)聯(lián)起來谐区、提交代碼。逻卖。
1. 在git服務(wù)器上創(chuàng)建同名git項(xiàng)目宋列,并獲取http地址
2. 本地git初始化項(xiàng)目git倉庫,在項(xiàng)目目錄下
$ git init
3. 將本地git倉庫和遠(yuǎn)程倉庫關(guān)聯(lián)起來评也,并設(shè)置遠(yuǎn)程倉庫名稱
git remote add <name> <http地址>
例如:git remote add origin?https://github.com/CraZYJH/demo.git
4. 添加項(xiàng)目文件到本地git緩沖區(qū)
第一種方法:git add -A? 炼杖、git commit -m '初始化項(xiàng)目'
第二種方法:git commit -a -m '初始化項(xiàng)目'
5. 將本地分支關(guān)聯(lián)遠(yuǎn)程分支并提交,git 默認(rèn)在遠(yuǎn)程分支上創(chuàng)建與本地分支同名的分支
git push --set-upstream origin master
這就是將本地的master分支與origin 遠(yuǎn)程倉庫關(guān)聯(lián)起來并在遠(yuǎn)程倉庫創(chuàng)建同名master分支盗迟,以后本地master 都提交到遠(yuǎn)程倉庫中的origin/master分支上坤邪。upstream :上游的意思。
二罚缕、提交某一分支的修改
1. 查看當(dāng)前分支的修改
git status
2. 查看想要查看的文件的修改
git diff <file_name>
3. 確認(rèn)正確后艇纺,提交修改到暫存區(qū)
git add -A? ?或者 git add <file_file1> <file_name2> ...
4. 提交到本地倉庫
git commit -m '修改信息'
5. 提交到遠(yuǎn)程倉庫
git push
三、拉取遠(yuǎn)程分支修改到本地分支
當(dāng)遠(yuǎn)程分支別人推了一版新的代碼時(shí)怕磨,我們想要將代碼拉下來喂饥,可以采用兩種方式pull和fetch+merge。
pull和fetch+merge 不同點(diǎn):
1. 使用pull
將遠(yuǎn)程分支最新代碼更新合并到本地倉庫區(qū)和工作區(qū)
git pull
2. 使用fetch?
- 將遠(yuǎn)程所有分支最新的commit更新到FETCHHEAD肠鲫,記錄遠(yuǎn)程分支最新的commit_id 和本地倉庫區(qū)
- 將最新代碼合并到工作區(qū)
git fetch
git merge
四员帮、取消track某一文件:track 跟蹤
git rm-r--cache <file_name>
untrack后,使用commit -a時(shí)导饲,不會(huì)將其添加到暫存區(qū)中
之后會(huì)在.ignore 文件中將該untrack的文件添加進(jìn)去捞高,完成。
五渣锦、保存賬號(hào)密碼硝岗,避免每次push都要輸入
1. 確保在git中輸入過賬號(hào)和密碼
2. 輸入下面語句即可
git config --global credential.helper store
六、暫存自己的修改袋毙,便于接著工作(特別有用)
試想一個(gè)場(chǎng)景:如果你正在一個(gè)分支上工作修改型檀,leader讓你改另外的分支的BUG或者對(duì)其他分支做一些操作。
我們知道如果一個(gè)分支上還沒有commit的修改的話听盖,不可以切換分支胀溺,但是又因?yàn)樽约旱墓ぷ魑赐瓿闪哑撸幌隿ommit,此時(shí)git stash就起作用了仓坞。
1. 將當(dāng)前分支的修改暫存起來(此處不等于add+commit)
git stash
備份當(dāng)前的工作區(qū)的內(nèi)容背零,從最新你的一次提交中讀取相關(guān)內(nèi)容,讓工作區(qū)保證和上次提交的內(nèi)容一致无埃。同時(shí)徙瓶,將當(dāng)前的工作區(qū)修改的內(nèi)容保存到Git棧中暫存起來。
2. 切換到別的分支工作嫉称,完成后切換回原來的工作分支侦镇,查看暫存列表
git stash list
顯示Git棧內(nèi)的所有備份,可以利用這個(gè)列表來決定從哪個(gè)地方恢復(fù)
3. 恢復(fù)暫存的修改到工作區(qū)
git stash apply <stash_name>? ? ? 恢復(fù)暫存之后不刪除暫存
git stash pop? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 恢復(fù)暫存之后刪除暫存
4. 刪除‘暫存’
git stash drop <stash_name>? ? ? ? 從Git棧中刪除最舊的一個(gè)暫存
七澎埠、將文件修改回退到某一狀態(tài)
一些已經(jīng)提交的或者已經(jīng)修改的部分虽缕,想要再修改一下,或者刪除已經(jīng)提交的
1. 刪除某些commit蒲稳,將head重定位到某一commit(回溯到以前的版本)
git reflog? ? ? ? ?查看所有 commit_id
git reset --head <commit_id> 會(huì)將commit_id 前的所有commit修改刪除
git reset <commit_id>? ? ? ? ? ? ? 不會(huì)將commit_id前的commit刪除氮趋,而是會(huì)將修改回退到本地工作區(qū)
git push origin HEAD --force? 此步驟將服務(wù)器方也設(shè)置為相應(yīng)的commit
2. 將文件修改恢復(fù)到當(dāng)前已提交分支的原樣(未git add情況下)撤銷修改就回到和版本庫一模一樣的狀態(tài),即用版本庫里的版本替換工作區(qū)的版本江耀。
git checkout -- <file_name>
3.將文件修改恢復(fù)到當(dāng)前已提交分支的原樣(已經(jīng)git add 情況下)
git reset HEAD? ?將add退回
git checkout -- <file_name>
4. 將文件修改恢復(fù)到已提交分支的原樣(已經(jīng)git commit 情況下)
git reset <commit_id>? 此處的commit_id 可以是任意分支的commit_id
git checkout -- <file_name>
八剩胁、版本的回溯與前進(jìn)
有時(shí)候徐婭回溯或前進(jìn)到以前的版本? ?或? ? 回溯前進(jìn)到以前的commit.
只要記住 commit_id? ?就可以在版本之間來回的穿梭,與七.1一樣祥国。