Git學習中遇到的問題及解決方法
git commit:將當前暫存區中的檔案實際儲存到倉庫的歷史記錄中。通過這些記錄,我們就可以在工作樹中復原檔案。
git merge --no-ff feature-A(分支名)
二、git解決衝突:出現衝突之後,出現衝突的檔案會變成如下的樣子:
標成橘色的部分是自動生成來標識衝突的,可以刪掉。
add in feature-A<<<<<<< HEAD
change in master
master change
=======
commit by feature-C
>>>>>>> feature-C
將檔案改成想要的樣子,並重新新增到快取區,並將快取區中的檔案實際儲存到倉庫的歷史記錄中。
儘量使遠端倉庫的倉庫名與本地倉庫的倉庫名一致以避免混淆,當然不一樣也沒有任何問題。
如果是要從本地倉庫push上去的話,應該在建立遠端倉庫時把自動生成README.md檔案取消,如果不取消會導致一些問題,在下邊會提到。
四、git commit -m與git commit -am
git commit -m 提交已加入暫存區的檔案
git commit -am 提交跟蹤過的檔案,省略了add那步
注意:
新建立的檔案的狀態是未跟蹤,未跟蹤狀態的檔案是不能提交的,必須先新增到暫存區。
也就是說如果沒有新建檔案,只是在已跟蹤檔案中做了修改,就可以使用git commit -am“”
五、git rebase失敗
下面問題出現的原因是rebase之後導致了檔案衝突,使用git rebase --continue,它會提示你哪裡有衝突。
error: could not apply 33404ed... solve conflict
When you have resolved this problem, run "git rebase --continue".If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
CONFLICT (modify/delete): README.md deleted in HEAD and modified in 33404ed... solve conflict. Version 33404ed... solve conflict of README.md left in tree.
六是我個人的理解,也比較亂,以後理解的更深之後會進行改正,也歡迎小夥伴一起交流。
六、git push的問題
目前我遇到的git push問題都是出現衝突
出現問題說需要先git pull
我的理解:
沒有同一個點的commit。如果本地倉庫比遠端倉庫新,就會直接更新。
導致衝突的原因可能是:遠端倉庫的commit狀態與本地倉庫的commit狀態不符。
例:遠端倉庫是空白倉庫時:push不會出現錯誤;遠端倉庫有readme檔案而本地沒有時,會先讓你pull。
還有一個就是歷史衝突問題:
git pull origin master --allow-unrelated-histories//解決後本地倉庫的歷史會與遠端倉庫的歷史合併
問題:git push -u origin master
本地倉庫和遠端倉庫存在具有時間差的commit(網上找的)
git pull --rebase origin master