git index.lock มีไฟล์อยู่เมื่อฉันพยายามที่จะส่งมอบ แต่ไม่สามารถลบไฟล์ได้


197

เมื่อฉันทำ 'คอมไพล์ยอมรับ' ฉันได้รับต่อไปนี้:

fatal: Unable to create 'project_path/.git/index.lock': File exists.

อย่างไรก็ตามเมื่อฉันทำls project_path/.git/index.lockมันก็บอกว่าไฟล์ไม่ได้อยู่ มีความคิดเกี่ยวกับสิ่งที่ฉันควรทำอย่างไร? ฉันยังสังเกตเห็นว่า project_path / .git เป็นเจ้าของโดย root ไม่แน่ใจว่าเกี่ยวข้องกับปัญหาที่ฉันพบหรือไม่

เวอร์ชัน git คือ 1.7.5.4

แก้ไข: ดูเหมือนว่าปัญหาที่น่าเป็นไปได้มากที่สุดคือกระบวนการอื่นที่ฉันเรียกใช้นั่นคือการเขียน (ไม่รู้จักฉัน) ไปยังไดเรกทอรีโครงการ ฉันรีสตาร์ทเครื่องแล้วก็ไม่มีปัญหา


3
อาจเป็นปัญหาสิทธิ์ที่ Git ถือว่าเนื่องจากไม่สามารถสร้างไฟล์ที่มีอยู่แล้ว คุณลองเป็นเจ้าของไดเรกทอรีหรือดำเนินการคำสั่งของคุณโดยใช้ sudo หรือไม่?

1
ฉันคิดว่าคำอธิบายของคุณในแอปอื่นที่เข้าถึง repo git นั้นถูกต้อง มีปัญหาเดียวกันระหว่างการรีบูต Gitx กำลังทำงานอยู่ เมื่อฉันเลิกมันคอมไพล์ทำงานได้ดี
ผู้ที่

2
@asahi: คุณอาจต้องการรับคำตอบหรือไม่? สิ่งนี้จะช่วยผู้อ่านในอนาคต
ลดขนาด


3
@asahi: คุณสามารถโพสต์เนื้อหาของการแก้ไขของคุณ (ซึ่งเป็นวิธีการแก้ปัญหา) เป็นคำตอบแล้วยอมรับว่า (แม้ว่าวิธีแก้ปัญหาทั่วไปที่มากกว่า 'รีสตาร์ทเครื่อง' ก็คือกระบวนการอื่นกำลังเข้าถึงไดเรกทอรี แต่การรีสตาร์ทเพียงแค่ตัดผ่าน Gordian ปมของการพยายามคิดว่าอันไหนและทำไม:) ในกรณีของฉันมันคือ IDE ของฉัน) อย่างไรก็ตามผู้คนมักจะตอบคำถามของตัวเองเมื่อพวกเขาพบวิธีแก้ปัญหาของตัวเองซึ่งคุณทำ
Wilson F

คำตอบ:


330

นี่อาจเป็นคำตอบเก่า แต่ฉันหวังว่านี่จะมีประโยชน์มากกว่าสำหรับผู้ที่ต้องการโซลูชันนี้

บน linux / unix / gitbash / cygwin ให้ลอง

rm -f .git/index.lock

บนพรอมต์คำสั่งของ Windows ลอง:

del .git\index.lock


1
ฉันเห็นว่าบางครั้งไฟล์ล็อคถูกลบโดยอัตโนมัติ เบาะแสใด ๆ ที่ทำให้ไฟล์นี้ถูกลบด้วยตนเอง
Nrj

