git-本地文件命令

1. 初始化本地庫
$ git init

文件夾中生成.git版本庫,包括stage(index),還有git自動建立的分支master,指向master分支的指針HEAD指針。javascript

2. 工做區→緩存區→版本庫 (工做區:電腦中能夠看到的目錄)

拆分做業java

$ git add [file1] [file2] 
$ git add [dir1] [dir2]
$ git add .
$ git commit -m "a readme file"

添加、提交一步到位git

$ git commit -am "once"
$ git commit -a -m "once"
$ git commit [file] [folder] -m ""
3. 提交時,漏掉了某文件
$ git add xxx
$ git commit --amend 編輯工具會顯示最近一次提交的提交message,能夠修改
$ git commit --amend -m 
$ git commit --amend --no-edit (加入--no-edit參數,會修復提交但不修改提交信息)
4. 撤銷修改

a. 撤銷工做區的修改,不影響緩存區shell

$ git checkout -- [file1] [file2]
$ git checkout -- .

b. 撤銷緩存區的修改,將修改內容放回工做區,與工做區後期修改合併(clean 或者合併2處修改)緩存

$ git reset HEAD xxx(文件名)
$ git reset HEAD .
5. 查看
$ git status
$ git diff xxx                        工做區和緩存區
$ git diff --cached/staged      已經暫存起來的文件和上次提交時的快照之間的差別
$ git diff HEAD -- xxx             工做區和版本庫  

注:修改並add一個版本,工做區再改回來,工做區與版本庫無差異。有待add的文件, add 後無待commit的文件了
$ git log   顯示從最近到遠的提交日誌
$ git log --stat        顯示commit歷史,以及每次commit發生變動的文件
$ git log -p [files]        顯示指定文件的每次commit的diff
$ git log -p -2        經常使用 -p 選項展開顯示每次提交的內容差別,用 -2 則僅顯示最近的兩次更新, 還有其餘參數可選
$ git log -[number] --pretty --oneline        顯示最近number次的log
$ git log --pretty=oneline        漂亮地展現
$ git log --graph        分支合併圖
$ git log --graph --pretty=oneline --abbrev-commit        分支合併狀況
6.回退版本

HEAD表示當前版本,即最新的提交,HEAD^上一個版本, HEAD^^, HEAD~100, clean。(--soft不會clean,modified)app

$ git reset --hard HEAD^
$ git reset --hard HEAD            等價於 clean掉工做區和緩存區
$ git reset --hard [commit_id]
$ git reset [commit_id] (非clean,有待添加的文件)
7.回到將來版本

當回退到某個版本x後,想回來,發現git log中,看不到x以後的commit記錄(x+1)。此時,工具

a. 你的命令行還沒關,你就能夠順着往上找,找到對應的commit id
b. $ git reflog,找到對應的commit id
$ git reset --hard 3628164
8.「儲藏」和「恢復」工做現場
$ git stash
$ git stash list 查看
$ git stash apply    stash內容並不刪除
$ git stash pop        恢復的同時把stash內容也刪了
$ git stash drop  (.......)
9.文件重命名
$ git mv README.txt README

其實,運行 git mv 就至關於運行了下面三條命令:命令行

$ mv README.txt README
$ git rm README.txt
$ git add README
10.刪除文件,手動刪除以後,2個選擇:
a.從版本庫中刪除 $ git rm xxx / add commit 
b.誤刪了,恢復 $ git checkout -- xxx (撤銷工做區修改)

若是刪除以前修改過而且已經放到暫存區域的話,則必需要用強制刪除選項 -f(譯註:即 force 的首字母),以防誤刪除文件後丟失修改的內容。
另一種狀況是,咱們想把文件從 Git 倉庫中刪除(亦即從暫存區域移除),但仍然但願保留在當前工做目錄中。用 --cached 選項便可:指針

$ git rm --cached readme.txt

後面能夠列出文件或者目錄的名字,也可使用 glob 模式。比方說:日誌

$ git rm log/\*.log

注意到星號 * 以前的反斜槓 ,由於 Git 有它本身的文件模式擴展匹配方式,因此咱們不用 shell 來幫忙展開(譯註:實際上不加反斜槓也能夠運行,只不過按照 shell 擴展的話,僅僅刪除指定目錄下的文件而不會遞歸匹配。上面的例子原本就指定了目錄,因此效果等同,但下面的例子就會用遞歸方式匹配,因此必須加反斜槓。)。此命令刪除全部 log/ 目錄下擴展名爲 .log 的文件。相似的好比:

$ git rm \*~

會遞歸刪除當前目錄及其子目錄中全部 ~ 結尾的文件。

相關文章
相關標籤/搜索