git 指令記錄
阿新 • • 發佈:2019-02-28
git reset 內容 com pda 項目 目錄 復制 nothing ranch
由於之前一直用svn 用git也是用圖形化的工具 還是要了解一下git指令
因為都是版本控制工具 有很多相似之處 所以理解起來也比較輕松
- 倉庫: github上面的項目
- 工作目錄下面的所有文件都不外乎這兩種狀態:++1. 已跟蹤 2. 未跟蹤++
- git 有一個暫存區(staged area), 即跟蹤區。 在暫存區的文件都是被跟蹤狀態的,所有準備好要提交的文件才放到暫存區 提交的時候不是直接從本地提交 而是把暫存區的文件全部提交上去
初始化新倉庫
$ git init
從現有倉庫中克隆
$ git clone [url]
檢查當前文件狀態
$ git status
例子1:
$ git status On branch master nothing to commit, working directory clean
- clean : 所有已跟蹤文件在上次提交後都未被更改過
- 當前目錄下沒有出現任何處於未跟蹤的新文件,否則 Git 會在這裏列出來
- master : 當前所在的分支名稱
如果在當前目錄下新建一個文件 會在 Untracked files 下面顯示 表明此為未跟蹤文件
$ vim README $ git status On branch master Untracked files: <!--未跟蹤文件--> (use "git add <file>..." to include in what will be committed) README nothing added to commit but untracked files present (use "git add" to track)
跟蹤文件
跟蹤新文件
$ git add 新建的文件
跟蹤原有的修改的文件
$ git status On branch master Changes to be committed: (use "git reset HEAD <file>..." to unstage) <!--git reset HEAD <file>:撤銷add--> new file: README Changes not staged for commit: <!--本地有之前追蹤的文件修改了 沒有放到暫存區--> (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) <!--git checkout -- <file>:回到修改之前的版本--> modified: benchmarks.rb
Changes not staged for commit: 說明已跟蹤文件的內容發生了變化,但還沒有放到暫存區。要暫存這次更新,需要運行 git add benchmarks.rb 命令
git reset HEAD
: 撤銷add 撤銷追蹤狀態 git checkout --
: 撤銷修改 回到修改之前的版本。這條命令有些危險,所有對文件的修改都沒有了,因為我們剛剛把之前版本的文件復制過來重寫了此文件。所以在用這條命令前,請務必確定真的不再需要保留剛才的修改。如果只是想回退版本,同時保留剛才的修改以便將來繼續工作,可以用下章介紹的 stashing 和分支來處理 把修改的部分假如到暫存區 準備提交
$ git add benchmarks.rb $ git status On branch master Changes to be committed: <!--此時本地文件已經全部在暫存區 已經準備好可以提交了--> (use "git reset HEAD <file>..." to unstage) new file: README modified: benchmarks.rb
Changes to be committed:全部在暫存區 已經準備好可以提交了
如果再次 vim ++二次修改++,然後再看看 status:
$ vim benchmarks.rb $ git status On branch master Changes to be committed: <!--commit 只會提交這部分文件--> (use "git reset HEAD <file>..." to unstage) new file: README modified: benchmarks.rb <!--第一次修改已經加到緩存區的文件--> Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: benchmarks.rb <!--二次修改沒有加到緩存區的文件-->
如果此時提交的話 提交的是上面的第一次修改的文件 二次修改的文件不會被提交 想要二次修改的被提交要再次執行add指令
++所以 全部文件修改了之後才去 add, 盡量避免 add 過 文件之後又再修改文件了++
要忽略掉的文件
始終都不要追蹤的文件 創建 .gitignore 文件
# 此為註釋 – 將被 Git 忽略 # 忽略所有 .a 結尾的文件 *.a # 但 lib.a 除外 !lib.a # 僅僅忽略項目根目錄下的 TODO 文件,不包括 subdir/TODO /TODO # 忽略 build/ 目錄下的所有文件 build/ # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt doc/*.txt # 忽略 doc/ 目錄下所有擴展名為 txt 的文件 doc/**/*.txt
暫時記錄到這裏 有時間再繼續整理
參考:
官網
git 指令記錄