初操作---設(shè)置用戶名
1困肩、git config --global user.name "any name" ?//設(shè)置全局project的用戶名
2呐矾、git config --global?user.email?"any email" ?//設(shè)置全局project的郵箱
3、git config --global --list ? //查看當(dāng)前用戶的全局配置? ?用戶名和郵箱
4汉规、在VS Code中每次更新代碼都會要輸入賬號密碼塔淤,方便起見流礁,可以配置一下讓 git 記住密碼賬號。
5妹蔽、git config --global credential.helper store?
建立遠程倉庫鏈接
1椎眯、如果是從服務(wù)器 clone 下來的代碼,會自動配置一個叫 origin 的遠程倉庫鏈接
2胳岂、git remote -v? // 查看配置的遠程倉庫鏈接
3编整、git remote add <遠程倉庫名> <遠程倉庫url> ? ?//添加遠程庫鏈接
4、git remote rm <遠程倉庫名> ? //移除遠程倉庫
5乳丰、git remote rename <oldname> <new name> //遠程倉庫重命名
提交代碼過程
1掌测、提交之前,需要 pull (拉炔啊)一下汞斧,然后處理沖突
2、git add -A? ?//添加所有文件什燕,也可以只提交更改的文件 git add .
3粘勒、git add .? ?//添加更改的文件
4、git commit -m "描述代碼信息"
5秋冰、git push -u <遠程庫的名稱> <遠程庫的分支> ?// -u 表示指定<當(dāng)前遠程庫> 為默認(rèn)遠程倉庫仲义,以后就直接push,不用帶參數(shù)
6剑勾、如果你確定遠程倉庫的分支上那些代碼都不需要了埃撵,那么直接?push 后面加一個 -f ,強行讓本地分支覆蓋遠程分支
7虽另、git push <遠程倉庫名> <遠程庫的分支> -f?
提交代碼出現(xiàn)沖突
1暂刘、git push 會出問題,應(yīng)該先pull 一下捂刺,但是 pull 的時候又可能會出現(xiàn)分支沖突谣拣,
2、這時可能由于版本問題會報錯族展,可能遇到?refusing to merge unrelated histories?這個提示是因為兩個倉庫不同森缠,發(fā)現(xiàn) refusing to merge unrelated histories,無法 pull仪缸。
3贵涵、要把兩個不同的項目合并,git 需要添加一句代碼 ,這句代碼是在 git 2.9.2 版本發(fā)生的宾茂,最新的版本需要添加 –allow-unrelated-histories瓷马。查看git 版本,git --version
4跨晴、假如我們的遠程倉庫是 origin欧聘,分支是 master,那么我們 需要這樣寫 ?git pull origin master?--allow-unrelated-histories
5端盆、然后再? git push -u <遠程庫的名稱> <遠程庫的分支>
拉取代碼出現(xiàn)沖突
1怀骤、git pull 時本地文件和遠程服務(wù)器文件沖突,出錯信息如下:
2爱谁、error: Your local changes to 'contextTempl.java' would be overwritten by merge. ?Aborting.
3晒喷、Please, commit your changes or stash them before you can merge.
4、解釋:這個意思是說更新下來的內(nèi)容和本地修改的內(nèi)容有沖突访敌,先提交你的改變或者先將本地修改暫時存儲起來凉敲。
5、在 VS Code 中寺旺,錯誤提示是:在簽出前 請清理存儲庫工作樹
6爷抓、在這種情況下,您可以將更改隱藏起來阻塑,然后執(zhí)行g(shù)it pull蓝撇,然后解壓縮;
7陈莽、git stash ?//先將本地修改存儲起來
8渤昌、git pull ?//拉取遠程
9、git stash pop //還原暫存內(nèi)容
代碼克隆所有分支
git clone 只能 clone 遠程庫的 master 分支走搁,無法 clone 所有分支独柑,解決方法去下:
1、git clone http://xxx.xxx.com/project/.git ,這樣在git_work目錄下得到一個project子目錄
2私植、cd project
3忌栅、git branch -a,列出所有分支名稱如下:remotes/origin/dev? ? ?remotes/origin/release
4曲稼、git checkout -b?origin/dev dev索绪,作用是 checkout 遠程的 dev 分支,在本地起名為 dev 分支贫悄,并切換到本地的 dev 分支
5瑞驱、git checkout -b?origin/release release,作用參見上一步解釋
6窄坦、git checkout dev钱烟,切換回 dev 分支晰筛,并開始開發(fā)。
查看分支:git branch
創(chuàng)建分支:git branch
切換分支:git checkout
創(chuàng)建+切換分支:git checkout -b
合并某分支到當(dāng)前分支:git merge
刪除分支:git branch -d
指令簡寫
-d? ? --delete:刪除
-D? ?--delete --force的快捷鍵
-f? ? ?--force:強制
-m? ?--move:移動或重命名
-M? ?--move --force的快捷鍵
-r? ? ?--remote:遠程
-a? ? ?--all:所有
git fetch 和 git pull 的區(qū)別
1拴袭、git fetch <遠程主機名> <分支名>
2、最常見的命令如取回 origin 主機的 master 分支:
3曙博、git fetch origin master? 拥刻,從遠程主機的master分支拉取最新內(nèi)容
4、git?merge FETCH_HEAD 父泳,將拉取下來的最新內(nèi)容合并到當(dāng)前所在的分支中
5般哼、git pull?<遠程主機名>?<遠程分支名>:<本地分支名>
6、git pull origin master? 惠窄, 如果遠程分支是與當(dāng)前分支合并蒸眠,則冒號后面的部分可以省略
git 撤銷操作、恢復(fù)文件
1杆融、如果誤刪了某文件楞卡,需要 git status 先看下工作區(qū)是否 commit 過,如果沒有 commit 脾歇,可以看到刪除的文件名及路徑蒋腮,是紅色的
2、直接從工作區(qū)拿刪除的文件 git checkout -- <path + file>
3藕各、如果已經(jīng)commit 了池摧,那么git status 看到的刪除的文件及路徑是綠色的,這時checkout 已經(jīng)沒用了
4激况、可以把暫存區(qū)的修改撤銷掉(unstage)作彤,git reset HEAD <path + file>,重新放回工作區(qū)乌逐,然后 git checkout -- <path + file> 取回
git 版本回退
遠程分支回退有三種方法:
1竭讳、自己的分支回滾直接用 reset
2、公共分支回滾用 revert
3黔帕、錯的太遠了直接將代碼全部刪掉代咸,用正確代碼替代
本地分支版本回退:
1、先找到要回退的版本的 commit id 成黄,git reflog?
2呐芥、可以根據(jù)commit id ,查看先前版本的信息奋岁,git log <commit id> ?或者 git show <commit id>思瘟,退出git log 狀態(tài),英文狀態(tài)下按q?
3闻伶、回退版本 git?reset?--hard
自己的遠程分支版本退回:
如果你的錯誤提交已經(jīng)推送到自己的遠程分支了滨攻,那么就需要回滾遠程分支了。
1、git reflog
2光绕、git reset --hard <commit id>
3女嘲、然后強制推送到遠程分支,git push -f
本地分支回滾后诞帐,版本將落后遠程分支欣尼,必須使用強制推送覆蓋遠程分支,否則無法推送到遠程分支
公共遠程分支回退:
回滾公共遠程分支和回滾自己的遠程分支是有區(qū)別的停蕉,如果你回退公共遠程分支愕鼓,把別人的提交給丟掉了怎么辦?