Search code examples
gitgit-pullgit-resetgit-fetch

Git update local ignoring few files (is not .gitignore)


Scenario:
 Bitbucket:
  file1 
  file2 
  file3  

 Local:
  file1 - person1 is working on it
  file2 - person2 is working on it
  file3 - common with personal hardcoded configuration
  untracked files

person1 commits and pushes his changes on file1. How person2 can update file1 in his local without resetting file2, file3 and untracked files? It's a while that I'm trying to do it but I still don't find an easy way! Thanks.


Solution

  • Untracked files won't be updated when you fetch new commits from the remote repository. As for file2 and file3 (which I'm assuming are tracked), you'll want to set the skip-worktree flag on those. That way Git won't update them in your working directory.

    From the documentation:

    --[no-]skip-worktree
    When one of these flags is specified, the object name recorded for the paths are not updated.

    More specifically:

    When reading an entry, if it is marked as skip-worktree, then Git pretends its working directory version is up to date and read the index version instead.

    You can set the skip-worktree flag on a specific file with the git-update-index command:

    git update-index --skip-worktree path/to/file2
    

    If you later want to unset the flag, use the --no-skip-worktree option instead:

    git update-index --no-skip-worktree path/to/file2