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文件的内容约束。



猜你喜欢

转载自blog.csdn.net/lyx_323/article/details/80853424