我在Git中有两个分支:master和release。它们具有几乎相同的文件,除了release分支具有一些未在master中使用的文件。每次我从发布版切换到主版时,我都需要在结帐前手动删除这些文件。
有没有办法让git在进行切换时可以在本地删除这些文件?
LE:使用git打印屏幕
答案 0 :(得分:4)
您可以将gitignore
用于此目的。
参考:https://git-scm.com/docs/gitignore
答案 1 :(得分:1)
我们假设file
是您只想在分支release
中使用的文件,而不是master
中的文件。
你必须确保
file
已签入release
和file
未已签入master
作为参考,我的方法有效:
$ 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 中的文件。