git常見問題分析

      

目錄

git merge 結果是 git merge Already up-to-date. 該怎麼解決?

git 上傳至github出現error:your local changes to the following files would to be overwritten解決辦法

$ git init  $ git add .執行git add . 後仍然報changes not staged for commit錯誤的解決方法

git pull 提示錯誤,Your local changes to the following files would be overwritten by merge

Git Pull Failed Pulling is not possible because you have unmerged files.

git提交時報錯:Updates were rejected because the tip of your current branch is behind

github遠程庫覆蓋本地庫

IDEA git修改遠程倉庫地址


 

git merge 結果是 git merge Already up-to-date. 該怎麼解決?

git將主幹合併到當前分支時,出現如下結果:

原因在於:執行git merge前,主幹的代碼沒有更新

正確的操作步驟如下:

1 .切換到主幹

 $ git checkout master

 2. 更新主幹代碼

 $ git pull origin master

3. 切換回分支

 $ git checkout feature/20170527_894373_inventory_order_export_1

4. 執行合併操作

 $ git merge master

 這樣就對了,剩下的就是解決衝突,然後提交代碼

git 上傳至github出現error:your local changes to the following files would to be overwritten解決辦法

windows中的換行符爲 CRLF, 而在linux下的換行符爲LF,所以在執行add . 時出現提示,解決辦法:

$ rm -rf .git  // 刪除.git
$ git config --global core.autocrlf false  //禁用自動轉換  

然後重新執行:

$ git init  
$ git add .
執行git add . 後仍然報changes not staged for commit錯誤的解決方法

如果你的git倉庫下面還有另外一個clone過來的git倉庫,那麼當你正常git add . 然後git commit的時候一定會得到如下圖的報錯:

並且上傳到倉庫的文件夾是空的

這個時候如果你去網上查找解決方案,可能10個人有九個人會告訴你是因爲commit之前沒有執行git add導致的,最後一個人可能知道原因,但是提供的方法可能並不能很好的解決問題

這裏給出完整的解決方案:

1、先強行刪除clone來的目錄下的 .git 文件夾
     刪除方式:在該目錄下打開命令行工具,執行 rd/s/q .git命令

    刪除成功後執行ls .git命令提示如下內容說明刪除成功

2、回到倉庫根目錄刪除倉庫中的空文件夾
    1)git rm -r --cached "themes/materail"

    2)git commit -m "remove empty folder"

    3)git push origin master

 

3、在倉庫根目錄重新提交代碼
    1)git add .

    2)git commit -m "repush"

    3)git push origin master

 

這樣就能保證不會報上面的錯,並且刪除了空文件夾,重新把clone下來的目錄上傳到了倉庫中

最後解釋一下出現這種情況的原因:

由於你 clone 下來的文件夾也是一個 git 倉庫,因此正常的 git add . 是無法提交該文件夾下的文件的,所以我們要做的就是刪除文件夾下的 .git 文件夾,這樣就可以通過  git add . 命令來提交內容了。
 

git pull 提示錯誤,Your local changes to the following files would be overwritten by merge

解決辦法:
1、服務器代碼合併本地代碼

$ git stash     //暫存當前正在進行的工作。
$ git pull   origin master //拉取服務器的代碼
$ git stash pop //合併暫存的代碼

2、服務器代碼覆蓋本地代碼

$git reset --hard  //回滾到上一個版本
$git pull origin master 

Git Pull Failed Pulling is not possible because you have unmerged files.

è¿éåå¾çæè¿°

用Git 下載主幹上的代碼時報錯了,如圖 
 
翻譯成中文:因爲沒有合併文件,拖動是不可能的。因爲一個未解決的衝突而退出。

分析 
看輸出的錯誤日誌,很明顯本地有代碼與主幹代碼衝突,導致pull失敗。 
所以commit—push 但是點擊commit彈出提示框“沒有可提交的內容”證明我本地代碼沒有任何的更改,有一個最笨的方法,就是把本地代碼稍作修改,然後commit—push,果然提交成功了,然後push,還是失敗。

再分析 
在git pull的過程中,如果有衝突,那麼除了衝突的文件之外,其它的文件都會做爲staged區的文件保存起來。 
本地的push和merge會形成MERGE-HEAD(FETCH-HEAD), HEAD(PUSH-HEAD)這樣的引用。HEAD代表本地最近成功push後形成的引用。MERGE-HEAD表示成功pull後形成的引用。可以通過MERGE-HEAD或者HEAD來實現類型與svn revet的效果。 
將本地的衝突文件沖掉,不僅需要reset到MERGE-HEAD或者HEAD,還需要–hard。沒有後面的hard,不會沖掉本地工作區。只會沖掉stage區。 
git reset –hard FETCH_HEAD 

 


 
git pull就會成功。


git提交時報錯:Updates were rejected because the tip of your current branch is behind

出現這樣的問題是由於:自己當前版本低於遠程倉庫版本

有如下幾種解決方法:

1.使用強制push的方法:

 git push -u origin master -f

這樣會使遠程修改丟失,一般是不可取的,尤其是多人協作開發的時候。

2.push前先將遠程repository修改pull下來

git pull origin master

git push -u origin master

3.若不想merge遠程和本地修改,可以先創建新的分支:

git branch [name]

然後push

git push -u origin [name]

github遠程庫覆蓋本地庫

首先,git fetch --all 

    取回遠程庫的所有修改;

然後,git reset --hard origin/master

    指向遠程庫origin的master

IDEA git修改遠程倉庫地址

方法有三種:

方法1.修改命令

git remote set-url origin <url>

方法2.先刪後加

git remote rm origin
git remote add origin [url]

方法3.直接修改config文件


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章