之前只会用图形端的GIT中,命令行的比较陌生,整理下,供自己以后参考
关键的名词:
- 工作区:工作区
- Index / Stage:暂存区
- 仓库:仓库区(或本地仓库)
- 远程控制:远程仓库
1:到项目目录下
git init
在文件夹中生成.git文件,后续的git add和git commit操作会将相关的文件存在.git文件中
2。
git pull <远程主机名> <远程分支名> :<本地分支名>
如果git remote,并且checkout了本地分支和远程分支匹配好了的话,可以直接git pull
在工作目录中获取并合并远端仓库的改动。
3。
git remote rm origin
git remote add origin ssh:// xxxxxxxxxxxx
添加远程仓库,显写rm是因为可能会报错:远程原点已经存在。
4。
git clone“”
下载文件到本地
5。
1. git branch | 2git branch -r / -a | 3git branch xxx | 4git branch -d xxx | 5git checkout xxx | 6git checkout -b xxx | 7git branch -u origin / xxx或者git branch
--set-upstream-to
origin / xxx | 8git branch -vv
1.查看本地分支| 2查看远程/所有分支| 3创建分支| 4删除本地分支| 5切换分支| 6切换分支没有就创建| 7将本地分支与远程分支关联| 8查看本地分支详细信息查看与远程分支的追踪关系
6。
git add。git add xxx
添加全部修改的代码,或添加部分修改的代码,添加到暂存区索引/阶段
整理:
git add -A提交所有变化
git add -u提交被修改(已修改)和被删除(已删除)文件,不包括新文件(新)
git add。提交新文件(新)和被修改(修改)文件,不包括被删除(删除)文件
7。
git commit -m“”
提交代码到本地仓库库
git commit --amend
新的-m commit描述并不能更新,运行此命令可以有机会重新编辑-m的描述
8。
git push origin xxx(本地):xxx(远程)
推到远程仓库远程
git push origin xxx
省略远程分支,默认上传到与本地分支对应的仓库,没有会创建
git push origin:xxx
省略本地分支,相当于删除远程分支,因为给了空值
git push origin
本地分支与远程分支有对应关系,都可以省略
git push
本地分支只有一个对应的远程分支,则都可以省略
骚操作:追踪远程分支的其他方法
- ①进入当前项目根目录的'.git'文件夹(请自行设置显示隐藏文件)。打开配置文件(注意不要用window记事本打开)。
- ②
[remote "origin"]
这一项的英文修改对应远程GIT中仓库地址。 - ③
[branch "master"]
这一项的英文修改本地分支'主'的远程追踪关系分支,修改直接merge = refs/heads/master
为merge = refs/heads/dev
- ④再次通过命令行查看状态就可以发现你的远程分支已经改掉。
- ⑤可能出现的问题补充:
- 没有
[branch "master"]
这一怎么办?
如果是新项目,没有git pull或git clone,就不会与远程分支建立关系,或者也可以自己添加这一项,但不建议。
- 没有
注意:有时候git pull报如下的错误:
自动合并失败:修复冲突然后提交结果
是因为git pul = git fetch + git merge
在git merge的过程中存在合并冲突,合并冲突包括:
1.多个代码更改发生在同一行
2.一个提交删除了问价,另一个提交准备编辑该文件
解决:通过git status中的
两者都修改过:XXX可以看到发生冲突合并的文件。
<<<<<<<<<< HEAD
提交一的代码
============
提交二的代码
>>>>>>>>>>分支-a
自己手动修改是要保留提交一还是保留提交二,还是两者都保留或者删除。
如果是文件的话,根据是否需要添加或者删除该文件
git add xxx
git rm xxx
git commit会将rm的操作提交上去,单纯的rm xxx不会将历史提交,可以通过git commit -a进行提交
之后依然是之前的操作git add。git commit -m“”git pull git push
Git的忽略提交规则:
--------------------------------
相关知识参考资料:
2. 关于Git的使用,今天被问到,转来一片文章,记录学习_killSamaritan的博客-CSDN博客
3. git 已经track 的文件再忽略导致不起作用_Ittttttttta的博客-CSDN博客
以下怕看着乱的话看另外一个文章,单独列出来了:git忽略提交规则
的.gitignore只会对没有被跟踪的,即没有被添加的文件进行忽略。
的.gitignore的文件使用方法
首先,在你的工作区新建一个名称为的.gitignore的文件。
然后,把要忽略的文件名填进去,GIT中就会自动忽略这些文件。
不需要从头写的.gitignore文件,GitHub的已经为我们准备了各种配置文件,只需要组合一下就可以使用了。
有时对于git项目下的某些文件,我们不需要纳入版本控制,比如日志文件或者IDE的配置文件,此时可以在项目的根目录下建立一个隐藏文件.gitignore(linux下以。开头的文件都是隐藏文件),然后在的.gitignore中写入需要忽略的文件。
1 2 3 4 |
|
.gitignore注释用'#',*表示匹配0个或多个任意字符,所以上面的模式就是要忽略所有的xml文件,日志文件和apk文件。
的.gitignore配置文件用于配置不需要加入版本管理的文件,配置好该文件可以为版本管理带来很大的便利。
的.gitignore规则忽略优先的级
在.gitingore文件中,每一行指定一个忽略规则,GIT中检查忽略规则的时候有多个来源,它的优先级如下(由高到低):
1)从命令行中读取可用的忽略规则
2)当前目录定义的规则
3)父级目录定义的规则,依次递推
4)$ GIT_DIR / info / exclude文件中定义的规则
5)core.excludesfile中定义的全局规则
.gitignore忽略规则的匹配语法
在.gitignore文件中,每一行的忽略规则的语法如下:
1)空格不匹配任意文件,可作为分隔符,可用反斜杠转义
2)以“ # ”开头的行都会被GIT中忽略。即#开头的文件标识注释,可以使用反斜杠进行转义。
3)可以使用标准的水珠模式匹配。所谓的圆顶封装模式是指壳所使用的简化了的正则表达式。
4 )以斜杠“ / ” 开头表示目录;“/”结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件;“/”开始的模式匹配项目跟目录;如果一个模式不包含斜杠,则它匹配相对于当前.gitignore文件路径的内容,如果该模式不在.gitignore文件中,则相对于项目根目录
.5)以星号“ * ”通配多个字符,即匹配多个任意字符;使用两个星号“ ** ”表示匹配任意中间目录,比如`a / ** / z`可以匹配a / z,a / b / z或a / b / c / z等。
6)以问号“ ? ”通配单个 符,即匹配一个任意字符;
7)以方括号” []“包含单个字符的匹配列表,即匹配任何一个列在方括号中的字符比如[ABC]表示要么匹配一个一个,要么匹配一个B,要么匹配一个C。;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配。比如[0-9]表示匹配所有0到9的数字,[az]表示匹配任意的小写字母)
.8)以叹号“ !“表示不忽略(跟踪)匹配到的文件或目录,即要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号取反需要特别注意的是(!):如果文件的父目录已经被前面的规则排除掉了,那么对这个文件用! “”规则是不起作用的。也就是说“!”开头的模式表示否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用“!”也不会再次被包含。可以使用反斜杠进行转义。
需要谨记:混帐对于.IGNORE配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。
混帐忽略规则(的.gitignore配置)不生效原因和解决
1 2 3 4 五 6 7 8 9 10 11 12 13 |
|
在使用的.gitignore后文件删除如何远程仓库中以前上传的此类文件而保留本地文件
在使用的git和github上的时候,之前没有写的.gitignore文件,就上传了一些没有必要的文件,在添加了的.gitignore文件后,就想删除远程仓库中的文件却想保存本地的文件。这时候不可以直接使用“git rm directory”,这样会删除本地仓库的文件。可以使用“ git rm -r -cached directory ”来删除缓冲,然后进行“ commit ”和“ push ”,这样会发现远程仓库中的不必要文件就被删除了,以后可以直接使用“ git add -A ”来添加修改的内容,上传的文件就会受到的.gitignore文件的内容约束。
额外说明:git库所在的文件夹中的文件大致有4种状态
1 2 3 4 五 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|