作者descent (「雄辯是銀,沉默是金」)
看板Soft_Job
標題Re: [討論] 發生程式碼不見的慘事
時間Thu Oct 31 08:57:31 2013
※ 引述《k6416337 (愛花我的嫁)》之銘言:
: 各位好,我今天下班前發生了一件程式碼消失的事情,害我到現在還是有點鬱卒QQ
: 不好意思下面文章有點長,雖然是想問看看問題在哪,但也有包含想發洩的要素在
: =====================================
: 我目前擔任軟體工程師,到職要滿兩個月
: 當初開始任職時主管丟了部門本來就有的一個用VB6寫的程式交代我新增功能
: 我電腦作業系統是WIN7 64位元,平常我有在用git for windows對那個程式做版本管理
: 順便一提,我們部門沒在做版本管理,因為不是做多人寫程式
: 一開始丟給我的程式裝在一個資料夾內,假設名字叫D資料夾
: 程式裡有一個專案叫P專案,那個專案裡有好幾個form檔,有個最主要的form叫F
: 由於我要用git做版本管理,又怕因為初學會出事,所以我額外又做了個資料夾專門給git
: 用,假設叫Dgit
: 我目前做了兩個功能。剛開始我都一直用master branch上做管理而已,後來做了第二個功
: 能時,我額外創了個branch,假設叫B,然後一直就在B上做commit跟push到github
: 因為D資料夾已經做好第一個功能,為了做第二個,我又創了一個資料夾,叫D2並把D的程
: 式複製到D2繼續做第二個功能
: 每次做完一部分,測試沒問題時,我會"存專案"並且把D2裏頭的所有檔案複製到Dgit做
: commit跟push
: 我們的程式主要都是在改F,其他基本上沒在動,目前這程式也只有給我一人做
: 昨天我把自己測試沒bug的程式交給一位部門同仁再作測試,看看還有沒有bug沒發現
: 結果今天4點多,他過來跑我D2的程式時發現我的程式碼跟複製給他的不一樣,是之前的
: 版本
: 於是我們再複製兩三次,結果情況還是一樣
: 後來認為是路徑問題,因此把D2的名暫時改成D,發現程式碼變得跟我複製給他的一樣,是
: 早期版本,把D2複製到我電腦其他地方也是一樣,不管是複製到D或Dgit
: 然後再把D2的名改回來,發現程式碼變回最新的了,我跟測試的同事還有在另一位同事感
: 覺傻眼
: 後來我說會不會是我用git的原因才會這樣,另一位同事說可能是WIN7自己有保護程式的
: 關係,讓P開啟舊的F,不過想說名稱變更程式碼就變就可能真是git的
: 關係,其實我還想說我都只針對Dgit在作git,怎會影響到跟Dgit只有間接關係的D2?
: 我一直在想找出原因,突然想說會不會是branch沒切到master的關係,於是我就切成
: master再切回B,就發生慘劇了,D2的程式碼也變成舊版的了!!! 淦!
這很奇怪, 有異動的話, git 應該會有提示, 絕對無法切換,
很可能像版友們說的那樣 .git 有問題, 造成 git 誤判。
這問題我也有遇到, 當時嚇的半死, 還好最後有救回,
也是在複製整個目錄時出問題。
你的操作太複雜, 很難理解, 能不能縮小範圍, 找出關鍵問題?
否則你大概不敢繼續用 git。
給你建立一下信心,
這是我的 git branch, 我從來沒遺失過任何程式碼, 我只有操作
這個目錄, 沒有做複製的動作。
要備份的話, 不要直接 copy, 用 git clone 再 clone 一份,
下次有變動, clone 的 那份只要 git pull 就夠, 也不會不小心蓋掉 .git。
git 真的很複雜, 學習它的精力並不見得小於寫程式。
只要 commit, 就一定會在裡頭。
descent@descent-u:simple_os$ git branch -r
origin/HEAD -> origin/master
origin/bg
origin/c-bootloader
origin/c_runtime
origin/cpp_bootloader
origin/cpp_kernel_loader
origin/cpp_runtime
origin/cpp_static_obj
origin/fat_bootloader
origin/fork
origin/fs
origin/get_ticks
origin/int_t0
origin/int_test
origin/ipc
origin/keyboard
origin/master
origin/minix_int
origin/more_than64k
origin/origin/tty
origin/schedule0
origin/set_8254
origin/tty
origin/vga
origin/virtual_table
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.125.239.51
推 diabloevagto:有無推薦的git教學呢?希望是中文 .... 10/31 09:05
→ Violation:當初看這網誌學的,整理得很詳細 10/31 09:16
推 sary:Pro Git 有線上版本... 10/31 09:31
推 Bencrie:官網男人表示:我難過 10/31 10:05
推 timTan:把 Pro Git 讀完,值得一讀。 10/31 11:06
推 k6416337:謝謝你的好意 我後來發現跟專案所讀的檔案路徑有關 git只 10/31 11:59
→ k6416337:是被牽連 10/31 11:59
→ k6416337:不過奇怪的是 專案是讀取就資料夾的檔 為啥切換branch就 10/31 12:13
→ k6416337:出錯了?明明舊檔案一直在啊 10/31 12:13
→ diabloevagto:你路徑用絕對路徑? 10/31 12:30
推 k6416337:我用記事本開專案檔看路徑 是相對路徑 長成../舊資料夾/X 10/31 13:55
→ k6416337:X.frm這樣 10/31 13:55