Re: [討論] 發生程式碼不見的慘事

看板Soft_Job作者 (「雄辯是銀,沉默是金」)時間10年前 (2013/10/31 08:57), 編輯推噓6(608)
留言14則, 7人參與, 最新討論串2/2 (看更多)
※ 引述《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
有無推薦的git教學呢?希望是中文 ....
10/31 09:05, 1F

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
Pro Git 有線上版本...
10/31 09:31, 5F

10/31 10:05, , 6F
官網男人表示:我難過
10/31 10:05, 6F

10/31 11:06, , 7F
把 Pro Git 讀完,值得一讀。
10/31 11:06, 7F

10/31 11:59, , 8F
謝謝你的好意 我後來發現跟專案所讀的檔案路徑有關 git只
10/31 11:59, 8F

10/31 11:59, , 9F
是被牽連
10/31 11:59, 9F

10/31 12:13, , 10F
不過奇怪的是 專案是讀取就資料夾的檔 為啥切換branch就
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
我用記事本開專案檔看路徑 是相對路徑 長成../舊資料夾/X
10/31 13:55, 13F

10/31 13:55, , 14F
X.frm這樣
10/31 13:55, 14F
文章代碼(AID): #1ISQh_nD (Soft_Job)
文章代碼(AID): #1ISQh_nD (Soft_Job)