Git - 在本地删除分支之间的差异

时间:2016-09-07 08:59:12

标签: git

我在Git中有两个分支:master和release。它们具有几乎相同的文件,除了release分支具有一些未在master中使用的文件。每次我从发布版切换到主版时,我都需要在结帐前手动删除这些文件。

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

LE:使用git打印屏幕

enter image description here

2 个答案:

答案 0 :(得分:4)

您可以将gitignore用于此目的。 参考:https://git-scm.com/docs/gitignore

答案 1 :(得分: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要处理的文件。

在这种情况下,可能是

  • 您在release分行,file 未跟踪
  • 您想切换到分支master
  • master中,file由git跟踪,因此您当前未跟踪的文件将在结帐时丢失。

在这种情况下,您可以通过从master中删除文件来解决您的问题,而是将其添加到release:

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 中的文件