Re: [討論] 發生程式碼不見的慘事
※ 引述《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
推
10/31 09:05, , 1F
10/31 09:05, 1F
→
10/31 09:15, , 2F
10/31 09:15, 2F
→
10/31 09:16, , 3F
10/31 09:16, 3F
→
10/31 09:20, , 4F
10/31 09:20, 4F
推
10/31 09:31, , 5F
10/31 09:31, 5F
推
10/31 10:05, , 6F
10/31 10:05, 6F
推
10/31 11:06, , 7F
10/31 11:06, 7F
推
10/31 11:59, , 8F
10/31 11:59, 8F
→
10/31 11:59, , 9F
10/31 11:59, 9F
→
10/31 12:13, , 10F
10/31 12:13, 10F
→
10/31 12:13, , 11F
10/31 12:13, 11F
→
10/31 12:30, , 12F
10/31 12:30, 12F
推
10/31 13:55, , 13F
10/31 13:55, 13F
→
10/31 13:55, , 14F
10/31 13:55, 14F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):