zoukankan      html  css  js  c++  java
  • GIT 教程

    GIT 教程,来源: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

    1.windows下载 https://git-for-windows.github.io  。 或国内镜像 。按默认选项安装即可。

    2.安装结束后,开始菜单找到“Git”->“Git Bash”

    并输入(-- 后无空格):    

    git config --global user.name "Your Name"      
    git config --global user.email "email@example.com"

    3.切换到自己想要的目录,确保目录中不要有中文。。创建一个空目录。

    $ mkdir learngit
    $ cd learngit
    $ pwd     #pwd命令用于显示当前目录
    /Users/michael/learngit

    4. 执行      git init  命令。把目录变成 GIT可以管理的仓库。

        ps: 同时,会有创建一个 .git 的隐藏文件。使用  ls -ah 命令可看见。

    注: 建议使用标准的UTF-8编码 。使用Notepad++ 时,默认编码设置为UTF-8 without BOM

    5. 添加文件到Git仓库,分两步:

    第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;       

    $ git add readme.txt       # git add 是将修改内容或者新文件添加到本地缓存区

    第二步,使用命令git commit,完成。 -m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。

    git commit -m "wrote a readme file"        # git commit 将本地缓冲区的内容提交到本地仓库

    6.查看当前工作区的状态   git status   。可以知道有哪些文件被修改过

    7.查看修改的内容  git diff

    8. 显示从最近到最远的提交日志   git log       。每条记录对应显示commit时,同步的mess

       HEAD 表示当前版本,即最新提交

       HEAD^ : 上一个版本                

       HEAD^^  :上上一个版本

       HEAD~100   :往上100个版本

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

    跳转到指定版本,需知道版本ID:       git reset --hard 版本号  (版本号可以不写全,也不能太短。)

    9. 查看命令历史 : git reflog     。      ps: 通过操作历史, 可以确定要回到未来的哪个版本

    10.工作区: 在电脑里能看到的目录

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

                          GIT版本库中包含 称为stage(或者叫index)的暂存区。还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。


    11. 把文件往Git版本库里添加的时候,是分两步执行的:

    (1)用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

    (2)用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

    创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,git commit就是往master分支上提交更改。

    >>>需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改

    12.GIT管理的是修改。 commit的内容 只会是提交了修改,即 add 之后的内容。

    git diff HEAD -- readme.txt       # 可以查看工作区和版本库里面最新版本的区别

    13. 撤销修改

     git checkout -- file       :把file 文件在工作区的修改全部撤销,即没有add过的修改       (git checkout -- file命令中的--很重要,没有- -,就变成了“切换到另一个分支”的命令)

    (1)file 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

    (2)file  已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

    >>>> 让这个文件回到最近一次git commitgit add时的状态。

     git reset HEAD file : 可以把暂存区的修改撤销掉(unstage),重新放回工作区  。即add 但是没有commit 的修改 时,可执行此命令。

    13. 删除文件

    rm  删除

    git  rm file  :从版本库中删除该文件 。后面还需要 git commit

    git checkout -- test.txt  : 把误删的文件恢复到最新版本。

                                               git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    14. 关联本地仓库和 GitHub : 

    (1)在本地的 learngit仓库下,运行命令

     git remote add origin git@github.com:GITHub账户名/learngit.git         添加后,远程库的名字就是origin (Git默认的叫法)

     (2) 第一次将本地库内容推送到远程

    git push -u origin master   第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来

       git push origin master 后续把本地master分支最新修改推送至GitHub

    15.SSH警告

    第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告: 即判断  GitHub的RSA Key的指纹信息是否与SSH连接给出的一致   。yes  即可。

    16.从远程库克隆

    git clone git@github.com:GITHub账户名/gitskills.git  用命令克隆一个远程库。   (gitskills 是GitHub上创建的仓库名)

    17. 分支管理

    git branch 查看当前分支 。 git branch命令会列出所有分支,当前分支前面会标一个*号。

    git branch dev 创建dev分支

    git checkout dev 切换到dev分支

    或 git checkout -b dev 表示创建并切换



    git merge dev 把dev分支的工作成果合并到master分支上 (git merge命令用于合并指定分支到当前分支。)

    git branch -d dev 删除dev分支


    18. 解决冲突:

    git status 可以告诉冲突的文集。 然后先手动解决冲突,再提交

    Git用<<<<<<<=======>>>>>>>标记出不同分支的内容

     git log --graph --pretty=oneline --abbrev-commit     用带参数的git log也可以看到分支的合并情况

    git log --graph  可以看到分支合并图

    19. 分支管理策略

    策略一: Fast forward模式 (该模式下,删除分支后,会丢掉分支信息)

    策略二:强制禁用Fast forward模式,即用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并

                 it merge --no-ff -m "merge with no-ff" dev   # --no-ff参数,表示禁用Fast forward,
                                                                                          #本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去

     20.

    git remote 查看远程库的信息

    git remote -v 显示更详细的信息,可抓取和推送的origin地址。如果没有推送权限,则看不到push地址。

    21. bug分支
    通过一个新的临时分支来修复bug,修复后,合并分支,然后将临时分支删除。

    对于修复紧急bug分支时,可以先冻结当前工作现场 git stash

    bug修复后,可通过 git stash list 查看当前工作现场 git stash list

    恢复工作现场 git stash apply

    删除stash内容 git stash drop

    或在恢复工作现场的同时,就把stash内容删除 git stash pop

    22.Feature分支

    需求分支,每添加一个新功能,新建一个 feature分支。

    git checkout -b feature-vulcan #新建feature分支

    git branch -d feature-vulcan 合并前删除分支,此时会有提示删除后则丢失修改

    git branch -D feature-vulcan 强行删除。则可删除成功。、


    23.推送分支

    git push origin master 把分支上所有本地提交,推送到远程库对应的远程分支上

    git push origin dev 推送其他分支到远程库

    24.判断是否需要推送:
    (1)master分支是主分支,因此要时刻与远程同步;

    (2)dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

    (3)bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

    (4)feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

    25.
    标签管理
    标签tag是让人容易记住的有意义的名字。是指向某个commit的指针。如V1.2

     
  • 相关阅读:
    BAT脚本编写要点(1)_特殊字符
    开源爬虫软件汇总
    使用Gradle发布项目到JCenter仓库
    解决Android中,禁止ScrollView内的控件改变之后自动滚动
    理解RESTful架构
    一种为 Apk 动态写入信息的方案
    Proguard配置注解
    使用statsvn统计svn中的代码量
    android如何释放图片缓存
    Git命令参考手册(文本版)
  • 原文地址:https://www.cnblogs.com/ericazy/p/7285612.html
Copyright © 2011-2022 走看看