1、基礎(chǔ)操作1.1、常用命令提交代碼 git status -sb git add . git commit -m "fix" git push origin dev_20190510001
查詢狀態(tài) git status
查看日志 git log --stat git reflog --date=iso
建立分支 git status -sb git checkout -B dev_20190510001 git push git push --set-upstream origin dev_20190510001
展示文件 ls 刪除文件 git rm test2.txt 撤銷操作 git checkout -- test.txt
添加文件到緩存: git add test.txt 單個(gè)文件 git add . 當(dāng)前目錄全部文件
提交(包含注釋)到本地倉(cāng)庫(kù): git commit -m '第一次版本提交'
上傳文件到遠(yuǎn)程倉(cāng)庫(kù): git push origin [本地分支名]:[遠(yuǎn)端分支名] 當(dāng)然如果你的本地分支名和遠(yuǎn)端分支名是一樣的,那么就只需要git push origin [分支名稱]就可以了。 git push
恢復(fù)最近版本文件 git fetch git reset --hard origin/master //恢復(fù)到遠(yuǎn)程倉(cāng)庫(kù),刪除git add和commit的文件
git pull 拉取 從遠(yuǎn)程拉取最新版本到本地,并自動(dòng)合并 merge git fetch 獲取 從遠(yuǎn)程獲取最新版本到本地,不會(huì)自動(dòng)合并 merge,需要手動(dòng)合并 git merge 合并 使用fetch 可以在merge之前可以看清楚更新情況,再?zèng)Q定是否合并。 git merge --abort 中止合并
git 一個(gè)分支完全覆蓋另一個(gè)分支 ,如下:dev_20210729覆蓋develop $ git checkout develop $ git reset --hard dev_20210729 $ git push origin develop --force
不允許推送 You are not allowed to force push code to a protected branch on this project "Settings" -> "Repository" -> scroll down to "Protected branches".
git回滾之前的版本 http://www.cnblogs.com/yu-hailong/p/10681905.html git log 查詢?nèi)諝v記錄 git reset --hard 5fa86ae3758e7e2a86825452977da40f34b6dd58 回滾到之前的版本 git push origin HEAD --force 強(qiáng)制提交
還原本地文件 git reset -hard
git reset —soft + 版本號(hào) 回退到某個(gè)版本,只回退了commit的信息,不會(huì)改變已經(jīng)修改過(guò)的代碼。 git reset --soft HEAD^
git reset —hard + 版本號(hào) git reset --hard orgin 徹底回退到某個(gè)版本,本地的代碼也會(huì)改變上一個(gè)版本內(nèi)容。
#本地倉(cāng)庫(kù)回退到某個(gè)版本 git reflog --date=iso git reset -–hard bae168
#本地倉(cāng)庫(kù)回退到上一次提交 git reset –-hard
git reset --hard HEAD
回退到當(dāng)前版本的前一個(gè)版本 git reset --hard HEAD^
回退到當(dāng)前版本的上上個(gè)版本 git reset --hard HEAD^^
回退到當(dāng)前版本之前的100個(gè)版本 git reset --hard HEAD~100
丟棄本地提交,強(qiáng)制回到線上最新版本 git fetch --all git reset --hard origin/你需要下拉的分支(默認(rèn)master) git fetch
1.2、配置vi /etc/ssh/sshd_config
查看版本: git --version
查看配置: git config --list
設(shè)置配置: git config --global pack.windowMemory 1024m
git config --global pack.packsizelimit 1g
git config --global http.postBuffer 1g
刪除配置: git config --global --unset pack.deltacachesize
1.3、分支https://edu.aliyun.com/jiaocheng/1834?spm=5176.11182473.menu.7.k6ksTN
創(chuàng)建分支命令(復(fù)制當(dāng)前分支下文件): git branch (branchname)
提交分支到倉(cāng)庫(kù)命令: git push origin (branchname)
切換分支命令: git checkout (branchname)
列出分支基本命令: git branch -a
刪除分支命令: git branch -d (branchname)
創(chuàng)建新分支并立即切換到該分支下 git checkout -b newtest 有同名分支會(huì)提示錯(cuò)誤
強(qiáng)制創(chuàng)建新分支,并且會(huì)覆蓋原來(lái)存在的同名分支 git checkout -B new_branch
設(shè)置本地分支關(guān)聯(lián)遠(yuǎn)程分支 git push --set-upstream origin
合并分支: git checkout master git merge test // test分支合并到master分支 git push origin master
查看分支 git branch -a 刪除本地分支 git branch -D branch-name 刪除遠(yuǎn)程分支 git push origin --delete branch-name
查看當(dāng)前配置有哪些遠(yuǎn)程倉(cāng)庫(kù) git remote -v
徹底刪除文件--會(huì)刪除對(duì)應(yīng)提交記錄(包含正常文件的提交歷史) git filter-branch --force --index-filter 'git \ rm --cached --ignore-unmatch test徹底刪除.txt' \ --prune-empty --tag-name-filter cat -- --all git push --all --force
修改分支名稱 https://www.jianshu.com/p/cc740394faf5
a. 重命名遠(yuǎn)程分支對(duì)應(yīng)的本地分支 git branch -m oldName newName
b. 刪除遠(yuǎn)程分支 git push --delete origin oldName
c. 上傳新命名的本地分支 git push origin newName
d.把修改后的本地分支與遠(yuǎn)程分支關(guān)聯(lián) git branch --set-upstream-to origin/newName
2、高級(jí)操作2.1、查看文件狀態(tài)及日志git status 命令用于查看項(xiàng)目的當(dāng)前狀態(tài)。 git status -s 查看詳情
git diff git diff --stat
執(zhí)行 git diff 來(lái)查看執(zhí)行 git status 的結(jié)果的詳細(xì)信息。
git diff 命令顯示已寫入緩存與已修改但尚未寫入緩存的改動(dòng)的區(qū)別。 git diff 有兩個(gè)主要的應(yīng)用場(chǎng)景。 尚未緩存的改動(dòng):git diff 查看已緩存的改動(dòng):git diff --cached 查看已緩存的與未緩存的所有改動(dòng):git diff HEAD 顯示摘要而非整個(gè) diff:git diff --stat
退出git diff : q
查看全部分支的已經(jīng)commit但是沒(méi)有push的: git log --branches --not --remotes
git cherry -v 只能查看未傳送提交的描述/說(shuō)明 git log master ^origin/master 則可以查看未傳送提交的詳細(xì)信息
查看全部分支的全部的最近的commit: git log --branches --not --remotes --simplify-by-decoration --decorate --online
查看日志 git log git log --oneline -3 當(dāng)前分支的最近三次提交記錄
git log --stat https://www.cnblogs.com/fancyop/p/Git_Log.html 用來(lái)顯示每次提交的下面列出所有被修改過(guò)的文件、有多少文件被修改了以及被修改過(guò)的文件的哪些行被移除或是添加了。 在每次提交的最后還有一個(gè)總結(jié)。
git reflog 所有分支的記錄 git reflog --date=iso
2.2、stash暫存git stash: 備份當(dāng)前的工作區(qū)的內(nèi)容,從最近的一次提交中讀取相關(guān)內(nèi)容,讓工作區(qū)保證和上次提交的內(nèi)容一致。同時(shí),將當(dāng)前的工作區(qū)內(nèi)容保存到Git棧中。
git stash pop: 從Git棧中讀取最近一次保存的內(nèi)容,恢復(fù)工作區(qū)的相關(guān)內(nèi)容。由于可能存在多個(gè)Stash的內(nèi)容,所以用棧來(lái)管理,pop會(huì)從最近的一個(gè)stash中讀取內(nèi)容并恢復(fù)。
git stash list: 顯示Git棧內(nèi)的所有備份,可以利用這個(gè)列表來(lái)決定從那個(gè)地方恢復(fù)。
git stash clear: 清空Git棧。此時(shí)使用gitg等圖形化工具會(huì)發(fā)現(xiàn),原來(lái)stash的哪些節(jié)點(diǎn)都消失了。
git stash apply 恢復(fù)暫存之后不刪除暫存 git stash pop 恢復(fù)暫存之后刪除暫存 git stash drop 從Git棧刪除最舊的一個(gè)暫存
2.3、修改注釋信息git使用amend選項(xiàng)提供了最后一次commit的反悔。但是對(duì)于歷史提交呢,就必須使用rebase了。
git rebase -i HEAD~3 表示要修改當(dāng)前版本的倒數(shù)第三次狀態(tài)。 這個(gè)命令出來(lái)之后,會(huì)出來(lái)三行東東:
pick:*******
pick:*******
pick:*******
如果你要修改哪個(gè),就把那行的pick改成edit,然后退出。
這時(shí)通過(guò)git log你可以發(fā)現(xiàn),git的最后一次提交已經(jīng)變成你選的那個(gè)了,這時(shí)再使用:
git commit --amend
來(lái)對(duì)commit進(jìn)行修改。 :wq
修改完了之后,要回來(lái)對(duì)不對(duì)?
使用git rebase --continue git rebase --abort
OK,一切都搞定了。
https://xiewenbo./blog/1285693
恢復(fù)已刪除分支 https://blog.csdn.net/changerzhuo_319/article/details/81133533 git reflog --date=iso git checkout -b reback_remove_branch ddd94a4
3、問(wèn)題3.1、github添加ssh公鑰## github添加ssh公鑰 git clone
打開(kāi) git bash
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
添加到 https://github.com/settings/keys 依次點(diǎn)擊"Setting -> SSH Keys"->"New SSH key"
ssh -T git@github.com
git clone git@github.com:scott180/MyNotes.git
3.2、提交及更新失敗用git pull來(lái)更新代碼的時(shí)候,遇到了下面的問(wèn)題:
error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.php Please, commit your changes or stash them before you can merge. Aborting
https://www.cnblogs.com/xd502djj/p/6973477.html
解決方法:
方法1、暫存本地文件,下載最新代碼?;謴?fù)本地修改的代碼,修改沖突的文件,提交代碼。 git stash //暫存 git pull //下載最新代碼 git stash pop //恢復(fù)暫存文件
git status //查詢狀態(tài) git add xxx/xxx/Test.java //提交文件 不能使用全部提交:(git add .) git commit -m "fix" //注釋 git push //提交文件
方法2、 放棄本地修改文件,下載最新代碼 git reset --hard git pull
GIT拉取代碼的時(shí)候提示AUTHENTICATION FAILED FOR []
解決方法: 輸入 git config --global credential.helper store 然后 git pull 輸入賬號(hào)密碼
或者清除密碼 git config --system --unset credential.helper
在git(小烏龜)向github遠(yuǎn)程推送(push)文件是會(huì)報(bào)一個(gè)異常 no supported authentication methods avaiable https://blog.csdn.net/Maxiao1204/article/details/81476618
解決方法: 因?yàn)間it(小烏龜)和Git的沖突我們需要把烏龜git設(shè)置改正如下。
找到TortoiseGit--》Settings--》Network
將SSH client指向 D:\git\usr\bin\ssh.exe (我的Git工具安裝在d盤)
這里更改ssh 路徑的時(shí)候,要把上面的“使用代理服務(wù)器” 勾打上,點(diǎn)擊應(yīng)用,再確定
|