1. 程式人生 > >git 指令記錄

git 指令記錄

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 指令記錄