入門
-
git init
初始化一個(gè)版本倉庫 -
git remove add origin git@g.com:/try_git.git
增加一個(gè)github上的遠(yuǎn)端倉庫 -
git status
git倉庫的當(dāng)前狀態(tài) git add ‘*.txt’
注意: 通配符 .txt 外面引號(hào),如果沒有引號(hào)肛真,則命令會(huì)被shell先解析,即.txt的內(nèi)容變成了當(dāng)前目錄下的所有txt文件,而忽略子目錄中的所有txt文件代兵,而‘*.txt’則會(huì)將通配符交給git來處理,在git內(nèi)部完成 所有文件夾中txt文件搜索镀裤。
-
git commit -m 'xxx'
向版本庫提交一個(gè)改動(dòng)版本 陵究,‘xxx’是類似于該版本的注釋。 -
git commit --amend
修改以前的提交 -
git pull -u origin master
從origin[github遠(yuǎn)端] 拉版本到本地的master 分支
提高
-
git reset filename
將Statge(git add后commit前)狀態(tài)轉(zhuǎn)為modified狀態(tài) git checkout --filename
注意: git checkout 只能將處于modifed狀態(tài)的文件revert到之前的末修改前的狀態(tài),而如果一個(gè)文件的已經(jīng)git add進(jìn)入了staged狀態(tài)制跟,則checkout對(duì)其沒有效果舅桩。
-
git clone git@g.com
克隆git遠(yuǎn)程倉庫下的文件 -
git tag <new tag>
標(biāo)識(shí)提交記錄,之后可以通過用checked跳到該狀態(tài) -
git checkout <file name>
快速丟棄所有的變更,在沒有添加(add)之前 -
git remote
查看遠(yuǎn)程倉庫 -
git remote -v
查看遠(yuǎn)程倉庫和遠(yuǎn)程倉庫的url -
git blame <filename>
查找某行代碼的最后的修改者
git diff
查看變化
-
git diff
查看有什么變化 -
git diff HEAD
查看pull下來新版本里有哪些變化 -
git diff --staged
查看Stage(add后commit前)的變化 -
git diff --cached
查看哪些文件將被提交
git log
歷史記錄
-
git log
查看歷史記錄 -
git log --oneline
只查看當(dāng)前分支的提交信息(commit message),不顯示其它(比如提交時(shí)間雨膨、提交Author等) -
git log <branch> --oneline
只查看指定的分支(branch)的提交信息(commit message)
git rm
移除文件及文件夾
-
git rm <file name>
刪除connit提交后文件擂涛,執(zhí)行這條命令后,本地的文件也一并刪除了 -
git rm --cached <file name>
移除不需要提交的文件聊记,add后是直接移除;commit后的需要再一次commit才能移除,不然依舊提交第一次commit后的結(jié)果
git mv
文件重命名
-
git mv <old file name> <new file name>
修改文件名,需要commit和push撒妈,遠(yuǎn)程倉庫的文件才會(huì)重命名
git stash
對(duì)修改內(nèi)容的保存,而不是提交
-
git stash
當(dāng)前工作區(qū)內(nèi)容已被修改排监,但是并未完成狰右。你需要保存它,而不是提交(commit)它舆床,此時(shí)需要stash -
git stash pop
恢復(fù)stash后的內(nèi)容
git rebase
-
git rebase --continue
在rebase的過程中棋蚌,出現(xiàn)沖突時(shí),git會(huì)停止rebase并讓你解決沖突挨队,待解決完沖突后谷暮,無需commit,只需要git rebase --continue繼續(xù)執(zhí)行apply余下的補(bǔ)丁 -
git rebase --abort
停止rebase的行動(dòng)盛垦,并且分支回到rebase開始的狀態(tài) -
git rebase -i HEAD~2
修改第二次提交的commit message 湿弦,將‘pick’改為‘r’ - `git rebase -i HEAD~4 對(duì) commit 歷史進(jìn)行修改合并,把多個(gè) commit 合并成一個(gè),例如:將最后三個(gè) commit 都合并到第二個(gè) commit - Adding README情臭,將‘pick’改為‘s’
-
git rebase -i HEAD~2
提交順序錯(cuò)亂時(shí)省撑,使用 git rebase -i 進(jìn)行調(diào)整, 將錯(cuò)誤的順序換成正確的位置,即修改 pick的代碼行進(jìn)行交換
其它
- 編輯.gitignore :除了lib.a外,忽略文件.a(*.a \n !lib.a)
-
git repack -d
優(yōu)化資源庫(很少用到) -
git grep "TODO"
為了不影響當(dāng)前正在做的事情俯在,會(huì)把一些不那么緊急的任務(wù)使用 TODO 注釋在代碼里竟秫,現(xiàn)代的 IDE 都能幫我們識(shí)別這些注釋并在一個(gè)單獨(dú)的窗口中羅列出來 -
git bisect start HEAD <Hash>
Hash是第一次commit的代碼 git bisect run make test
-
git bisect reset
退出the bisect session -
git revert <Hash>
有時(shí)代碼 push 到遠(yuǎn)程倉庫后發(fā)現(xiàn)某一塊代碼有問題,可以通過 revert 命令將特定 commit 完全恢復(fù) -
git cherry-pick <Hash>
把最新的一次提交給毫無保留的扔掉, 又后悔了跷乐,可以通過reflog獲得它提交的代號(hào)(即)然后在通過該命令找回提交肥败,(如果該提交刪除或添加了某些文件,這些文件將不會(huì)被找回)該命令只是找回了提交的記錄 -
git log <branch1> -p <fileName>
->git cherry-pick <Hash>
從branch1摘下某次commit愕提,合并到當(dāng)前分支(不是branch1分支)