ฉันไม่มี index.lock ทำอะไร? :(
Alex C

56
เนื่องจากปัญหาในคำถามคือเขาไม่สามารถลบไฟล์ได้ทำไมคุณคิดว่าการพยายามลบไฟล์ควรเป็นวิธีแก้ปัญหา
skyking

4
สำหรับฉันปิดและเปิด SourceTree แก้ปัญหา ... ชั่วคราวฉันคิดว่า
แอนดรู

1
@skyking ในคำถามเดิมมีข้อผิดพลาดที่บอกว่าfatal: Unable to create 'project_path/.git/index.lock': File exists.มันมี "ไฟล์ที่มีอยู่" และการลบมันจะแก้ปัญหาง่ายๆ ทำไมฉันถึงแนะนำให้ลบไฟล์ถ้ามันไม่ได้อยู่ในคำถามเดิม?
Ryan S

40

สำหรับ Windows:

  • จากคอนโซล PowerShell ที่เปิดเป็นผู้ดูแลระบบให้ลอง
> rm -Force ./.git/index.lock
  • หากไม่ได้ผลคุณจะต้องฆ่ากระบวนการ git.exe ทั้งหมด
> taskkill /F /IM git.exe
SUCCESS: The process "git.exe" with PID 20448 has been terminated.
SUCCESS: The process "git.exe" with PID 11312 has been terminated.
SUCCESS: The process "git.exe" with PID 23868 has been terminated.
SUCCESS: The process "git.exe" with PID 27496 has been terminated.
SUCCESS: The process "git.exe" with PID 33480 has been terminated.
SUCCESS: The process "git.exe" with PID 28036 has been terminated.
> rm -Force ./.git/index.lock

1
ไม่สามารถประมวลผลพารามิเตอร์ได้เนื่องจากชื่อพารามิเตอร์ 'f' ไม่ชัดเจน
3pitt

ขอบคุณ @ MikePalmice ฉันได้อัปเดตเป็น -Force ดูเหมือนว่าพวกเขาเปลี่ยน API
Andrei Epure

20

บนแพลตฟอร์ม Windows ที่ใช้ Visual Studio 2015 RC (v4.6.00057) ร่วมกับ SourceTree (v1.6.14.0) จะให้ข้อผิดพลาดนี้เช่นกัน

โซลูชัน: สมมติว่าคุณต้องการใช้แผนภูมิต้นไม้เป็นตัวจัดการซอร์สโค้ดเพียงปิดใช้งานผู้ให้บริการควบคุมแหล่งที่มาภายใน Visual Studio ดังนี้:

  1. ไปที่: เครื่องมือ> ตัวเลือก> การควบคุมแหล่งที่มา
  2. เลือกปลั๊กอินการควบคุมแหล่งที่มาปัจจุบันเป็น: ไม่มี

แม้ว่า VS ของฉันไม่ควรแม้แต่จะเข้าถึงที่เก็บข้อมูลเหล่านี้นี่เป็นปัญหาอยู่แล้วเมื่อทำการรีบูตด้วย SourceTree
Kajetan Abt

ขอขอบคุณปัญหายังคงอยู่ที่นั่นกับอัปเดต 3
Elger Mensonides

การปิด Visual Studio ยังใช้งานได้ (ลบไฟล์ index.lock)
misterbee

10
  1. ตรวจสอบว่าคอมไพล์ยังทำงานอยู่หรือไม่ (ps -ef | grep git)
  2. ถ้าไม่ลบไฟล์ที่ถูกล็อค
  3. ถ้าใช่ฆ่ากระบวนการ git ในตอนแรก

9

ลอง

rm -f ./.git/index.lock

หากคุณไม่มีกระบวนการ git อื่นที่กำลังทำงานอยู่ให้ลบไฟล์ index.lock ของโครงการที่เกี่ยวข้อง


ทำงานกับสภาพแวดล้อมของ mac ของฉัน
Adam Hurwitz

6

เพิ่งมีปัญหานี้ ... Gitbox ผิดพลาด ดังนั้นบางทีคุณอาจมี GUI ที่ทำงานซึ่งก่อให้เกิดปัญหา


มันไม่ใช่ GUI แต่ฉันมีกระบวนการแยกต่างหากที่เขียนไปยังไดเรกทอรีโครงการ ฉันไม่สามารถคิดออกได้และมันทำให้ฉันบ้า
asahi

ดูเหมือนว่า GitX จะทำให้เกิดปัญหานี้เช่นกัน
Glutexo

6 ปีต่อมามันเป็น Atom สำหรับฉัน
Milk

6

สิ่งนี้เกิดขึ้นเมื่อคุณยกเลิกการดึงจากจุดเริ่มต้นตรงกลาง

ดังนั้นสิ่งที่คุณสามารถทำได้คือลบไฟล์ index.lock จากไดเรกทอรี. git ของคุณด้วยตนเอง

rm -f ./.git/index.lock

cd ในไดเรกทอรีโครงการของคุณและเรียกใช้คำสั่งนี้


8
เนื่องจากปัญหาในคำถามคือเขาไม่สามารถลบไฟล์ได้ทำไมคุณคิดว่าการพยายามลบไฟล์ควรเป็นวิธีแก้ปัญหา
skyking

+1 @skyking การลบไฟล์นั้นชัดเจนปัญหาคือไม่มีไฟล์ที่จะลบและปัญหายังคงอยู่
Catsunami

6
  1. ปิดทุกหน้าต่างที่อาจส่งผลกระทบต่อไฟล์. git / index.lock นี้
  2. ลบไฟล์. git / index.lock
  3. เปิดตัวแก้ไขบรรทัดคำสั่งและ cd ไปยังตำแหน่งของไฟล์ git ของคุณ

(หากไฟล์ถูกสร้างขึ้นเพียงแค่จาก cd ไปที่ตำแหน่งนั้นปัญหาคือตัวแก้ไขของคุณปิดตัวแก้ไขอย่าใช้ตัวแก้ไขนี้อีกครั้งสำหรับงานนี้เปิดตัวแก้ไขชนิดอื่น - windows power shell หรือเพียง cmd ตอนนี้ คุณสามารถใช้คำสั่ง git เพื่อดำเนินการต่อ)


5

อาจเป็นไปได้ (เกิดขึ้นกับฉัน) คำสั่งlsบอกว่าไม่มีอยู่เนื่องจากผู้ใช้ปัจจุบันไม่มีสิทธิ์ในการเข้าถึงไดเรกทอรีหรือไฟล์นั้น

ลบล็อคออกและตรวจสอบให้แน่ใจว่าคุณกำลังใช้งานคอมไพล์กับผู้ใช้ที่ถูกต้องเพื่อหลีกเลี่ยงปัญหาการอนุญาต

หากคุณอยู่ในกล่อง GNU / Linux ด้วยคำสั่งsudo :

sudo rm project_path / .git / index.lock


ใน Windows คุณสามารถตรวจสอบเพื่อดูว่าโฟลเดอร์เป็นแบบอ่านอย่างเดียวด้วยการคลิกขวา -> คุณสมบัติ -> คุณสมบัติ
Matt

เนื่องจากปัญหาในคำถามคือไฟล์นั้นไม่มีอยู่คุณคิดว่าทำไมการพยายามลบไฟล์ควรเป็นวิธีแก้ปัญหา
skyking

@skyking ปัญหาการอนุญาตแสดงข้อผิดพลาดเดียวกัน อันที่จริงฉันมาถึงคำถามนี้เพราะชื่อ ฉันเขียนคำตอบของฉันเป็นวิธีแก้ปัญหาที่เป็นไปได้และคะแนนโหวตบางยืนยันว่ามันเกิดขึ้นกับคนอื่นเช่นกัน;)
Caligari

