Git复习(十)之常见报错和疑问
報錯
情況一:git pull報錯
There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details.git pull <remote> <branch>If you wish to set tracking information for this branch you can do so with:git branch --set-upstream-to=origin/<branch> release其實,輸出的提示信息說的還是比較明白的。
使用git在本地新建一個分支后,需要做遠程分支關聯。如果沒有關聯,git會在下面的操作中提示你顯示的添加關聯。
關聯目的是在執行git pull, git push操作時就不需要指定對應的遠程分支,你只要沒有顯示指定,git pull的時候,就會提示你。
解決方法:
就是按照提示添加一下唄:
git branch --set-upstream-to=origin/remote_branch your_branch其中,origin/remote_branch是你本地分支對應的遠程分支;your_branch是你當前的本地分支。
或者使用
git push origin xxx情況二:git push報錯
To github.com:michaelliao/learngit.git! [rejected] dev -> dev (non-fast-forward) error: failed to push some refs to 'git@github.com:michaelliao/learngit.git' hint: Updates were rejected because the tip of your current branch is behind hint: its remote counterpart. Integrate the remote changes (e.g. hint: 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details.這是因為遠程分支比你的本地更新,有人先于我們提交代碼到遠程
解決方法:
拉取最新代碼,然后在push
git pull情況三:git add報錯
案例一:
Changes not staged for commit可是我們明明有修改啊!
解決方法:
目錄層級不對,找到正確的再次執行命令
案例二:
The following paths are ignored by one of your .gitignore files: App.class Use -f if you really want to add them.因為這個文件被我們忽略了
解決方法:
強制提交
git add -f xxx?疑問
情況一:別人在遠程庫中已經新建好了一個分支,我們想要在本地創建該分支
git checkout dev/master
git pull
git branch -r
git checkout origin/xxx -b xxx
git push origin xxx
情況二:開發新的項目時,我們肯定要新建分支,如果我們/別人已經在遠程庫中新建了一個分支,如果我們也要在該分支上開發,那么可以在本地直接從該遠程庫中創建分
支(實際上同上)
git checkout origin/item-1.9-1125(遠程分支名) -b item-1.9-1125(本地分支名,無所謂叫什么) : 切遠程分支到本地,這樣遠程分支和本地分支就關聯起來了,push的話只會push到該遠程分支
情況三:當我們改完代碼,而且是第一次push,發現push不上去時
git push origin 分支名 -> push到遠程
情況四:如果我們兩個人同時完成一個項目,并且在各自的分支開發,上預發環境或者上線的時候我們需要將兩人的代碼merge到一個分支,此時我們需要新建一個分支,
將兩人的代碼merge到該分支,用這個分支上預發和上線
假定現在兩人都開發完,準備合代碼的分支叫item-merge
a: 從當前的分支新建分支item-merge
? ? git checkout -b?item-merge (已經新建了item-merge分支,該分支包含a的代碼)
b: 已經將自己的代碼push到item-merge
a: git fetch (拉下新分支)
? ? git pull origin item-merge (該分支為想要拉取代碼的分支,這樣我們就將別人的代碼拉到了我們的這個分支)
??在情況四的基礎上,如果第一個人先push到后端并部署了,第二個人在push時會提醒先pull,pull之后發現會有沖突,那么我們在后端庫中找到對應的文件解決沖突
“Accept CurrentChange”接受當前更改,之后在push
情況六:如果我們在本地修改了兩個文件a、b,沒有add也沒有commit,此時我們想要丟棄對a文件的修改,但保留對b文件的修改
git checkout a(想要丟棄的文件名)
情況七:現有a、b兩個文件,且內容相同,我們修改了a文件,如果想要b文件中也有a文件中的修改
git checkout b
git merge a
這樣我們就將a文件的內容合并到了b文件
情況八:發現pull不下來
可能不是在當前分支修改的,要checkout到修改的分支,然后pull,然后checkout回自己的分支,merge一下,之后add、commit、push
情況九:錯誤merge怎么辦
Git錯誤merge怎么辦???Git怎樣撤銷一次分支的合并Merge
git merge了錯誤分支,如何優雅的回退到merge前的狀態?
版本回退
情況九:我只想讓一個文件回退到之前的版本
git checkout commitid xxx(文件名)
?
轉載于:https://www.cnblogs.com/kunmomo/p/11364695.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Git复习(十)之常见报错和疑问的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Git复习(九)之理解git工作区和暂存
- 下一篇: Git复习(十一)之常见命令用法