2013-10-17 55 views
0

我已將從「主」到「穩定」分支工作的分支切換到該分支,並進行了修改並提交/推送到該分支。切換回「主」並開始實施軟件的新功能。但是當我試圖添加我的修改時,只有修改或刪除的文件似乎被添加到存儲庫中。我創建的新產品根本沒有出現!更改分支會使我的新文件僅出現在舊分支上

因此,我將所有文件複製到計算機中的新位置,將分支再次切換到「stable」,令我驚訝的是我的新文件!我刪除了這些文件,以確保在該分支中未做任何修改,切換回「主」,從備份複製文件並且沒有出現新文件。

我已經做了這一千次,這是第一次發生這種情況。我使用SourceTree,但爲此我也嘗試了git bash(我沒有太多的知識)。

發生了什麼事?爲什麼我的新文件「附加」到「穩定」分支?我怎樣才能解決這個問題?

在此先感謝。

更新:
我做了其他文件夾中的同一個版本庫的克隆,看看事情的工作,但我沒有成功。問題仍然存在。

+0

'但是,當我試圖添加我的修改時,只有修改或刪除的文件似乎被添加到存儲庫中。「所以,您不能將這些文件添加到master分支,即使它們存在嗎? –

+0

檢查我編輯的答案 –

+0

是的,確切!文件在那裏,不在.gitignore或gitignore_global中。他們完全有資格被添加:) 我現在在SourceTree上注意到的一點是,分支與他們的顏色切換。通常情況下,主人是藍色的,第一個分支是紫色的,但在這裏他們是倒立的。 – Kleber

回答

1

我從你的問題的理解,你體改,添加一個分支(stable),當你切換到另一個分支(master)提交的文件,你是不是能夠找到你的master分支的變化。

爲了解決這個問題,您需要將分支穩定器合併到分支主控中。 git會跟蹤每個分支對跟蹤文件的更改,並且要查看對另一個分支中的某個分支所做的更改,您需要明確告訴它合併這些更改。

假設所有代碼都在這兩個分支的工作代碼和你已經藏匿的新變化(使用git stash),則可以使用

git checkout master 
git merge stable 

這可能在某些拋出合併的穩定分支到主分支如果您進一步研究並提交了一些通用文件,並且您的分支機構已經發生分歧,則合併衝突,因此您可能需要手動解決這些衝突。

編輯

OP在他的評論說,git add . --force爲他工作。

這意味着,主分支上的.gitignore模式之一忽略了主分支的所有本地更改。我會建議comamap(所有)來自兩個分支的.gitignore文件,並確定哪個模式導致問題。

git add man page

的git的add命令將默認不添加忽略的文件。如果在命令行中明確指定了任何被忽略的文件,那麼git add將失敗並顯示被忽略的文件列表。忽略由Git執行的目錄遞歸或文件名匹配所達到的文件(在shell之前引用您的globs)將被忽略。 git add命令可用於使用-f(強制)選項添加忽略的文件。

+0

最後是'gitignore'文件! 我試圖添加一個文本文件到幾個文件夾,並看到只有其中一個拒絕添加它。刪除了'gitignore'文件,一切都恢復正常。所以我打開文件,看到第一行: 'bin * /' 而忽略文件的文件夾是'Bingos'。所以我用那個行代替了: 'bin/ bin-debug/ bin-release /' 並且案子解決了!奇怪的是,它直到昨天才會發生......我懷疑它是'.git/config'文件,它說'ignorecase = true',但過去是錯誤的。 – Kleber

+0

只是爲了記錄:我不能合併這兩個分支。 '穩定'一個很老,我們只是在它上面修正錯誤。順便說一句,感謝您的幫助,@ ansh0l! – Kleber

0

嘗試使用

混帳混帳從慶典增添文件名

命令,所有的新文件,當你在主分支。

+0

我也試過,但沒有添加文件或顯示錯誤。此外,使用'git status',不會添加新文件! – Kleber

0

如果您使用SourceTree,有一種更方便的方法可以將文件添加到git。您只需按頂部按鈕欄上的添加或添加/刪除按鈕即可。

+0

是的,我知道,但這不是問題。這些文件甚至不會被添加! – Kleber

相關問題