美文网首页
Git简易入门、速查总结

Git简易入门、速查总结

作者: EL33 | 来源:发表于2019-02-21 23:16 被阅读0次

一、什么是Git?

Git is s free and open source distributed version control sysytem

二、创建版本库

安装完成后,需要在你的机器上初始化一下,不加的会在clone时报错,具体见 问题

    ~$:git config --global user.name "Your Name"
    ~$:git config --global user.email "Your Email"

git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址

在需要创建版本库的地方执行

    ~$:git init
    ~$:#创建版本库或初始化一个已存在的版本库  

修改文件完成后可使用

    ~$:git add [file or directory]
    ~$:#将文件或者目录提交到暂存区

提交到仓库,message为提交的版本说明

    ~$:git commit -m "message"

三、版本控制

1、状态查询

查询当前工作区的状态

    ~$:git status

查看文件的被修改的内容

    ~$:git diff [file or directory]

显示文件的提交日志,加上--pretty=oneline参数可以精简输出信息

    ~$:git log [--pretty=oneline]
  • git log显示的信息中最前面一列一大串字母和数字的组合就是后面用到的commit id,如"1094a..."

2、版本回退

在Git中,用HEAD表示当前版本,上一版本为HEAD^,上上一版本为HEAD^^,上100个版本为HEAD~100
使用git reset命令回退版本

    ~$:git reset --hard HEAD^
    ~$:#回退到上一个版本

或者

    ~$:git reset --hard 1094a

其中1094a为某个要回退版本的commit id的前几位,不用写全,系统会自动识别
>Git回退版本的速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本时 Git仅仅把HEAD改变指向,然后顺便把工作区的文件更新了
当回退了版本以后,找不到“未来”版本的commit id时,可以使用git reflog来查看你的每一次操作

    ~$:git reflog

3、撤销修改

撤销修改命令

    ~$:git checkout -- [file or directory]

这样会有两种不同的情况

  • 当工作区文件修改后未添加到暂存区,撤销修改后文件回到和当前版本库一模一样的状态
  • 当工作区文件已经添加到暂存区,又做了修改,那此时撤销修改就会回到暂存区目前的状态

即回到最近一次git commit或者git add时的状态,当然提示

git checkout没有--参数会变成分支管理命令

当需要撤销暂存区的修改,回退到工作区时

    ~$:git reset HEAD [filr or directory]
    ~$:# 需要继续撤销工作区的修改可继续使用
    ~$:git checkout -- [file or directory]

git reset既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时表示最新版本

4、删除文件

    ~$:git rm [file or directory]
    ~$:git commit -m 'message'

我还没明白git rmrm有什么区别??!

四、远程仓库

1、连接远程仓库

建立SSH Key

在用户主目录下有.ssh文件,该目录下有id_rsaid_rsa.pub文件,其中id_rsa是私钥,id_rsa.pub是公钥。登录github——“Add SSH Key”,在key文本框中粘贴公钥的内容就可以建立连接了
当找不到时,最好的办法就是创建一个啦:

    ~$:ssh-keygen -t rsa -C "youremail@example.com"

这里ssh-keygen是一个命令,中间没有间隔

执行之后可看到屏幕提示:

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

再执行第一步操作即可

2、添加远程库

在本地仓库下运行

    ~$:git remote add origin git@github.com:yourgithubname/repositoryname

其中yourgithubname/repositoryname是你自己的github项目地址,添加完成后,origin就是远程库的名字了

3、推送本地内容至远程库

将当前的master分支推送到远程

    ~$:git push -u origin master
  • -u参数,Git会把本地的master分支和远程master分支关联起来,在之后的推送或者拉取取时就可以简化命令为git push origin master

4、从远程库克隆

    ~$:git clone git@github.com:yourgithubname/repositoryname

git还支持https等协议,但默认的git使用SSH,速度最快

五、分支管理

Git 的分支可以让你在主线(master分支)之外进行代码提交而不会影响代码库主线。分支的作用体现在多人协作开发中,比如一个团队开发软件,你负责其中一个功能,你就可以创建一个分支,把你自己代码提交到这个分支而不是主线,这样虽然你没有开发完,却不会影响你的同事,让他们在开发的时候不会面对你未完成的代码(不然别人又开发又要维持你的一部分岂不是很难过),这样你既不会丢失进度也不会对他们造成任何影响。岂不是美滋滋,当你完成你负责的模块以后,测试通过就可以把你的功能分支合并到主线啦

1、创建分支

现在我们来创建一个叫做branchname的分支

    ~$:git branch branchname

然后可以运行git branch来查看当前仓库所有的分支以及目前所属的分支(以*标识)

    ~$:git branch
    * branchname
    master

2、切换分支

当你想回到master分支时,可以使用似曾相识的git checkout命令

    ~$:git checkout master
    Switched to branch 'master'

3、合并分支

你可以分别对masterbranchname分支做不同的操作并且提交当仓库,当两个分支有不同的修改时,可以使用git merge命令来合并分支

    ~$:git checkout master
    ~$:git merge -m "合并分支的说明呀" master

当然,当出现两个分支同时修改了一个文件而产生冲突时,会合并失败,合并失败后先用git status查看状态,会发现发现冲突的文件显示为both modified,可进行手动修改来解决冲突

4、删除分支

我们合并完分支以后,发现不再需要branchname了,于是过河拆桥,卸磨杀驴,删除分支

    ~$:git branch -d branchname

-d只能删除那些已经被当前分支合并了的分支,要想强制删除使用-D即可

5、撤销合并与快速向前合并

撤销一个合并其实也就是回退一个版本啦

    ~$:get reset --hard HEAD^

所以,每一次合并其实都相当于一次commit,正常或者错误的合并都会把各个分支里面的内容写到一个commit里面。但是如果当前分支和另外一个分支并没有任何内容上的差异,此时合并分支就会让Git执行一个“快速向前(fast forward)”的操作,Git不会再创建一个新的commit,只是将当前的HEAD指向合并进来的分支


后续是标签管理,diff详解还有初次使用时的问题整理

相关文章

网友评论

      本文标题:Git简易入门、速查总结

      本文链接:https://www.haomeiwen.com/subject/vfmdyqtx.html