0.原理
工作區直接跟暫緩區打交道,暫緩區跟版本庫打交道
- 從工作區中添加內容到暫緩區
- 將暫緩區的內容提交到版本庫
- 從版本庫中檢出內容到工作區
1. 忽略本地指定文件、目錄
在git下載到本地的目錄中修改.git/info/exclude文件
例如git status時忽略所有的.pyc文件
#忽略以.pyc結尾的文件 *.pyc #忽略dbg文件&目錄 dbg #只忽略dbg目錄 dbg/ #只忽略dbg文件 dbg !dbg/
2. 撤銷對文件的修改
場景:當文件修改了,但沒有add,還原最后一次提交的內容
git checkout --filename
注:使用之前需要確認確實要放棄之前的修改,否則會使內容徹底丟失。
3. 取消暫存(add)的文件
場景:文件add了,但是突然想取消add操作,此時可用reset命令
git reset HEAD filename
4. 添加緩存(add)
git add file :將文件添加緩存區
git add -u :將文件的修改、文件的刪除,添加到暫存區。 git add . :將文件的修改,文件的新建,添加到暫存區。 git add -A :將文件的修改,文件的刪除,文件的新建,添加到暫存區。
5. amend 補充提交
場景:當commit 完了以后突然意識到還有文件沒有提交,這時不需要再add+commit,可以amend到上次commit中
git add filename
git commit --amend
執行完commit后,想撤回commit,怎么辦?
git reset --soft HEAD^
6. 回退
先使用git log 查看 commit日志,找到需要回退的那次commit的 哈希值commit_id
git reset --hard <commit_id>
git push origin HEAD --force
7. git reset --hard 回滾以后 以后怎么再回去
git log -g
8. git 還原某個特定的文件到之前的版本
以src/test.py為例
1. git log src/test/py 得到改文件的commit歷史 2. 得到要回退版本的hash,如d98a0f565804ba639ba46d6e4295d4f787ff2949 3. checkout對應的版本,git checkout d98a0f565804ba639ba46d6e4295d4f787ff2949 src/test.py 4. commit checkout下來的版本,git commit -m 'revert to previous version'
9. git報錯:Please move or remove them before you can switch branches.
error: Your local changes to the following files would be overwritten by checkout: . . .省略中間部分 . Please move or remove them before you can switch branches.
出現這個錯誤時:可以通過以下的命令處理:
git clean -d -fx ""
注:
1. x :表示刪除忽略文件已經對Git來說不識別的文件
2. d: 刪除未被添加到git的路徑中的文件
3. f: 強制執行
10. 還原指定的文件
如果想拿遠端Git服務器的最新版本(或指定版本)覆蓋本地修改,可以用git pull,但這樣會全面更新本地代碼庫
如果只想放棄本地工作所作修改(尚未add),可以用
git checkout file/to/path
如果想從遠端庫獲取最新的更新,應先更新本地庫,再跟新的本地
git fetch
git checkout origin/master file/to/path
11. 切換賬號
$ git config --global user.name "jihite"
$ git config --global user.email xtcmhs@gmail.com
如果用了 –global 選項,那么更改的配置文件就是位於你用戶主目錄下的那個,以后你所有的項目都會默認使用這里配置的用戶信息。
如果要在某個特定的項目中使用其他名字或者電郵,只要去掉 –global 選項重新配置即可,新的設定保存在當前項目的 .git/config 文件里。