@ Caligari ไม่ตรง ls project_path/.git/index.lockปัญหาการขออนุญาตให้คำตอบอีก
skyking

5

del .git\index.lock ทำงานให้ฉัน

ฉันกำลังเผชิญปัญหานี้ในขณะที่ชำระเงินสาขาใหม่จากสาขาต้นแบบ

ชำระเงินเกิดขึ้นได้อย่างง่ายดายหลังจากลบindex.lockไฟล์


4

บางครั้ง Git สร้างไฟล์ล็อคที่เชื่อมโยงกับ repo ของคุณในขณะที่คุณทำการเปลี่ยนแปลงหรือเป็นไปได้มากที่สุดเมื่อคุณใช้โมดูลย่อย ข้อความแสดงข้อผิดพลาดจะแสดงเส้นทางของไฟล์ล็อค การแก้ไข: เพียงแค่ไปที่เส้นทางใน terminal ด้วยตนเองและลบไฟล์ล็อคโดย $ rm index.lock

มันควรจะช่วย


4

ฉันมีปัญหากับ SourceTree เมื่อสลับสาขาโดยดับเบิลคลิกที่มัน ปัญหาไม่ได้เกิดขึ้นบ่อยนักและAtlassian รู้ดีเกี่ยวกับเรื่องนี้แต่พวกเขาตัดสินใจที่จะไม่แก้ไข

