1.基本信息设置:
git config --global(基本不用,给整个计算机一次性设置)
git config --system(给当前用户一次性设置)
git config --local(给当前项目一次性设置)
设置用户名: git config --global user.name ‘用户名’
设置用户名邮箱:git config --global user.name ‘邮箱’
git checkout -- 文件名”撤销操作(checkout还可以用于切换分支的命令)
2.初始化仓库:
将某个目录纳入git管理,必须进行git init (清屏:clear/ctrl+L)
3.查看修改的日志记录:
git log(“git log –次数“查看最近的次数)
4.重命名操作:
git mv 文件名 新文件名
重命名操作,实际是从一个文件移动到另一个文件,并把原文件删除,若执行撤销删除操作,则会出现两个文件。
5.重写提交说明:
git commit –amend –m ‘修正说明’ (只是修改最近一次的提交说明)
6.忽略文件:
创建.gitignore文件,把要忽略提交的文件名写入到.gitignore文件里,就会自动忽略提交里面的文件。忽略文件下下所有的文件:dir/:(dir/*/*.txt能够忽略dir/abc/a.txt dir/xyz/x.txt 不能忽略dir/xyz/123/a.txt 但dir/**/*.txt可以忽略任意级目录)。空目录默认就是忽略的。
7. 通配符:*(任意通配符)
8. !(非)通常与通配符配合使用
9.分支操作:分支是一条工作链
查看分支:git branch
创建分支:git branch 分支名
切换分支:git checkout 分支名
分支重命名:git branch -m 分支名 新分支名
删除分支:git branch –d 分支名(自己不能删自己,即不能删除当前分支)
(其他不能删除的情况:包含“未合并”(增、删、改)的内容,使用“git merge 分支名”命令进行合并)
强行删除分支:git branch –D 分支名
(细节:1.如果在分支A中进行了写操作,但此操作局限在工作区中进行(没有add commit),在master中能够看到该操作,如果分支A进行了commit,则在master中无法观察到此文件。2.如果在分支A中进行了写操作,此操作局限在工作区中进行,删除分支A是可以直接进行的,如果分支A进行了commit,则删除该分支之前主分支必须与其合并,或强行删除。简单来说,如果commit了,可以直接删,如果没commit,不能直接删)
创建并切换:git checkout –b 分支名
10.合并:
①合并不冲突:
如果一个分支A靠前,一个分支B靠后,则如果不冲突,B可以通过merge直接追赶上A。称为fast forward(本质就是分支指针的移动)。git在merge时,默认使用fast forward,最终两个分支归于一点commit,并且没有分支信息(丢失分支信息)。也可以禁止使用:git merge --no-ff ,两个分支不会归于一点commit(主动发起合并的分支会前进一步(通过git log查看每一步的sha1值)),分支信息完整(不会丢失分支信息)
②合并冲突:如果有冲突(两个分支同时在同一个文件的同一位置做了修改)
需要解决冲突:先通过vi修改冲突文件内容,再次提交
git add 文件名(告知git冲突已解决,不是将工作区提交到暂存区)
git commit -m ”**”
解决冲突后两分支的文件内容如下:(注意,此时两分支的的hello.txt文件内容并不是一样的)
如果此时再对new_branch分支进行合并,不会发生冲突,因为此时的new_branch落后于master一步,落后方可以直接通过merge合并到前进方(master主动发起合并,比new_branch分支前进一步)。
可以通过sha1值来查看分支链(sha1是一种加密函数,在这里主要是为了产生随机码)
11.版本穿梭:在多个commit之间进行穿梭、回退、前进
回退到上一次commit:git reset --hard HEAD^ (写n个^就回退到上n次)
回退到上n次commit:git reset --hard HEAD~n
跳转到任意一次commit:通过sha1值直接回退 git reset --hard 803c999(sha1值的前几位),git reflog 记录所有的操作,通过查看记录,记住想要跳转到某一步的sha1值,再结合git reset直接跳转即可。
12.stash保存现场:
注意规范(建议):在功能没有开发完毕之前,不要commit
规定(必须):在没有commit之前,不能checkout切换分支
如果还没有将某一个功能开发完毕就要切换分支,建议:
保存现场(临时保存:stash)
保存现场:git stash
还原现场:git stash pop
git stash apply
查看现场:git stash list
13.checout命令的几个功能:
①放弃修改。放弃的是工作区中的修改,相对于暂存区或仓库
reset是将之前增加到暂存区中的内容回退到工作区
②版本穿梭(游离状态):git checkout sha1值
。修改后必须提交 。此状态是创建分支的好时机:git branch 分支名 sha1值
③切换分支