2017年7月18日 星期二

[ Git 常見問題 ] How do I force “git pull” to overwrite local files?

Source From Here 
Question 
How do I force an overwrite of local files on a git pull? The scenario is following: 
1. A team member is modifying the templates for a website we are working on
2. They are adding some images to the images directory (but forgets to add them under source control)
3. They are sending the images by mail, later, to me
4. I'm adding the images under the source control and pushing them to GitHub together with other changes
5. They cannot pull updates from GitHub because Git doesn't want to overwrite their files.

The errors I'm getting are: 
error: Untracked working tree file 'public/images/icon.gif' would be overwritten by merge.

How do I force Git to overwrite them? The person is a designer - usually I resolve all the conflicts by hand, so the server has the most recent version that they just needs to update on their computer. 

How-To 
If you have any files that are not tracked by Git (e.g. uploaded user content), these files will not be affected. I think this is the right way: 
// -all: Fetch all remotes.
# git fetch --all

Then, you have two options: 
// --hard: Resets the index and working tree. Any changes to tracked files in the working tree since are discarded.
# git reset --hard origin/master

OR If you are on some other branch: 
# git reset --hard origin/

Explanation: 
git fetch downloads the latest from remote without trying to merge or rebase anything. Then the git reset resets the master branch to what you just fetched. The --hard option changes all the files in your working tree to match the files in origin/master. It's worth noting that it is possible to maintain current local commits by creating a branch from master before resetting: 
# git checkout master
# git branch new-branch-to-save-current-commits
# git fetch --all
# git reset --hard origin/master

After this, all of the old commits will be kept in new-branch-to-save-current-commits. Uncommitted changes however (even staged), will be lost. Make sure to stage and commit anything you need. 

Supplement 
Basic Git commands

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...