git 版本管理真的是超级方便。分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
对于文本类文件能够知道增加、删除了哪些内容(对于二进制文件 图片、word,就很难管理了)。Git管理的是修改,而不是文件。其中,我们要明白两个概念:工作区和暂存区。工作区是我们正常工程文件下的区域,暂存区是.git
文件夹下的,当我们git add .
文件后 文件被添加至stage暂存区。
Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)-讲的非常好!
文件往Git版本库里添加的时候,是分两步执行的:
第一步是用git add
把文件添加进去,实际上就是把文件修改添加到暂存区;
第二步是用git commit
提交更改,实际上就是把暂存区的所有内容提交到当前分支。
因为我们创建Git版本库时,Git自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改。
git init
git add readme.txt -- 一次可以多次添加文件,再一起commit
git commit -m "add readme.txt"
git satus -- 查看暂存区和工作区文件的状态:哪些文件做了修改、哪些文件还未提交。
git diff readme.txt -- 也可以不加具体的文件,查看暂存区和工作区文件的修改区别。
git log -- 查看提交记录 记录了每一次提交的内容和commitid
git log --pretty=oneline --显示更简洁的log信息
git reset --hard xxx -- xxx表示commitid 会退到指定的版本。这个时候再git log查看 已经到了该版本啦
当回退到指定版本后,想恢复,但是这个时候没办法在控制台找到commitid了,这个时候
git reflog
---- 记录了每一次提交的id
381c40d HEAD@{0}: reset: moving to 381c4
f83abc6 HEAD@{1}: reset: moving to f83abc
381c40d HEAD@{2}: reset: moving to 381c
f83abc6 HEAD@{3}: reset: moving to HEAD^
381c40d HEAD@{4}: commit: all
f83abc6 HEAD@{5}: commit (initial): wrote a readme file
git add
到缓存区 – git status
查看,根据提示修改# 位于分支 master
# 尚未暂存以备提交的变更:
# (使用 "git add <file>..." 更新要提交的内容)
# (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
# 修改: test.txt
git add
到了缓存区 – 同理git commit
到了分支 –git reset
版本回退git push
到了远程本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要设置:
远程仓库 - 廖雪峰的官方网站 (liaoxuefeng.com)
ssh-keygen -t rsa -C "youremail@example.com"
然后在github中添加公共钥匙。
git remote add origin git@github.com:hi-nikola/learngit.git -- ssh链接
git push -u origin master -- git push origin master
由于远程库是空的,我们第一次推送
master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令,不带u了。
查看git户主名和邮箱
git config user.name
git config user.email
# 绑定
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
# 解绑
git config --global --unset user.name "Your Name"
git config --global --unset user.email "you@example.com"
查看或者删除remote:
git remote -v
git remote rm origin
git branch -m 旧名字 新名字
git branch -m master main
查看分支:
git branch
创建分支:git branch <name>
切换分支:git checkout <name>
或者git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
合并分支以及解决冲突:解决冲突 - 廖雪峰的官方网站 (liaoxuefeng.com)