1. 程式人生 > >git常用指令和ignore的配置方法

git常用指令和ignore的配置方法

轉載至轉載請標明:http://blog.csdn.net/zxyudia/article/details/67633321

要很好的掌握Git,先要明白四個名詞概念:

  1. Workspace(工作區):新新增的,和修改的未add操作的。
  2. Stage(暫存區):add操作過後,會進入暫存區。
  3. Repository(本地倉庫):commit操作後,會進入本地倉庫。
  4. Remote(遠端倉庫):push操作後,會提交到遠端倉庫。

Git的配置:

# 顯示當前的Git配置
$ git config --list

#設定使用者名稱和郵箱,即提交程式碼時的使用者資訊
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

新增/刪除檔案(到暫存區,即add操作)

#可以新增一個或多個
$ git add <file1> <file2>...

#新增所有修改的和新新增的
$ git add .
#另一種寫法
$ git add -A

#新增指定目錄
$ git add <dirname>

#由暫存區恢復到工作區(發現提交錯了,退回一步)
$ git reset HEAD <file> 

#恢復上一次add提交的所有file
$ git reset HEAD

#撤銷修改操作,恢復到修改之前的,撤銷add後位於工作區下進行的
$ git checkout -- <file> #刪除檔案,並將檔案放入暫存區 $ git rm <file1> <file2> #改檔名,並將修改後的檔案放入暫存區 $ git mv <file-original> <file-rename>

提交到本地倉庫(commit操作)

#提交暫存區的所有檔案(後面的message不可缺少)
$ git commit -m <message>
#提交暫存區的指定檔案
$ git commit <file1> <file2> -m <message>

分支操作(branch)

# 列出所有本地分支
$ git branch

# 列出所有遠端分支
$ git branch -r

# 列出所有本地分支和遠端分支
$ git branch -a

# 新建一個分支,並切換到該分支
$ git checkout -b [branch]

# 切換到指定分支,並更新工作區
$ git checkout [branch-name]

#從遠端分支檢出指定分支
$ git clone -b <branchname> <master>

# 合併指定分支到當前分支(主分支合併自定義分支)
$ git merge [branch]

# 刪除分支
$ git branch -d [branch-name]

# 刪除遠端分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

檢視資訊:

# 顯示有變更的檔案
$ git status

# 顯示當前分支的版本歷史
$ git log

.gitignore的配置:

緣由:當我們匯入一個git專案時,開發環境會改變裡面的一些配置,當我們修改完程式碼後,add,commit操作後,系統更改的配置資訊,並不想去提交,這個時候就會用到這個配置,配置完成後,才更好的去add .和commit -m去操作。

#要在Git BashHere這裡面操作
user@amelon MINGW64 ~/Desktop/git (master)
$ touch .gitignore

常用的配置:
eg1:

/build
/.idea
/.gradle
/local.properties
.gitignore

eg2:

# Java class files
*.class

# Generated files
bin/
gen/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

#Android Studio
build/

# Intellij project files
*.iml
*.ipr
*.iws
.idea/

#gradle
.gradle/

用法規則和語義:

# 此為註釋 – 將被 Git 忽略

*.a       # 忽略所有 .a 結尾的檔案
!lib.a    # 但 lib.a 除外
/TODO     # 僅僅忽略專案根目錄下的 TODO 檔案,不包括 subdir/TODO
build/    # 忽略 build/ 目錄下的所有檔案
doc/*.txt # 會忽略 doc/notes.txt 但不包括 doc/server/arch.txt

注意:如果你是新加的,這裡需要注意的是.gitignore只能作用於沒有被track的檔案,也就是工作區的檔案,對於add,commit操作後的檔案是沒有作用的,這個時候需要先把本地的快取刪除,在去提交,就可以實現忽略整個倉庫檔案了。

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

  • .gitignore檔案內容的規則

    1. / 表示目錄
      比如/A/*就表示忽略A目錄下所有內容

    2. * 表示匹配多個字元
      上面忽略A目錄下所有內容使用的就是*,忽略iml結尾的檔案即使用*.iml

    3. []表示匹配多個單個字元
      [abc]就是代表a、b、c中任何一個字元即可

    4. ! 表示跟蹤某類檔案
      比如 /*,!*.c,表示忽略所有檔案,但是跟蹤.c結尾的檔案,這樣.c結尾的檔案就不會被忽略了

  • 在使用.gitignore檔案後如何刪除遠端倉庫中以前上傳的此類檔案而保留本地檔案

      比如我們在使用git和github的時候,之前沒有寫.gitignore檔案,就上傳了一些沒有必要的檔案,在添加了.gitignore檔案後,就想刪除遠端倉庫中的檔案卻想儲存本地的檔案。
      這時候不可以直接使用git rm directory,這樣會刪除本地倉庫的檔案。
      可以使用git rm -r –cached directory來刪除緩衝,然後進行commit和push,這樣會發現遠端倉庫中的不必要檔案就被刪除了,以後可以直接使用git add -A來新增修改的內容,上傳的檔案就會受到.gitignore檔案的內容約束。