當(dāng)你在錯誤的分支上做了修改,本來應(yīng)在A上修改,結(jié)果在B上修改了。那么怎么辦呢?
不著急,有辦法~
1)如果你在分支B上的文件還沒有commit
- 先 git stash,把沒有commit的更改文件暫存在一個地方,這個地方git知道,你是看不到的。
- 切換到正確的分支A。
- 使用git stash pop 命令,把暫存的文件找回來。
這個時候無論你是想在正確的分支上繼續(xù)修改,還是直接commit都沒有問題。
這就是 [ git stash ] 和 [ git stash pop ] 的秘密。
總結(jié)而言:先保存好修改的版本,然后切換分支,切換回來再去把修改的拉回來。
2).代碼不但改了,還提交了怎么辦。
git checkout 不該提交代碼提交了代碼的分支
git reset HEAD~1 (最近一次提交放回暫存區(qū), 并取消此次提交)
git stash (把暫存的文件提交到git的暫存棧)
git checkout 該提交代碼的分支
git stash pop 把暫存棧的文件找回來,你還可以繼續(xù)修改,或者把代碼提交到了正確的分支后,然后再次切到剛剛錯的分支
git push origin 錯誤的分支 -f (把不該上去的文件回退掉)
當(dāng)我們用https clone項目到本地的時候,git push命令每次都需要輸入密碼,下面的方法可以很快的解決這個麻煩。
git config credential.helper store
git pull
然后會讓你輸入帳號和密碼
再執(zhí)行g(shù)it pull 命令后,就不再需要輸入帳號和密碼了。
file ~/.git-credentials
cat ~/.git-credentials
通過查看上面的命令,你可以發(fā)現(xiàn)密碼其實是明文存在途中的 ~/.git-credentials 這個文件里的,你可以打開看呢。
如果嫌git log 輸出信息太多,看得眼花繚亂的,可以試試加上--pretty=oneline參數(shù):
git log --pretty=oneline
Git創(chuàng)建遠(yuǎn)程分支
現(xiàn)在我在master分支上,工作目標(biāo)是干凈的,也沒有需要commit的:
$ git branch
- master
release
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
新建遠(yuǎn)程分支
新建一個本地分支:
git branch
*localbranch
master
release
星號(*)表示當(dāng)前所在分支?,F(xiàn)在的狀態(tài)是成功創(chuàng)建的新的分支并且已經(jīng)切換到新分支上。
把新建的本地分支push到遠(yuǎn)程服務(wù)器,遠(yuǎn)程分支與本地分支同名(當(dāng)然可以隨意起名):
$ git push origin localbranch:localbranch
使用git branch -a查看所有分支,會看到remotes/origin/localbranch這個遠(yuǎn)程分支,說明新建遠(yuǎn)程分支成功。
建立本地到上游(遠(yuǎn)端)倉的鏈接 --這樣代碼才能提交上去
git branch --set-upstream-to=origin/localbranch
就OK了
刪除遠(yuǎn)程分支
我比較喜歡的簡單方式,推送一個空分支到遠(yuǎn)程分支,其實就相當(dāng)于刪除遠(yuǎn)程分支:
git push origin --delete localbranch
這兩種方式都可以刪除指定的遠(yuǎn)程分支
當(dāng)你遇到POSSIBLE DNS SPOOFING DETECTED! 時,只需要執(zhí)行一行命令就能解決
國慶放假幾天,回來拉代碼,執(zhí)行g(shù)it pull,發(fā)現(xiàn)報WARNING: POSSIBLE DNS SPOOFING DETECTED!錯。

根據(jù)提示可以看到主要是.ssh/known_hosts的第32行發(fā)送沖突,這一行也是我們代碼庫對應(yīng)的公鑰,解決辦法就是把~/.ssh/known_hosts里面對應(yīng)IP節(jié)點的公鑰刪掉。也就是ssh重新驗證
$ ssh-keygen -f 加上圖第二個紅框中的地址 -R 加上圖第一個紅框中的地址
例如:ssh-keygen -f /Users/youName/.ssh/known_hosts -R git.17usoft.com
修改完成后重新驗證會提示是否重新鏈接,輸入yes,如下圖

原因說明:我們在ssh時,openssh會把訪問過計算機(jī)的公鑰(public key)都記錄在~/.ssh/known_hosts。當(dāng)下次訪問相同計算機(jī)時,openssh會核對公鑰。如果公鑰不同,openssh會發(fā)出警告,避免你受到DNS Hijack之類的攻擊。因此我們現(xiàn)在只需要刪除knows_hosts文件中所對應(yīng)的IP節(jié)點的公鑰,然后再ssh IP地址就可以了。仔細(xì)看錯誤提示,也能看到IP地址,因此我們現(xiàn)在只需要刪除knows_hosts文件中所對應(yīng)的IP節(jié)點的公鑰,然后再ssh IP地址就可以了。