git入门

git入门

参考:
1.https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
2.https://git-scm.com/book/zh/v2

目的

之前在windows上一直使用tortoise git所以一直没有研究git 命令,现在新换了mac,图形工具支持不友好,系统学习了下相关文档,总结学习到的内容

git解决的问题

  • 每次修改一个东西,就怕把之前的改坏了,就需要不停的备份,所以需要记录每次文件的改动,git为每次提交保存一个快照,能实时恢复
  • 协作编辑编辑时经常需要很多人同时编辑,最后只能人工手动合并,git提供分支合并功能,且通过diff查看差异,帮助解决冲突和合并代码

git的诞生

  • 1991 Linus虽然创建了Linux
  • 志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码
  • Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符
  • 2002 BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统
  • 2005 开发Samba的Andrew试图破解BitKeeper的协议,BitMover收回免费使用权
  • linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git
  • 2008 GitHub网站上线了,它为开源项目免费提供Git存储

git和svn的区别

  • git是分布式版本控制系统,每个人的电脑上都是一个完整的版本库,不同用户只需要推修改,布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。(强大的分支管理能力)
  • git直接记录快照,而非差异比较
  • svn是集中式版本控制系统,版本库是集中存放在中央服务器的(必须联网)

git初始化配置

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

配置全局的用户名和邮箱,分布式服务必须指定自己的名称

git名词解释

工作区

在电脑里能看到的目录

文件状态

  • 已提交(committed) 已提交表示数据已经安全的保存在本地数据库中
  • 已修改(modified) 已修改表示修改了文件,但还没保存到数据库中。
  • 已暂存(staged) 已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

版本库

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

git入门_第1张图片
image
  1. 在工作目录中修改文件。
  2. 暂存文件,将文件的快照放入暂存区域。
  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

git本地仓库常用命令

git help                  --查看帮助
git init                        --初始化git仓库 
git config                      --配置git信息
    --global                    --配置全局参数
        alias.co checkout       --别名
        color.ui true           --显示颜色
git add                         --将文件添加到提交目录
git commit                      --提交add后的内容到本地仓库
    -m "wrote a readme file"    --提交说明,必须携带
    -a                          --跳过add,直接全部提交
    --amend                     --重新提交
git status                      --查看仓库状态,查看是否有文件被修改
git log                         --显示从最近到最远的日志
    --pretty=oneline            --一行显示
    -p                          --查看具体差距
    -3                          --查看最近几次日志
    --stat                      --简要说明
git reset                       --回退版本号(此时使用git log将看不到后续commit日志)
    head                        --当前版本
    head^                       --上一个版本,类推
    head~                       --上两个版本
    123124                      --commitid前几个数字,不重复即可
    --mixed                     --默认,回退到你未add时的状态
    --hard                      --回退,但你的修改全部消失
    --soft                      --回退到你add,但未commit的状态
git reflog                      --记录每一次的命令
git mv        --重命名,类似于rm+add
git diff                        --查看被修改的具体内容
    --cached(staged)            --
git checkout                    --撤销工作区修改
    -- file                     --指定文件(原先文件会消失)
git reset HEAD file             --撤销暂存区修改
git rm                          --删除版本库文件
    --cached                 --删除缓存,+push可以删除远程仓库

ssh加密

.ssh目录下创建id_rsa和id_rsa.pub
$ ssh-keygen -t rsa -C "[email protected]"

  • id_rsa 私钥
  • id_rsa.pub 公钥

git远程仓库常用命令

git remote add origin [email protected]:ziningmei/learngit.git      --设置远程仓库
git remote                      --查看远程库
    -v                          --更详细信息
git clone                       --从远程仓库克隆一个本地库

git分支命令

git checkout -b           --创建并切换分支(等同下两个命令)
git branch                      --查看分支(*表示当前分支)
git branch                --创建分支
git checkout              --切换分支
git push origin -d        --将当前分支push到远程分支
git fetch                       --将远程的commit拉取到本地,但不会修改head
git pull                        --将远程的commit拉取到本地,但会修改head指向最新的commit
                                --git fetch+git merge+git commit
git merge                 --将dev合并到当前分支
    --no-merged                 --未合并分支 
git branch -d             --删除分支
git push origin -d        --删除远程分支
git merge --no-ff -m "test" dev --强制禁用Fast forward模式,会生成一个commit
                                --ff模式删除分支会丢掉分支信息
git rebase                      --类似于merge,rebase是把分支上每一次提交merge一次,需要
                                --处理多个冲突,且不会生成commit
git stash                       --暂时保存工作区(需要先git add)
git stash apply stash@{0}       --恢复stash,并不删除
git stash drop                   --删除stash
git stash list                  --查看stash list
git stash pop                   --回复stash,并删除

git标签命令

git tag                         --查看的所有标签
git check                 --切换tag          
git tag         --对某个commit打标签
    -a                          --指定标签名
    -m                          --标签说明
    -d                          --删除标签
git show               --查看说明文字
git push origin        --将分支推到远程仓库
    --tags                      --推送所有的tags
    :refs/tags/        --远程删除标签

你可能感兴趣的:(git入门)