2016-09-07 43 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

相關問題