โชคดีที่มีทางออก แทนที่จะคลิกสองครั้งที่สาขาที่คุณต้องการเปลี่ยนเพียงคลิกขวาแล้วเลือก "ชำระเงิน [ชื่อสาขา]" มันควรจะประสบความสำเร็จในขณะนี้


ขอบคุณคลิกขวา> เช็คเอาต์ทำงานแทน ข้อความแสดงข้อผิดพลาดค่อนข้างทำให้เข้าใจผิดโดยเฉพาะอย่างยิ่งเมื่อ index.lock ไม่มีอยู่
เออร์เนสต์

4

ฉันได้เจอกับสถานการณ์เดียวกัน ฉันยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ ในรหัสท้องถิ่นของฉัน ฉันเพิ่งแก้ไขไฟล์และย้อนกลับ ฉันเพิ่งลบไฟล์ด้านล่างในโฟลเดอร์. git ที่ซ่อนอยู่ มันได้ผล!

project_path / .git / index.lock


3

นอกจากว่าคุณตั้งใจให้รูทเป็นเจ้าของ repo ของคุณเสียงนี้ดูเหมือนว่าคุณรันคำสั่ง Git ในฐานะรูทโดยไม่ตั้งใจ (อาจเป็น clone / init เริ่มต้น) หากคุณต้องการทำเช่นนั้นคุณจะต้องใช้ชีวิตด้วยการรันคำสั่ง Git ทั้งหมดใน repo ในฐานะรูท หากคุณไม่ลองวิ่งsudo chown your-user[:your-group] -R .gitไปเป็นเจ้าของแล้วดูว่าสิ่งต่าง ๆ ใช้งานได้หรือไม่


ในกรณีของฉันฉันทำเลอะโหมดของไฟล์และไดเรกทอรีภายใน.gitและฉันแก้ไขด้วย: find .git -type f -exec chmod 644 {} \;และfind .git -type d -exec chmod 755 {} \;ฉันก็ยุ่งโหมดเมื่อย้ายโครงการคอมไพล์ของฉันจากคอมพิวเตอร์เครื่องหนึ่งไปยังอีก
user3405291

ในกรณีของฉันฉันเพิ่มสิทธิ์การเขียนลงในไฟล์. gitsudo chmod g+w .git -R
Beatriz Fonseca

2

ลูกค้า git หลายคนที่ทำงานในพื้นที่เก็บข้อมูลเดียวกันแข่งขันเพื่อล็อค ลูกค้าแต่ละรายควรรอจนกว่าอีกฝ่ายจะปลดล็อคเพื่อเป็นพลเมืองที่ดี สำหรับเรา SourceTree หรือ MSVS ดูเหมือนจะทำการบำรุงรักษาบางอย่างในพื้นหลังในขณะที่เรากำลังเรียกใช้สคริปต์การยอมรับขนาดใหญ่

