一, 版本控制
Git是全量更新。Git的每一个版本中都包含所有的文件,比如从version1到version2,我只更新了A文件,但是version2中包含了修改后的所有文件(最新的)。这样可以时刻保证数据的完整性。
二, Git的四种状态
1, 已修改(modifid)
2, 已暂存(staged)
3, 已提交(commited)
三, 操作
1, 删除本地git仓库(.git文件)
rm –rf .git
2, 查看当前git状态
Git status
3, 合并add和commit
Git commit –am “注释”
4, 把暂存区的内容回退(回退到工作区)
git rm - -cached hello.txt
或git reset HEAD hello.txt
添加到工作区:git add hello.txt
5, 删除已提交(commited)的文件
方式一:
git rm hello.txt 删除后的文件被放到了暂存区
然后再执行commit才算彻底删除:git commit –m “彻底删除hello.txt”
如果执行了git rm hello.txt后,后悔删除了,怎么办:
现在文件在暂存区,执行:git reset HEAD hello.txt ,
此时文件回到工作区了,然后再执行:git checkout - - hello.txt
方式二:
rm hello.txt 这是linux命令删除,
这时必须git add . git commit 才彻底删除
6, 修改注释(提交时的注释写错了,怎么修改?)
git commit - -amend –m “新注释”
7, 忽略文件(.gitignore文件)
*通配任意字符
*.properties 忽略所有.properties文件
!b.proterties 除了b.proterties文件
8, 放弃对工作区的修改
git checkout - - hello.txt 撤销对工作区的修改。(有时候我们用ctrl +z 不能回退到没修改之前的状态,这个很有用)
9, 查看git日志
Git log
Git log - -graph 图形化日志
Git log - -graph - -pretty=oneline - -abbrev-commit
git log -2 查看最近两次的提交
git log –pretty=oneline 日志在一行显示
git log – pretty=format:”%h - %an , %ar:%s” 自定义日志格式
10, Linux命令
Ctrl + a 、ctrl + e 移动光标到头,尾
Ctrl + c 当前行写错了,放弃执行当前这一行
echo ‘hello’ > hello.txt 修改文件(覆盖)
查看文件内容 cat hello
四, 设置用户名密码
1, 命令
git config - -global 给整个计算机一次性设置,基本不用
git config - -system 给当前用户一次性设置,推荐
git config - -local 给当前项目一次性设置
优先级:local > system > global
2, 实际操作
进入到一个项目中,然后进入到 该项目的 .git目录下,执行:
git config - -local user.name “yourname”
git config - -local user.email “youremail”
进入到 .git目录下,打开config文件,可以看到用户名和密码被加入了,
存放在了.git目录下的config文件中
如果是给当前用户一次性设置:
那么需要:
cd ~ (进入了系统用户目录:/c/Users/yaming/.gitconfg)
cat .gitconfig (用户的config文件,给用户设置邮箱和名字,就保存在这个文件里了)
git config - -system user.name “yourname”
git config - -system user.email “youremail”
删除用户名邮箱:
git config - -local - -unset user.name
git config - -local - -unset user.email
五, 分支操作
1, 命令
创建分支git branch branchen_ame
查看分支 git branch (git branch –r 查看远程分支)
切换分支 git checkout branch_name
删除分支 git branch –d branch_name(删除前需要先合并到主分支)
强行删除 git branch –D branch_name
创建并切换分支 git ckeckout –b branch_name
合并分支(到master) git merge branch_name
查看分支最近一次提交的信息 git branch -v
2, 细节
如果在分支a中进行了写操作,但是此操作局限在工作区中进行(没有add,commit),在master中能够看到该操作。
如果分支a中进行了写操作,并进行了commit,则master中无法看到该文件。并且此时可以直接删除分支a。
3, 分支
分支是一个commit链,一条工作记录线
六, 分支合并与冲突
1, 分支指向commit, HEAD指向当前分支的头部(分支名)
2, 当切换到dev时,HEAD会指向dev
执行:git checkout –b dev
3, 对dev分支进行两次commit后,此时dev在master的前面了
4, 把dev分支合并到master。Master就可以直接追赶上dev了。追赶这个动作称之为fast forward。fast forward 本质是指针的移动。
执行 git merge dev
合并后master和dev指向同一个commit
5, 分支冲突
解决冲突:修改文件
Git add . git commit
七, 版本穿梭
1, 在多个commit之间进行穿梭。回退,前进
回退到上一次commit : git reset - -hard HEAD^
回退到上两次commit : git reset - -hard HEAD^^
回退到上n次commit : git reset - -hard HEAD~n
切换到任意commit处(通过sha1值,直接回退):git reset - -hard 850bc999(sha1值的前几位就行)
查看所有log:git reflog