美文网首页前端杂记
Git实用命令指南

Git实用命令指南

作者: 会飞小超人 | 来源:发表于2018-11-26 17:56 被阅读5次

    1. 团队工作基本模型

    建立初始远程仓库->各人拉取远程仓库到本地->建立自己的开发分支->开发完成后push新的分支到远程仓库,以保存且同步->review代码后无问题,合并到master分支

    2. 创建并切换到自己分支工作

    查看所有分支

    git branch -a
    

    说明:后面的参数-a表示查看所有的分支,主要应用于从远程pull下来的分支,因为远程拉过来的分支非自己创建的,所以直接git branch看不到
    切换分支

    git branch <分支名>
    

    创建并切换到这条分支

    git checkout -b <分支名>
    

    把当前分支push到远程

    git push origin <分支名>
    

    说明:第一次创建远程没有的分支时,push需要带上分支名。后面git push不加参数时,就会默认推送到这个指定的分支了。
    推送分支且和远程分支同步

    git push origin <分支名> -u
    

    说明:可以发现用上面的git push后,虽然把本地的分支推送上远程仓库了,但是此时想要git pull的话,会出现类似于这样一个提示

    image.png

    意思就是说当前这个分支还没有远程跟踪,所以没有办法拉取远程代码。而在git push后面加一个-u就是解决这个问题。当然了,也可以不加这个参数,然后在pull的时候按照这个命令提示,加上远程分支的跟踪。

    3.拉取远程仓库

    初始拉取远程仓库

    git clone <git仓库链接>
    

    说明:git clone操作会拉取远程仓库的所有分支,不过拉下来后默认是处于master分支,可以使用git branch -a来查看所有的分支。使用git checkout <分支名>来切换到指定分支。
    同步远程代码到本地

    git pull
    

    说明:git pull不加分支名,表示拉取远程仓库所有默认同步的分支。这里默认同步的分支是初次git clone的时候远程仓库里包含的分支。git clone之后,远程仓库新添加的分支,则是拉不到的。如果要拉取新的分支,就需要指定分支名:git pull origin <分支名>

    3. 文件的三种状态以及各自的撤销方法:

    1. 未加入暂存区
    git checkout <文件名>
    
    1. 已加入暂存区,未提交更改
      git reset HEAD
    
    1. 已提交更改
     git reset --hard HEAD^
    

    4. 快捷提交(add+commit)

    git commit -a
    

    5. 合并分支

    假设当前HEADmaster上,需要合并feature1的分支

    git merge feature1
    

    这里会有这几种情况:

    1. master分支和feature1分支产生分叉,那么git会把feature1分支从分叉的地方开始的所有的更改内容合并到master上,并生成一个新的commit。但是master分支里不会有feature1分支的commit记录。
    2. master分支和feature1分支没有分叉且feature1分支领先于master分支。换言之,从master拉出feature1分支后,master分支一直没有任何提交,只有feature1分支有提交内容。此时git会执行fast-forward操作,直接把masterHEAD移动到feature1的位置上。同时master也会包含feature1的所有commit历史。此时masterfeature1处在同一commit的节点。
    3. master分支和feature1分支没有分叉且master分支领先于feature1分支。换言之,从master拉出feature1分支后,feature1分支一直没有任何提交,只有master分支有提交内容。此时git不会执行任何操作,命令行会提示Already up to date。反过来,切换到feature1分支,然后执行git merge master,可以将HEADfeature1移动到master的位置。与上面同理,feature1也会包含master的所有commit历史。此时masterfeature1处在同一commit节点。(这也映证了分支并无主次之分,所有分支都是平等的,并不会因为有的分支叫master就会针对它会有一些特殊性。--这是git的特性,github还是有写区别的)

    6.实用黑科技

    stash:临时存放工作目录的改动。在 Git 中,stash指令可以帮你把工作目录的内容全部放在你本地的一个独立的地方,它不会被提交,也不会被删除,你把东西放起来之后就可以去做你的临时工作了,做完以后再来取走,就可以继续之前手头的事了。
    具体说来,stash 的用法很简单。当你手头有一件临时工作要做,需要把工作目录暂时清理干净,那么你可以:

    git stash
    

    就这么简单,你的工作目录的改动就被清空了,所有改动都被存了起来。
    重新取出这个缓存继续之前的代码编写:

    git stash pop
    

    说明:
    没有被 track 的文件(即从来没有被 add 过的文件不会被stash 起来,因为 Git 会忽略它们。如果想把这些文件也一起stash,可以加上 -u 参数,它是 --include-untracked 的简写。就像这样:

    git stash -u
    

    参考链接:
    git push与pull的默认行为 https://segmentfault.com/a/1190000002783245

    相关文章

      网友评论

        本文标题:Git实用命令指南

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