看板 Programming 關於我們 聯絡資訊
最近在學git 練習教學網站的狀況題 狀況是「追加檔案到最近一次的commit」 最近一次的commit 是把hello.html更名成world.html (空檔案) 然而我又新增一個檔案叫做123.html 也是沒內容的空檔案 下了add 123.html並且commit --amend之後 跑出來的結果是: [master abc41d8] change name (hello.html -> world.html) Date: Sat Feb 24 17:48:29 2018 +0800 2 files changed, 0 insertions(+), 0 deletions(-) rename hello.html => 123.html (100%) create mode 100644 world.html 雖然都是空檔案覺得git這樣搞好像也沒差 不過看怎麼會是把先把hello.html重新命名成123.html 並且再創了一個world.html檔案啊...(汗 不該是 保留先前的操作(hello.html重新命名成world.html) 在這後面新增一個新增檔案的動作(create mode 123.html之類的) 這樣嗎? 還是其實這是一種隨機事件 也有機會跑成我上面所說的狀況...(咦? 雖然糾結這種狀況好像沒啥意義啦XD 不過還是很好奇到底為什麼是這樣跑 希望知道的大大可以替我解除疑惑 小弟感激不盡 m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.235.6.15 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1519468457.A.6CC.html
LPH66: git 不會知道你實際上做了什麼動作123.195.9.46 02/24 18:38
LPH66: 它只看到你 commit 時的結果123.195.9.46 02/24 18:38
LPH66: 所以它會從那裡推測你到底做了什麼事情123.195.9.46 02/24 18:39
原來如此...看來是git推測成這個樣子了orz 謝謝回復:D ※ 編輯: Arbin (36.235.6.15), 02/24/2018 18:46:26
descent: 你用什麼指令重新命名?115.82.196.146 02/24 22:48
用git mv重新命名的
alan23273850: Good question 卡一個123.193.38.80 02/24 23:29
dannypsnl: 我實驗之後結果是跟檔案的排序有關,排218.164.45.223 02/25 03:14
dannypsnl: 在前面的檔案會先拿去填rename的空缺,218.164.45.223 02/25 03:14
dannypsnl: 然後才是新增的空缺,當然只有空檔案會218.164.45.223 02/25 03:14
dannypsnl: 這樣218.164.45.223 02/25 03:14
所以只能說git在無法判斷實際上做什麼動作 且又是空檔案的情況下 做檔名排序->補空->再新增嗎@@?! 先感謝上面大大們的回答 ※ 編輯: Arbin (36.235.6.15), 02/25/2018 05:35:28
MOONRAKER: 你不用猜git裡面怎麼幫你做的218.161.46.90 02/25 11:52
MOONRAKER: 反正都是沒內容檔案 他愛怎麼做都沒差218.161.46.90 02/25 11:53
確實是怎麼做都沒差...XD ※ 編輯: Arbin (36.235.6.15), 02/25/2018 14:30:43
MOONRAKER: 如果你附加檔案有內容就不會這樣。220.135.118.23 02/25 16:59
MOONRAKER: 就像SQL select你不聲明排序他不一定會220.135.118.23 02/25 17:01
MOONRAKER: 照你塞進去的順序給你 有也是恰好220.135.118.23 02/25 17:01
有內容的話git會判斷這個我是知道的w 所以這樣講起來很像隨機事件一樣耶 反正最終結果都一樣我就...(ry ※ 編輯: Arbin (36.235.6.15), 02/25/2018 18:11:05
alan23273850: 不如給 git 貢獻個 pull request?!123.193.38.80 02/25 20:51
pull request是提交修正用的吧 我的C的能力只有兩光程度Orz 看有沒有其他大大要提 (?)
dannypsnl: 按照git的判定方式,它好像也沒辦法完218.164.45.223 02/25 23:28
dannypsnl: 美解決這個問題吧,除非它去看系統操作218.164.45.223 02/25 23:28
dannypsnl: 紀錄?(可以這樣嗎,我不確定)218.164.45.223 02/25 23:28
看教學網站只有說他是判別內容 操作部分 照上面討論下來應該就不是判斷依據了@@ 系統操作我也不清楚可不可以看到更詳細的內容... ※ 編輯: Arbin (111.83.222.103), 02/26/2018 12:48:17
adrianshum: 說沒差也不一定。要是你要把這branch49.130.129.21 02/27 08:57
adrianshum: rebase ,而目的地有一已修改過的hel 49.130.129.21 02/27 08:57
adrianshum: lo.html , 不肯定git 會怎麼處理了 49.130.129.21 02/27 08:57
rebase目前還沒學到相關章節 所以還不清楚@@
expury: git 新手問一個: 假如共寫一份檔案,是不223.139.225.63 02/27 11:29
expury: 是每次傳新版的步驟: 本機檔 commit -> g223.139.225.63 02/27 11:29
expury: it rebase -> git push -> git pull223.139.225.63 02/27 11:29
我卡一個(其實是還沒學到那裡xd ※ 編輯: Arbin (42.76.204.55), 02/27/2018 14:20:33
MOONRAKER: 沒事rebase幹嘛 有commit潔癖嗎 220.135.118.23 02/27 15:13
MOONRAKER: 過度的學習是有害身心的 220.135.118.23 02/27 15:14
Bencrie: commit, pull --rebase, push 1.160.117.224 02/27 20:09
Bencrie: 共同開發還玩 rebase + push 是在害人吧 1.160.117.224 02/27 20:10
Arbin: 嗯...看來rebase不能亂用 那這塊我還是淺 61.223.107.208 02/28 02:40
Arbin: 學好惹 61.223.107.208 02/28 02:40
MOONRAKER: git的意義是在用 不是整套git學起來再 218.161.46.90 02/28 13:46
MOONRAKER: 出去玩 那樣意義不大 學簡單夠用就好 218.161.46.90 02/28 13:47
MOONRAKER: 沒有pull就push也會吃警告 叫你先pull 218.161.46.90 02/28 13:49
Arbin: 好的..明白了 61.223.107.208 02/28 14:51
MOONRAKER: 有些公司會要求使用rebase或squash 218.161.46.90 02/28 17:08
MOONRAKER: 整理近端過多的commit再一次push 218.161.46.90 02/28 17:08
MOONRAKER: 但除非規定 一般開發流程根本不需要 218.161.46.90 02/28 17:09
原來如此 (筆記 ※ 編輯: Arbin (61.223.107.208), 02/28/2018 22:23:11
holishing: 感覺如果在只有自己會動的 branch 還沒 140.116.101.37 03/02 02:56
holishing: merge 回 master 前也可以先 rebase 140.116.101.37 03/02 02:56
holishing: 整理一下再併進去@@ 140.116.101.37 03/02 02:56
holishing: 或是 pr 別人的專案前會應要求 rebase 140.116.101.37 03/02 02:57
adrianshum: 只有自己用的Git repo 不rebase 當然 49.130.129.81 03/02 03:04
adrianshum: 也沒什麼差,當一team 十幾個人各自在 49.130.129.81 03/02 03:04
adrianshum: 不同位置branch 出來又在不同時候merg 49.130.129.81 03/02 03:04
adrianshum: e,你要看history 就頭痛了。 49.130.129.81 03/02 03:04