62

When I do a git pull, from the git bash, the terminal usually runs the pull, updates my local, and then hangs. I'm not sure if it's waiting for me to do something, but I usually exit out of this with CTRL-C. After that, I get that an index.lock is preventing me from doing other things to which I have to delete it. Am I misunderstanding how git pull works?

user3685285
  • 5,396
  • 10
  • 45
  • 89
  • 35
    In the terminal, execute as one statement `GIT_TRACE=true git pull`, and then see if you can see what it is doing when it hangs. – Lasse V. Karlsen May 17 '17 at 17:23
  • Are you on Windows? If so, and if it is hanging during the `git merge` step, do you have some process running that is holding a lock on some file? Windows has "mandatory locking" in which if process *A* has a file locked, and process *B* (Git) tries to *use* that file, process *B* is paused until *A* releases the lock. If you terminate *B* (i.e., ^C out of Git), ideally it should clean up its `index.lock` file (which doesn't use Windows' mandatory locking, it's just an ordinary file Git uses to coordinate with itself), but apparently it doesn't. – torek May 17 '17 at 17:53

13 Answers13

84

You may need to remove unnecessary git objects such as dangling commits & blobs:

git fsck && git gc --prune=now

git-fsck : Verifies the connectivity and validity of the objects in the database
git-gc : Cleanup unnecessary files and optimize the local repository

You can refer here about dangling commits & blobs.

Akif
  • 4,680
  • 2
  • 36
  • 40
  • `git gc --prune=now` did it for me, though it did take about 10-15 minutes to finish. I ran it with `GIT_TRACE=true git gc --prune=now` to verify it was working and not permanently lagging. (`git fsck` lagged for me and didn't seem to help) – skplunkerin Feb 08 '22 at 20:03
9

If you are pulling from a linux machine you may want to check this file:

/etc/ssh/ssh_config

To make sure you aren't setting your default SSH port to something other than 22. Some people get confused between that file and:

/etc/ssh/sshd_config

When they're setting up servers to a non-standard SSH port.

zachaysan
  • 1,646
  • 15
  • 31
7

I am in Windows, and I solved the hang by closing the Visual Studio before doing the pull.

Zac
  • 4,333
  • 3
  • 35
  • 42
  • 4
    (On Mac OS X) I had Visual Studio Code opened and it hung on `git pull`. Closed it. Did `git pull` again and VS Code launched and opened a commit message for the `merge` that was needed because of the `git pull`. Entered a message, saved, closed the window and all was well. – Jheasly Nov 01 '17 at 01:33
  • 1
    I had issues with my network which was blocking the ssh connections, when I read your answer I realized that my problem can be other thing than what I was expecting to be. – allexiusw Aug 23 '21 at 17:41
4

Check SSH_AUTH_SOCK isn't pointing at a stale ssh-agent endpoint. Unset it (unset SSH_AUTH_SOCK) to test.

Barry Kelly
  • 40,676
  • 4
  • 107
  • 184
3

Your ISP might be blocking the traffic. For example, VirginMedia in the UK does something with a proxy for their filters that causes GitHub traffic to hang. I had this issue, and disabling the filter fixed it.

sjmeverett
  • 1,258
  • 1
  • 11
  • 22
3

On Fedora 32, all git commands were hanging for me (only for repos on gitlab), solved with

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

leaving this here in case it helps anyone else

byake
  • 261
  • 2
  • 14
  • I had to run ```bash sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 ``` on Pop_OS! for a GitLab repo too, worked fine for GitHub, very weird. – Brian Di Palma Apr 01 '22 at 19:28
2

As someone who does not use VS Code very often, I too thought git was hanging when I ran git pull. Turns out I was just not very observant. As illustrated in the image below, I was laser focused on the terminal and did not notice the prompt for a username which was the actual cause of the "hang".

Perhaps it is not actually hanging after all

Stephen
  • 3,751
  • 15
  • 36
1

Had same issue, which was related to my ssh client.

This was confirmed trying to connect to a remote ssh server with the '-v' (verbose) option

ssh -v -p PORTNUMBER USERNAME@SERVER

which gave rekey after XXXXXX blocks” before getting stuck.

apt-get purge and apt-get install didn't help, so - before facing the interestign approach here exposed at https://apple.stackexchange.com/a/280800 - I went for an easy reboot, which did the job.

augusto
  • 1,853
  • 16
  • 26
1

I updated git scm 2.32.0 to 2.33.1 version and problem with hanging fetch, push, pull was resolved

Mike
  • 411
  • 4
  • 12
  • thanks! it's working,I just download the latest version of git that solved my problem! – Bub Mar 22 '22 at 06:23
0

My problem was that I had changed my ssh config file and this repository was using a non-existent ssh config.

To check remote config:

git remote -v

To check ssh config:

cat ~/.ssh/config

To fix it, I had to remove remote and add a new one:

git remote add origin
git remote add origin right-ssh-config
0

I faced the same issue while using VSCode. I solved it by toggling off and on the GitHub: Git Authentication setting (in User Settings (UI))

Vladimir Iashin
  • 619
  • 8
  • 18
0

If you are in Linux, close and reopen the terminal and restart your ssh. Enter the following code in the terminal, and try again.

eval "$(ssh-agent -s)"

ssh-add ~/.ssh/putHereYourSSHkey

ssh -T git@github.com
Vega
  • 25,886
  • 26
  • 85
  • 95
  • Can you add some detail about why you believe this will fix the issue? Thanks! – Bek Jan 08 '22 at 15:49
  • Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Jan 08 '22 at 18:05
0

In my case, the problem was solved by switching ssh to use IPv4.

To do that, put AddressFamily inet string into ~/.ssh/config file.

flomaster
  • 980
  • 10
  • 15