1. 程式人生 > >Git學習中遇到的問題及解決方法

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".

Could not apply 33404ed... rebase history

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。
還有一個就是歷史衝突問題:

pull的時候refusing to merge unrelated histories(拒絕合併不相關的歷史)
git pull origin master --allow-unrelated-histories//解決後本地倉庫的歷史會與遠端倉庫的歷史合併
問題:git push -u origin master 
本地倉庫和遠端倉庫存在具有時間差的commit(網上找的)

git pull --rebase origin master