บางที 'git' เองควรสนับสนุนอาร์กิวเมนต์ '--retriesWhenLocked 5' เพื่อรองรับการลองใหม่ หรือแม้กระทั่งเริ่มต้นนี้เมื่อทำงานด้วยตนเอง

นี่คือเสื้อคลุม PowerShell รอบ ๆ git ชื่อ "gitr" ที่ลองอีกครั้งจนกระทั่ง index.lock หายไปโดยใช้ค่าเริ่มต้น 5 ครั้งและ 3 วินาทีระหว่างแต่ละรายการ มันไม่เคยลบ index.lock โดยสมมติว่าผู้ใช้ควรเข้ามาแทรกแซง มันถูกดึงมาจากสคริปต์การคอมมิชชันที่ใหญ่ขึ้น มีเพียงการทดสอบขั้นต่ำที่มีอาร์กิวเมนต์อย่างง่าย

  • คัดลอกสคริปต์ไปที่ C: \ bin และเพิ่ม C: \ bin ไปที่ $ PATH
  • จาก PS1> gitr - ช่วย
  • จาก DOS%> powershell gitr - ช่วย

gitr.ps1

    #requires -version 2
    <#
    .SYNOPSIS
        gitr
    .DESCRIPTION
        Run "git" as an external process with retry and capturing stdout stderr.
    .NOTES  
      2017/05/16 crokusek: Initial version
    #>

    #---------------------------------------------------------[Initializations]--------------------------------------------------------

    #Set Error Action 
    $ErrorActionPreference = "Stop";

    #----------------------------------------------------------[Declarations]----------------------------------------------------------

    $scriptDir = Split-Path $script:MyInvocation.MyCommand.Path
    #Set-Location $scriptDir

    ## Disabled logging
    # Log File 
    # $logFile = "$($scriptDir)\getr.log"
    # If (Test-Path $logFile) { Clear-Content $logFile }

    #-----------------------------------------------------------[Functions]------------------------------------------------------------

    Function Log([string]$msg, [bool]$echo = $true)
    {
        $timestamp = "$(get-date -Format 'yyyy/MM/dd HH:mm:ss'):  " 
        $fullmsg = $msg -replace '(?ms)^', $timestamp  # the (?ms) enables multiline mode

        ## Disabled Logging 
        # Add-content $LogFile -value $fullmsg

        if ($echo)
        {
            Write-Host $msg
        }
    }

    Function ExecSimple([string]$command, [bool]$echo=$true, [bool]$stopOnNonZeroExitCode=$true)
    {
        $command, $args = $command -split " "
        return Exec $command $args $echo $stopOnNonZeroExitCode
    }

    Function Exec([string]$exe, [string[]]$arguments, [bool]$echo=$true, [bool]$stopOnNonZeroExitCode=$true)
    {   
        # Passing $args (list) as a single parameter is the most flexible, it supports spaces and double quotes

        $orgErrorActionPreference = $ErrorActionPreference 
        Try
        {           
            $error.clear()  # this apparently catches all the stderr pipe lines

            if ($false -and $exe -eq 'git')  # todo make this a generic flag
            {
                $exe = "$($exe) 2>&1"
            }

            $output = ""

            $argflattened = $arguments -join ' '
            Log "`n% $($exe) $($arguments)`n"

            # This way some advantages over Invoke-Expressions or Start-Process for some cases:
            #      - merges stdout/stderr line by line properly, 
            #      - echoes the output live as it is streamed to the current window,
            #      - waits for completion
            #      - works when calling both console and windows executables.
            #       
            $ErrorActionPreference = "Continue"  # required in order to catch more than 1 stderr line in the exception

            if ($echo)
            {
                # Using "cmd.exe" allows the stderr -> stdout redirection to work properly.  Otherwise the 2>&1 runs after PS for 
                # some reason.  When a command such as "git" writes to stderr, powershell was terminating on the first stderr 
                # line (and stops capturing additional lines).
                #
                # but unfortuantely cmd has some bizarre de-quoting rules that weren't working for all cases. 
                #& cmd /c "`"" $exe $arguments "`"" | Tee-Object -variable output | Write-Host | out-null           

                # This is simplest but has some issues with stderr/stdout (stderr caught as exception below)
                #
                & $exe $arguments 2>&1 | tee -variable output | Write-Host | out-null 
            }
            else
            {           
                & $exe $arguments 2>&1 | tee -variable output | out-null 
            }

            $output = $output -join "`r`n"                  

            if ($stopOnNonZeroExitCode -and !$LASTEXITCODE -eq 0)
            {           
                throw [System.Exception] "Exit code ($($LASTEXITCODE)) was non-zero. Output:`n$($output)"
            }       
        }
        catch [System.Management.Automation.RemoteException]
        {
            $output = $_.Exception.ToString().Replace("System.Management.Automation.RemoteException:", "").Trim()

            if ($output.Contains("fatal")) 
            {
                throw 
            }

            if ($echo)
            {
                Log $output
            }
        }
        finally
        {
            $ErrorActionPreference = $orgErrorActionPreference;
        }

        if (-not $output -eq "")
        {
            Log $output $false  # don't echo to screen as the pipe above did    
        }

        return $output
    }

    Function ExecWithRetry([string]$exe, [string[]]$arguments, [bool]$echo=$true, [bool]$stopOnNonZeroExitCode=$true, 
                          [int]$maxRetries = 5, [int]$msDelay = 3000, [AllowNull()][string]$exceptionMustContain = $null)
    {
        for ($i = 0; $i -lt $maxRetries; $i++)
        {
            try
            {
                Exec $exe $arguments $echo $stopOnNonZeroExitCode
                return
            }
            catch
            {
                if (-not [string]::IsNullOrEmpty($exceptionMustContain) -and $_.Exception.ToString().Contains($exceptionMustContain))
                {
                    Log "Last Error from $($exe) is retryable ($($i + 1) of $($maxRetries))" $true
                    Start-Sleep -Milliseconds ($msDelay);
                    continue
                }

                throw
            }
        }

        throw [System.Exception] "Unable to successfully exec '$($exe)' within $($maxRetries) attempts."
    }

    Function GitWithRetry([string[]]$arguments, [bool]$echo=$true)
    {
        ExecWithRetry "git" $arguments $echo -exceptionMustContain "Another git process seems to be running"
    }

