這篇博文用來記錄我使用git的體會感悟
刪除檔案:
git add test.txt
git commit -m "test.txt"
rm test.txt 那麼會直接在工作區(也就是我們常說的資料夾)將該檔案刪除,但是在版本庫中,你的test.txt檔案並沒有被刪除,此時用
git checkout -- test.txt 是可以回覆該檔案的
但是如果在此之前你並沒有把該檔案add到緩衝區中(也就是使用git add 命令)或者 commit到版本庫中(也就是使用git commit),對不起,無力回天。
複雜點的情況 如果現在你的暫存區和版本庫中都有乙個同名檔案(暫存區中的同名檔案還沒有commit),那麼此時你此時rm test.txt 然後checkout返回的會優先是暫存區中的檔案而不是版本庫中的檔案
如果你是用的 git rm 則會將工作空間 版本庫中都刪掉 git reset --hard
一、放棄對git管理的檔案修改
條件:bb.txt檔案已經被git管理
過程:發現bb.txt檔案被修改了,發現改了之後不是自己想要的結果
目的:想恢復到沒有被修改的狀態
解決辦法:
git checkout bb.txt
git放棄對當前資料夾的所有檔案的修改?
git checkout .
二、對沒有被git管理的檔案修改
條件:cc.txt檔案沒有被git管理
過程:新增的檔案太多太紊亂了,
目的:想直接回覆到某個版本
解決辦法:
git reset --hard
git reset 版本回退 mixed soft hard
出這個錯誤的原因是遠端和本地都有差異 遠端有個readme 在本地沒有,所以要先git pull一下,在git push
git pull origin master(分支)
現在我的理解就是本地檔案目錄(工作目錄),快取區,和git倉庫。快取區是公用的,(任何乙個分支上git add 檔案到快取區,在任何其他分支用git ls-files都可以看見剛剛被其他分支add的檔案,當然在任何乙個分支上移除快取中的這個檔案,也都會反應在其他分支中)可以用git status命令來檢視哪些檔案沒有被跟蹤,另外git add . 這個命令好像不能用了 還是用git add --all來新增所有檔案吧!
當然如果我們如果不小心把一些檔案提交到了快取區,想把他們刪除。那麼我們可以使用git rm --cache 《檔名》命令來,把誤加入快取區的檔案刪除,當然不會刪除工作目錄中的檔案,然後使用git status命令可以看到,剛剛那個檔案已經提示未被跟蹤了。(猜想倉庫中的不會被刪除 檢視倉庫中檔案的命令有誤,用git log 《檔名》可以檢視這個檔案是否在倉庫中)
刪除暫存區和工作區的文 git rm -f 檔名。工作區的檔案也被刪除了。
如果想刪除已經提交到倉庫中的檔案那麼我們就需要使用git reset命令
這個時候,我們必須撤銷版本庫的修改才能解決問題!
git reset有三個選項,--hard、--mixed、--soft。
//僅僅只是撤銷已提交的版本庫,不會修改暫存區和工作區git reset --soft 版本庫id
//僅僅只是撤銷已提交的版本庫和暫存區,不會修改工作區git reset --mixed 版本庫id
//徹底將工作區、暫存區和版本庫記錄恢復到指定的版本庫fatal: not a valid object name: 'master'.git reset --hard 版本庫id
關於檔案合併
git merge <> 《分知名》 是把別的倉庫中的內容合併到當前倉庫,如果當前倉庫中的同乙個檔案有了更改,其他分支同乙個檔案也有了更改,那麼合併就會出錯,這個時候就需要手動解決衝突。因為不知道
該以哪個更改的為主。
git ls-files 來檢視緩衝區中提交了哪些檔案
git diff --cached 用來檢視前後兩次 git add 後的變化 原來快取區中的檔案也是要git add後 用git diff --cached才會有變化的
當我新建分支時彈出如下錯誤
想新建立乙個分支時出現這錯誤。
後來發現,要先commit一次才會真正建立master分支,此時就可以新建立分支了。。
在沒有commit之前,如果使用git checkout -b 《分支名》 來建立切換到分支,實際上這個分支是沒有被建立的 所以用git checkout是不能進行切換的
git add 命令
git add xx
命令可以將xx檔案新增到暫存區,如果有很多改動可以通過
git add -a .
來一次新增所有改變的檔案。注意-a
選項後面還有乙個句點。
git add -a
表示新增所有內容,
git add .
表示新增新檔案和編輯過的檔案不包括刪除的檔案;
git add -u
表示新增編輯或者刪除的檔案,不包括新新增的檔案。
該檔案用來指定哪些檔案不需要被管理,通常包裹一些快取檔案等等。我們直接在windows下新建.gitignore檔案,處於系統的自我保護會阻止這一行為。我們可以在git控制台中使用
touch .gitignore來新建。
如果我們檔案已經被管理,此時要想忽略該檔案,必須先通過git rm --cached 《檔名》先從快取區中移除該檔案。
git 使用心得
比起svn,git有許多強大之處,比如 本地可以儲存整個修改 提交的歷史記錄 這一點對於離線開發尤其有幫助 支援一次次的增量合併rebase,適合多人合作。不過,再強大的工具,也要 會家 善使,這裡基本 常用的命令就要熟練掌握並且深刻理解,對於一些場景也能夠做到運用自如。以下提供一些問題場景及其解決...
git使用心得
在 git 內都只有三種狀態 已提交 committed 已修改 modified 和已暫存 staged 已提交表示該檔案已經被安全地儲存在本地資料庫 中了 已修改表示修改了某個檔案,但還沒有提交儲存 已暫存表示把已修改的檔案放在下次提交時要儲存的清單中。常用命令 git clone 位址 git...
GIT使用心得
git和svn不同,git的 有三份,分為 本地 本地庫 reponsitory乙份。當commit時,是將本地 提交到本地庫,然後再進行push操作才是將 提交到伺服器。專案哪怕沒有衝突,也必須要先更新後才能提交 在日常開發中有衝突時在所難免的,如何使用eclipse上的git工具進行衝突解決操作...