zoukankan      html  css  js  c++  java
  • Git基础操作

      git pull强行覆盖本地文件方法:

      如果您有任何本地更改,将会丢失。无论是否有--hard选项,任何未被推送的本地提交都将丢失。如果您有任何未被Git跟踪的文件(例如上传的用户内容),这些文件将不会受到影响。

      1.  git fetch --all

      2.  git reset --hard origin/master

         git reset --hard origin/<branch_name>  (其他分支)


      初始化一个Git仓库:$ git init

      查看隐藏目录:$ ls -ah

      添加文件到Git仓库,分两步:
        1.$ git add filename(可反复多次使用,添加多个文件)
        2.$ git commit -m "message"

      查看工作区的状态:$ git status

      查看修改内容:$ git diff

      查看提交历史:$ git log

      查看历史的版本号:$ git log --pretty=oneline

      退回某个版本:$ git reset --hard commit_id
        p.s. commit id(版本号)可以是HEAD^(上一版)、HEAD^^(上上一版)、HEAD~100(上100版)或实际版本号的前几位

          hard是参数,也可改为soft等等,功能不同。 

      查看命令历史:$ git reflog

      查看工作区和版本库里面最新版本的区别:$ git diff HEAD -- filename

      丢弃工作区的修改,让文件回到最近一次git commit或git add时的状态:$ git checkout -- filename

      把暂存区的修改撤销掉,重新放回工作区:$ git reset HEAD filename

      关联一个远程库:$ git remote add origin git@server-name:path/repo-name.git
        例:$ git remote add origin git@github.com:FanSolomon/learngit.git(path写自己GitHub的账号名)

      第一次推送master分支的所有内容:$ git push -u origin master

      此后推送最新修改:$ git push origin master

      克隆某仓库到本地:$ git clone git@server-name:path/repo-name.git
        例:$ git clone git@github.com:FanSolomon/TEST.git(path写自己GitHub的账号名)


      创建+切换分支:$ git checkout -b name

      创建分支:$ git branch name

      切换分支:$ git checkout name

      查看分支:$ git branch

      合并某分支到当前分支:$ git merge name

      删除分支:$ git branch -d name

      查看分支合并图:$ git log --graph
        例:$ git log --graph --pretty=oneline --abbrev-commit

      强制禁用Fast forward模式合并分支:$ git merge --no-ff dev
        p.s.Fast forward模式下,删除分支后,会丢掉分支信息,看不出曾经做过合并。
             普通模式合并,合并后的历史有分支,能看出曾经做过合并。

      "储藏"当前工作现场:$ git stash

      查看工作现场:$ git stash list

      恢复工作现场:$ git stash pop(恢复的同时删除了stash的内容)
             $ git stash apply(恢复后stash内容并不删除)
        p.s.也可以多次stash,恢复的时候先用git stash list查看,然后恢复指定的stash,用命令$ git stash apply stash@{0}

      删除一个没有被合并过的分支:$ git branch -D name

      查看远程库的信息:$ git remote(更详细$ git remote -v)

      推送分支:$ git push origin name
        p.s.Git中分支完全可以在本地自己藏着玩,是否推送视心情而定

      在本地创建和远程分支对应的分支:$ git checkout -b branch-name origin/branch-name(本地和远程分支的名称最好一致)

      推送分支失败时抓取远程的新提交:$ git pull
        p.s.此时git pull失败,因为没有指定本地dev分支与远程origin/dev分支的链接,根据提示,应设置dev和origin/dev的链接

      建立本地分支和远程分支的关联:$ git branch --set-upstream-to <branch-name> origin/<branch-name>
        例:$ git branch --set-upstream-to=origin/dev dev

      把本地未push的分叉提交历史整理成直线:$ git rebase
        p.s.将分叉的提交历史"整理"成一条直线,看上去更直观。缺点是本地的分叉提交已经被修改过了。


      新建标签:$ git tag name
        p.s.默认为HEAD,也可以指定一个commit id(如$ git tag v0.9 f52c633)

      创建带有说明的标签:$ git tag -a tagname -m "illustrate..."
        例:$ git tag -a v0.1 -m "version 0.1 released" 1094adb

      查看所有标签:$ git tag

      查看标签信息:$ git show tagname

      >创建的标签都只存储在本地,不会自动推送到远程。所以,打错的标签可以在本地安全删除。
      >如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除,然后从远程删除。

      推送一个本地标签:$ git push origin tagname

      推送全部未推送过的本地标签:$ git push origin --tags

      删除一个本地标签:$ git tag -d tagname

      删除一个远程标签:$ git push origin :refs/tags/tagname

    具体用法可参考:

    https://www.liaoxuefeng.com/


  • 相关阅读:
    对Java面向对象的理解(笔记)
    java中switch语句实际的执行顺序;java中scanner输入为什么会被跳过;Java中scanner close方法慎用的问题;什么是方法
    面向对象编程思想 以及 封装,继承,多态 和 python中实例方法,类方法,静态方法 以及 装饰器
    python关于debug设置断点调试模式下无法命中断点的问题
    手把手教大家如何用scrapy爬虫框架爬取王者荣耀官网英雄资料
    python中可变长度参数详解
    爬虫如何使用phantomjs无头浏览器解决网页源代码经过渲染的问题(以scrapy框架为例)
    python如何通过正则表达式一次性提取到一串字符中所有的汉字
    Linux 输入输出(I/O)重定向
    Linux shell 通配符 / glob 模式
  • 原文地址:https://www.cnblogs.com/ZYTZ/p/9247913.html
Copyright © 2011-2022 走看看