I am using git and I am doing my development work, which I don't want to push, even by mistake. Is there a method to disable push in certain local repository. One method is to rename the branch, another is to undo push if one does it by mistake, but I hope there should be a more direct method.
            Asked
            
        
        
            Active
            
        
            Viewed 9.3k times
        
    196
            
            
        - 
                    19Please don't delete this as duplicate, the title wording is much easier to find with Google than the "original" question. – Jaakko Oct 19 '18 at 07:33
2 Answers
390
            The following command will let pulls work, but pushes will try to use the URL no_push and fail:
git remote set-url --push origin no_push
 
    
    
        tshepang
        
- 12,111
- 21
- 91
- 136
 
    
    
        Joachim Isaksson
        
- 176,943
- 25
- 281
- 294
- 
                    9
- 
                    17@user984260: I guess you could set the remote for just that branch: `git config branch..remote no_push`. But if the branch is a local development branch, with its own name, is it really a problem? It won't be pushed by default (`git push` with no arguments by default pushes only branches which exist both locally and on the remote) and even if you do push it, you're just creating a new branch on the remote which you can promptly delete. – Cascabel Apr 21 '12 at 16:51
- 
                    Whatever you do, use `git config -l` to verify/get a better understanding. (If it isn't there, it didn't happen ;-) ). Even better structured, use `cat .git/config` – Frank N Mar 12 '17 at 07:14
- 
                    
- 
                    3Thanx! If you have an upstream repo in addition to origin then you can do the following to make sure you can't push to upstream: `git remote set-url --push upstream no_push`. Check the effect with `git remote -v` before and after the change. – Wlad Jan 27 '20 at 16:02
- 
                    How do I undo this change now?? Github isn't working properly and I cannot merge my branch, I can do it locally but now I can't push that... – OZZIE Sep 02 '20 at 12:45
- 
                    1@OZZIE you can use the same `git set-url` command to allow pushes again - it'll be something like `git set-url --push origin git@github.com:my-user/my-repo.git`. If you issue a `git config --list` it's likely that the original setting is there as `remote.origin.url=` – Tim Barrass Feb 23 '22 at 10:28
7
            
            
        Depending on the remote, you may be able to reset its URL to use the read-only Git protocol instead of SSH or HTTPS. E.g., for a project on GitHub, do
git remote set-url <remote> git://github.com/Team/Project.git
where <remote> is commonly origin. git remote -v will give you a list of remotes; those that start with https or have the form <user>@<host>:<path> usually allow pushing.
 
    
    
        Fred Foo
        
- 355,277
- 75
- 744
- 836
- 
                    
- 
                    1@YassineElBadaoui you probably need to add `--push` after `set-url` to just modify for pushing. But [this more recent answer](https://stackoverflow.com/a/10260389/328817) makes the intent clearer when you come back to this in future, I think. – Sam Oct 22 '19 at 12:25
 
    