2016-09-07 42 views
0

我在Git中拥有2个分支:master和release。他们有几乎相同的文件,除了发布分支有一些文件不在master中使用。每次我从发布版本切换到主版本时,我都需要在完成结账之前手动删除这些文件。Git - 删除本地分支之间的差异

有没有办法让git在执行切换时可以在本地删除这些文件?

LE:用git

enter image description here

+0

@MartinNyolt - 我添加了一个打印屏幕。现在应该更清楚了。 – RBA

+0

未来:如果他们只有重要的信息是错误信息,请不要上传屏幕截图。相反,只需将错误消息粘贴为文本(使用正确的格式)即可。 –

回答

1

假设file仅在分支release你想要的文件,而不是在master。 你必须确保

  • file签入release
  • file住进master

MWE

对于参考,我的方法的工作原理:

$ git init 
Initialized empty Git repository in /tmp/testgit/.git/ 
$ touch a 
$ git add a 
$ git commit -m "master - a" 
[master (root-commit) cf1ffcc] master - a 
1 file changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 a 

# Only file a is present now 
$ ls 
a 

# switch to release branch and create file 

$ git checkout -b release 
Switched to a new branch 'release' 
$ touch file 
$ git add file 
$ git commit -m "release - add file" 
[release 57da037] release - add file 
1 file changed, 0 insertions(+), 0 deletions(-) 
create mode 100644 file 

# both files are present: 

$ ls 
a file 

# checking out master again 

$ git checkout master 
Switched to branch 'master' 

# "file" is not present 

$ ls 
a 

您的问题

我想你的问题是,file实际上是master而不是release(但应反之亦然)。 通过运行git ls-files来确认这一点,它显示了git需要处理的文件。

在这种情况下,可能

  • 你在分支releasefile未经跟踪
  • 要切换到分支master
  • masterfile由git的跟踪,因此您当前未跟踪的文件将通过结帐而丢失。

在这种情况下,你可以通过删除主文件解决您的问题,而是把它添加到发布:

git checkout release 
git add file && git commit 
git checkout master 
git rm file # also remove from branch master, not only file system 
git commit 

这里最重要的是不仅要删除的文件文件系统,但也可以从master分支中删除该文件git

相关问题