#-----------------------------------------------------------[Main]------------------------------------------------------------

function Main([string[]]$arguments)
{   
    GitWithRetry @($arguments)
}


#-------------------------------------- Startup ------------------------------------
try 
{
    Main $args
    Exit 0
}    
catch
{
    #Log "*** A fatal error occured: $($_.Exception)"
    #Read-Host -Prompt "`nA fatal error occurred, press enter to close."    
    exit 1
}

2

ฉันมีคำถามนี้ใน windows 10

เมื่อฉันลองเดล./.git/index.lockมันก็บอกฉันcannot remove 'index.lock': Device or resource busy

ในที่สุดฉันก็มีเหตุผล:

คอมพิวเตอร์มีสองขั้นตอนในการใช้ git:

  • คอมไพล์ทุบตี
  • cmder

ดังนั้นฉันใช้ cmder.exe เพื่อgit commitมันจะเกิดข้อผิดพลาด

ดังนั้นการแก้ปัญหาคือการใช้งานgit bashหรือยุติgit bashแล้วใช้ cmder.exe


1

ฉันมีข้อผิดพลาดเดียวกันนี้แน่นอน แต่ปัญหาไม่ใช่ไฟล์ล็อค แต่ปัญหาคือฉันได้คัดลอกเนื้อหาของ repo git อื่นไปยัง repo นี้รวมถึงโฟลเดอร์. git ที่มองไม่เห็น ดังนั้น SourceTree จึงสับสนเกี่ยวกับ repo ที่ฉันต้องการจัดลำดับไฟล์ให้ (มีความไม่ตรงกันระหว่าง repo SourceTree ที่คิดว่าฉันเข้ามา


1

ฉันมีปัญหากับ TortoiseGit กับ Cygwin บน Windows ฉันไม่สามารถลบลบ. /.git/index.lock แม้ว่าจะมีสิทธิ์ระดับผู้ดูแลระบบฉันก็ลองทั้ง Cygwin และ command prompt มันบอกว่าไฟล์นั้นถูกใช้งานโดยกระบวนการอื่น

ฉันพบว่าฉันมี TortoiseProc.exe ทำงานอยู่ 2 อินสแตนซ์ ฉันฆ่าหนึ่งในนั้นและปิด windows explorer windows ของฉันทั้งหมดจากนั้นสามารถลบไฟล์ได้ ฉันไม่รู้ว่าการฆ่าอินสแตนซ์ของ TortoiseProc.exe เป็นวิธีแก้ปัญหาหรือปิด windows explorer windows


1

ทางออกสำหรับฉันคือการลบไฟล์. index และอนุญาตให้ Git สร้างใหม่อีกครั้ง


1

ฉันไม่มีไฟล์ inex.lock ที่จะลบ แต่สิ่งที่ใช้ได้ผลสำหรับฉันคือลบการตรวจสอบอย่างอ่านอย่างเดียวจากหน้าต่างคุณสมบัติของกล่องโต้ตอบคุณสมบัติของโฟลเดอร์



1

เริ่มต้นคอมไพล์ 2.8.4 (มิถุนายน 2016)สิ่งนี้ไม่ควรเกิดขึ้นอีก

ดูที่ปัญหา 755ซึ่งควรบรรเทาปัญหาด้วย (ส่ง2db0641 ):

ตรวจสอบให้แน่ใจว่าการจัดการไฟล์ชั่วคราวไม่ได้รับการสืบทอดโดยกระบวนการลูก

index.lockป้องกันไม่ให้กระบวนการที่เด็กจากการสืบทอดจับเพื่อ


1

ในแอปพลิเคชัน sourceTree ของฉันฉันไม่สามารถกระทำหรือสลับไปใช้การมอบหมาย / brach อื่น ๆ ได้ เวลานั้นแสดงข้อผิดพลาดเช่น

ร้ายแรง: ไม่สามารถสร้าง blah blah blah ..

ฉันเพิ่งแก้ไขปัญหานี้โดยโฟลเดอร์ goto .git (ในโครงการ Explorer Dir) และลบดัชนี ----- [ประเภทไฟล์: ไฟล์ LOCK]. ตอนนี้ฉันกลับเข้าใช้งานแหล่งที่มา ..

โปรดตรวจสอบให้แน่ใจว่าไฟล์ล็อคดัชนี .. สมมติว่าคุณไม่ได้รับประเภทไฟล์เปลี่ยนการตั้งค่ามุมมองไฟล์ในคอมพิวเตอร์ หมายเหตุ: โฟลเดอร์. git ปกติแล้วจะเป็นโฟลเดอร์ประเภทซ่อนอยู่


1

สิ่งที่ฉันทำคือ:

git rebase --abort และรีสตาร์ท rebase

อย่างที่แอนดรูว์พูดถึงฉันก็ใช้ PHPStorm เมื่อเกิดเหตุการณ์เช่นนี้ ไม่จำเป็นต้องปิดมัน


1

ก่อนอื่นคุณต้องนำทางไปยังโฟลเดอร์เฉพาะของโครงการของคุณ .. เช่นถ้าชื่อโครงการของคุณเป็นโครงการแรกแล้วไปที่ไดเรกทอรีของโครงการ .. จากนั้นพิมพ์ cd .git จากนั้นหลังจากนำทางไปยังโฟลเดอร์ประเภท git del index.lock หลังจาก การลบไฟล์ index.lock .. คุณจะสามารถคอมมิชชันและพุชเหมือนก่อนหน้านี้


1

ในกรณีของฉันมันเป็นหน้าต่างไม่ปิดตัวลงอย่างสมบูรณ์

Windows ถูกไฮเบอร์เนตปฏิเสธที่จะเมานต์

โอกาสที่ Windows จะจำศีลจริงๆ Windows จะดำเนินการนี้โดยอัตโนมัติเมื่อคุณบอกให้ปิดตามปกติ ประโยชน์คือคุณจะได้รับเวลาเริ่มต้นที่รวดเร็วยิ่งขึ้น

ในการปิดระบบ Windows โดยไม่ต้องไฮเบอร์เนตให้ทำตามคำสั่งต่อไปนี้ใน Windows:

shutdown /s

คุณอาจต้องการรวม/t 0ไว้สำหรับการปิดเครื่องทันที

ฉันได้พบกับบทช่วยสอนที่ดีในการตั้งค่าตัวเรียกใช้งานสำหรับสิ่งนี้: วิธีการปิดระบบเต็มรูปแบบใน Windows 8 โดยไม่ปิดการใช้งานไฮบริดบูต

วิธีที่ง่ายกว่าในการปิด Windows จริง ๆ ก็คือ 'เริ่มต้นใหม่' (แทนที่จะเป็น 'ปิดเครื่อง') แต่จากนั้นขัดขวางกระบวนการบูตและบูต Linux แทนที่จะปล่อยให้มันบูต Windows

เครดิต : nobar


1

สิ่งนี้อาจเกิดขึ้นได้หากคุณใช้ไคลเอ็นต์คอมไพล์บรรทัดคำสั่งสำรองเช่นฮับฮับ

ฉันใช้ฮับแทนนามแฝงสำหรับ git มาสองสามปี แต่เมื่อเร็ว ๆ นี้ได้เขียนสคริปต์ทุบตีที่ใช้งานคอมไพล์แล้วและเริ่มได้รับการล็อกดัชนีนี้

ฉันหาการแก้ไขไม่ได้จนกว่าฉันจะจำได้ว่าฉันกำลังใช้ฮับอยู่แทนที่จะเป็นคอมไพล์ ฉันลบมันแล้วปัญหาก็หายไป!


0

รับข้อผิดพลาด:

Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
fatal: Unable to create '/home/user/project/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

แต่ฉันไม่พบ (หรือลบ) ไฟล์. git / index.lock

ในกรณีของฉัน git-cola กำลังทำงานอยู่!

เห็นได้ชัดว่ามันสร้าง. git / index.lock ทุกครั้งหรือเกิดจากการ rebase ที่ฉันทำในบรรทัดคำสั่งและในระหว่างที่ฉันได้รับข้อผิดพลาด - ดังนั้น git-cola เห็นได้ชัดว่า "รบกวน" การรันบรรทัดคำสั่งของ Git (หรือการดำเนินการบางอย่างของ Git CLI)

นี่คือการแก้ไขโดยการปิด git-cola ในระหว่างคำสั่ง git rebase


0

บางครั้งไคลเอ็นต์ Git อื่นอาจรบกวนเมื่อมีการติดตั้งหลายรายการ

กล่าวคือ ตรวจสอบให้แน่ใจว่ามี Task Manager หรือGet-Processที่TGitCacheTortoiseGit ไม่ทำงานในพื้นหลัง


0

ฉันมีปัญหาเดียวกันเมื่อเร็ว ๆ นี้ หากคุณจะตรวจสอบข้อความแสดงข้อผิดพลาดทั้งหมดมันก็บอกว่ามีกระบวนการบางอย่างที่ใช้กระบวนการ git ที่บล็อกคุณจากการลบ index.lock คุณอาจมี IDE แบบเปิดเช่น Visual Studio หรือซอฟต์แวร์ที่เกี่ยวข้องที่คอมไพล์รวมอยู่ ปิดและลอง stashing ไฟล์ของคุณอีกครั้ง หวังว่ามันจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.