作者: 3ldk 時間: 2015-1-27 18:45 標題: git與sourcetree
本帖最後由 3ldk 於 2015-1-28 04:29 編輯
最近用git出左幾個嚴重問題
唔知有無辦法解決?
1. 岩岩唔小心commit一個成G既video file上git, 搞到成個repo大左成G, 就算delete左個file, 只要個repo有依個history就細唔返, 我係用sroucetree的, 搵左好耐都搵唔到可以點樣delete左個hisotory, 請問有無得delete?
2. 接上面問題, 假如我唔單只係commit左, 仲push埋上去, 咁又可以點解決?
3. fetch同pull其實有乜分別? 我一直以為fetch只係check下server有幾多個changes, 而pull就係真正將D changes download落黎, 但我最近發現唔係咁, 我試過將個50MB的PDF push左上去, 但其他人只係fetch, 個project folder就已經大左50MB, 咁樣同pull仲有乜分別?
4. 假如我build左個咁既project出黎, 如果要create一個repo, 應該係邊個位create先至正確? 我一般係project folder create, 但我發現有好多位其實應該每個developer唔一樣先叫正確, 例如.idea依個folder入面, 每個人個IDE setting都係唔一樣的, 一個人改, 就會搞到其他人錯晒, 又例如build, out依兩個folder, sync比人好似無乜意思
helloworld/
├─.gradle
│ └─2.1
│ └─taskArtifacts
├─.idea
│ ├─artifacts
│ ├─copyright
│ ├─libraries
│ └─scopes
├─build
│ ├─classes
│ │ ├─main
│ │ │ └─com
│ │ │ └─hello
│ │ └─test
│ │ └─com
│ │ └─springapp
│ │ └─mvc
│ └─tmp
│ └─war
├─gradle
│ └─wrapper
├─out
│ └─artifacts
│ └─hello
│ └─exploded
│ └─hello-1.0.war
│ ├─META-INF
│ └─WEB-INF
│ ├─classes
│ │ └─com
│ │ ├─hello
│ │ └─springapp
│ │ └─mvc
│ ├─lib
│ └─pages
└─src
├─main
│ ├─java
│ │ └─com
│ │ ├─hello
│ │ └─springapp
│ ├─resources
│ └─webapp
│ └─WEB-INF
│ └─pages
└─test
├─java
│ └─com
│ └─springapp
│ └─mvc
└─resources
作者: DarkHero 時間: 2015-1-27 20:02
pull 係加入去你local 度,fetch 可能落左local,但唔影響你做緊gei 野
唔要可以用hard reset,但之後個d都會無晒,太多之後gei 就唔適合啦
作者: 梁炳 時間: 2015-1-28 00:19
本帖最後由 梁炳 於 2015-1-28 00:30 編輯
1. 試下呢兩個command
- git reflog expire --expire-unreachable=now --all
- git gc --prune=now
http://stackoverflow.com/questio ... -no-branch-dangling
2. 可能你要重建番個remote repo
3. Git的系統最基本概念係每個人都有一個完整既Repo
Fetch 都係會download哂remote branch下來,不過不會影響working copy,再行一次pull先會merge
其實Pull = Fetch + merge
4. 你可能唔知可以叫Git 排除某些file,呢個Repo有好多現成ignore rules
https://github.com/github/gitignore
基本上,gitignore要加入IDE setting, data, 所有runtime config, build file
作者: 3ldk 時間: 2015-1-29 12:30
點解ignore唔係好work既?
我試過係.gitignore入面, 加入過
.idea/workspace.xml
又試過加入
.idea/
但佢點都唔識ignore
[attach]1758594[/attach]
作者: justlazy 時間: 2015-1-29 19:42
本帖最後由 justlazy 於 2015-1-29 19:43 編輯
- Refer to https://help.github.com/articles/remove-sensitive-data/
- 同一頁下半部份有講 push 左上 remote 既做法,但係有 collaborators 既情況真係好煩...
- 樓上師兄解釋左
- 一般唔 commit 既 files 放入 .gitignore,config files 可以用 update-index --assume-unchanged 避免錯誤 commit 左 local values,用法睇返 http://git-scm.com/docs/git-update-index。
你個 .gitignore 唔 work,應該係因為你已經 commit 過要 ignore 既 file,解決方法: http://stackoverflow.com/questio ... -to-committed-files
作者: DarkHero 時間: 2015-1-29 20:04
pull 應該係更新working files,因為你可以唔做merge
作者: 梁炳 時間: 2015-1-29 22:44
你講既"更新"其實即係merge
例如你在master行git pull,其實即係git fetch + git merge master origin/master
無conflict就係fast forward

