zoukankan      html  css  js  c++  java
  • 学习笔记

    学习参考网址:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    Git是目前世界上最先进的分布式版本控制系统。

    Git区分与其他版本控制系统,主要有两个优点:一、不必联网;二、强大的分支管理

    Git区分为工作区和版本库:

     

     一、初始化管理库

    # 把文件夹变为git的管理库(初始化仓库)
    # 1. 进入目标文件夹的路径下
    # 2. git init
    $ pwd
    /Users/michael/learngit
    
    $ git init
    Initialized empty Git repository in /Users/michael/learngit/.git/
    

    二、代码添加和删除

    #### 代码修改后提交  
    git add readme.txt
    git commit -m “add readme.txt file”
    
    # add 是将目标文件添加到暂存区(index)  
    # commit 是将暂存区中的文件,一次性全部提交到分支上  
    # -m 是在提交中添加注释说明  
    
    #### 确实需要删除文件  
    
    git rm text.txt
    git commit -m "remote text.txt"

    三、查看状态(修改内容、提交历史、历史命令)

    # 查看工作区状态
    git statsu
    
    # 查看修改的内容
    git diff
    
    # 查看提交历史记录
    git log
    git log --pretty=oneline
    
    # 查看历史命令
    git reflog
    
    # 把当前版本“append GPL”回退到上一个版本“add distributed”
    git reset --hard HEAD^
    git reset --hard 3628163[用log 看到的版本号]

    四、操作回退

    # 场景1:当你改乱了工作区某个文件的内容,
    # 想直接丢弃工作区的修改时
    git checkout -- file。 # 场景2:当你不但改乱了工作区某个文件的内容, # 还添加到了暂存区时,想丢弃修改, # 分两步,第一步用命令git reset HEAD file,就回到了场景1, # 第二步按场景1操作。 # 场景3:已经提交了不合适的修改到版本库时, # 想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

      

    五、关联远程库,推送内容和克隆内容

    #### 关联github上的版本库learngit
    # orgin为默认远程库的名字
    git remote add origin git@github.com:bngu/learngit.git
    
    # 将所有东西推送到远程库
    # 把当前的master分支推送
    # -u的参数用于第一次时,关联本地和远程master分支
    git push -u origin master
    git push origin master
    
    #### 从远程库克隆
    git clone git@github.com:bngu/gitskills.git
    

      

    六、分支管理

    ## 创建dev分支,并切换到dev分支
    # 一
    git branch dev
    git checkout dev
    
    # 二
    git checkout -b dev
    
    ## 查看分支情况
    git branch
    
    ## 删除分支
    git branch -d dev
    

      

    # 查看分支的合并情况
    git log --graph --pretty=oneline --abbrev-commit
    

      

    #### 合并分支有两种不同的模式:fast forward 和 加上--no-ff参数的普通模式
    
    ## fast forward 模式
    # 出现不同分支有不同提交时必须首先解决冲突
    # 合并dev分支到当前分支
    git merge dev
    
    ## --no-ff
    # 先在dev分支上完成add和commit
    # 普通模式合并存在历史分支,可以git log看出来做过合并
    git merge --no-ff -m "merge with no-ff" dev
    

      

    # stash
    # 用于存储之前还未完成的工作区内容
    $ git stash
    Saved working directory and index state WIP on dev: 6224937 add merge
    HEAD is now at 6224937 add merge
    
    # 查看之前stash的内容
    $ git stash list
    stash@{0}: WIP on dev: 6224937 add merge
    
    # 恢复之前stash的工作区
    # 两种方法:
    # a.先恢复,再删除list中的记录
    git stash apply
    git stash drop
    
    # b.恢复的同时把stash内容也删了
    git stash pop
    

      

    # 强行删除没有合并的分支
    # 丢弃一个没有被合并过的分支
    git branch -D feature
    

      

    # 查看远程库的信息
    git remote
    # 显示更详细的信息
    git remote -v
    
    # 因此,多人协作的工作模式通常是这样:
    # 首先,可以试图用git push origin branch-name推送自己的修改;
    git push origin dev
    
    # 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
    git push
    
    # 如果合并有冲突,则解决冲突,并在本地提交;
    # 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
    
    # 如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name
    git branch --set-upstream dev origin/dev
    

      

    九、标签

    tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

    命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
    
    git tag -a <tagname> -m "blablabla..."可以指定标签信息;
    
    git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
    
    命令git tag可以查看所有标签。
    

      

    命令git push origin <tagname>可以推送一个本地标签;
    
    命令git push origin --tags可以推送全部未推送过的本地标签;
    
    命令git tag -d <tagname>可以删除一个本地标签;
    
    命令git push origin :refs/tags/<tagname>可以删除一个远程标签。
    

      

  • 相关阅读:
    C语言不定参数
    C和C++中的不定参数
    C/C++ 中头文件相互包含引发的问题
    Makefile经典教程(掌握这些足够)
    C语言中volatile关键字的作用
    C++中字符数组与string的相互转换
    C++中 使用数组作为map容器VAlue值的解决方法
    sql 内连接、外连接、自然连接等各种连接
    网站小图标
    Eclipse:快捷
  • 原文地址:https://www.cnblogs.com/blitheG/p/8472144.html
Copyright © 2011-2022 走看看