git基本命令,保留自查。
git 上传本地文件夹到GitHub
$ git init
$ git add .
$ git commit -m "添加注释"
$ git remote add origin https://github.com/uesrname/upload_folder.git
$ git push -u origin master
Note:
-
$ git push
如果当前分支与多个主机存在追踪关系,那么这个时候-u
选项会指定一个默认主机,这样后面就可以不加任何参数使用git push
。 -
git remote
出错:fatal: remote origin already exists.-
$ git remote rm origin $ git remote add origin https://github.com/uesrname/upload_folder.git
-
-
git push
出错:error:failed to push som refs to …-
$ git pull origin master $ git push origin master (-f)
其中,-f可选,指–force。
-
git 将更新文件同步到GitHub
$ git add -A
$ git commit -m "添加注释"
$ git push -u origin master
git add 参数比较
-
git add -A
提交所有变化 -
git add -u
提交被修改(modified)和被删除(deleted)文件,不包括新文件(new),即Untracked files -
git add .
提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件,即Changed but not updated
git pull 和 git pull –rebase 简单对比
- git pull = git fetch + git merge
- git pull –rebase = git fetch + git rebase
- 执行
git pull --rebase
的时候必须保持本地目录干净。即:不能存在状态为 modified 的文件。(存在Untracked files是没关系的) - 如果出现冲突,可以选择手动解决冲突后继续 rebase,也可以放弃本次 rebase
- 执行
设置Git不需要每次push都输入用户名和密码
每次都需要输入用户名和密码是因为采用的是 https 方式提交代码, 如果采用的是 ssh 方式只需要在版本库中添加用户的 sha 的key就可以实现提交时无需输入用户名和密码。
- 通过如下命令查看当前的remote方式:
git remote -v
- 如果当前是https的,可以通过如下命令修改为ssh:
git remote set-url origin git@github.com:uesrname/upload_folder.git
.gitignore忽略规则的匹配语法
- 空格不匹配任意文件,可作为分隔符,可用反斜杠转义;
- 以“#”开头的行都会被 Git 忽略。即#开头的文件标识注释,可以使用反斜杠进行转义;
- 可以使用标准的glob模式匹配。所谓的glob模式是指shell所使用的简化了的正则表达式;
- 以斜杠”/“开头表示目录;”/”结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;”/”开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录;
- 以星号”**“通配多个字符,即匹配多个任意字符;使用两个星号”***” 表示匹配任意中间目录,比如
a/**/z
可以匹配 a/z, a/b/z 或 a/b/c/z等; - 以问号”?“通配单个字符,即匹配一个任意字符;
- 以方括号”[]“包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符。比如[abc]表示要么匹配一个a,要么匹配一个b,要么匹配一个c;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0到9的数字,[a-z]表示匹配任意的小写字母);
- 以叹号”!“表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(!)取反。需要特别注意的是:如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用”!”规则是不起作用的。也就是说”!”开头的模式表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用”!”也不会再次被包含。可以使用反斜杠进行转义。