zoukankan      html  css  js  c++  java
  • Git和Github的使用教程

    Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目;

    GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。

    0、首先在电脑上安装好Git;

          关于区域描述,git管理的目录叫工作区(.git文件夹除外),add 文件后的叫暂存区,提交后是分支(版本库);

    常用命令

    1、配置用户名和邮箱,打开Git Bash

    1. git config --global user.name "username"
    2. git config --global user.email "email"  
    3. 使用git config --list查看已设用户配置

    2、创建版本库

          先在电脑合适的地方创建一个空目录,

          打开Git Bash,输入cd '目录路径',

          输入 git init      (init表示管理这个目录);

    3、添加文件

          创建一个文件放在git管理的目录下,

          git add 文件名     (该操作把文件添加到了暂存区),

          git commit -m "提交描述"     (该操作把文件添加到了分支),

          使用git log --pretty=oneline命令可以看到每次提交的记录(commit的ID和描述),

          git reflog命令记录你的每一次命令,里面有commit ID,方便回退;

    4、文件比对:

                git diff 是工作区和暂存区的对比

                git diff -- cached 是暂存区和分支的对比

                git diff HEAD -- readme.txt 工作区和分支的对比

    5、版本回退

         (1) 对于已提交的版本(commit): git reset --hard 要回退到的commit id  (版本号不用写全,写前几位就行了);

         (2)命令git checkout -- 文件名 意思就是,把该文件在工作区的修改全部撤销,这里有两种情况:

                       一种是该文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

                       一种是该文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

                       总之,就是让这个文件回到最近一次git commitgit add时的状态。

         (3)对于已add到暂存区但未提交的,可以撤销修改,放回工作区:git reset HEAD 文件名     (HEAD表示最新版本);

         (4)可以使用 git status查看当前暂存区的状态;

    6、文件删除

         可以先手动在目录(工作区)删除文件,或者用 rm 文件名 删除文件;

         然后可以用git status看到哪些文件被删了,此时工作区和版本库就不一致了,此时可以:

            (1)用git rm 文件名   把版本库的也删掉;

            (2)是误删手动误删时,可以用git checkout -- 文件名   命令来恢复(git checkout是把版本库的版本替换工作区的版本,回退删除或修改);

      (3)git rm - m "文件夹"

    7、分支管理

          (1)创建和合并分支

                创建一个分支,可以先在分支上修改内容,再选择合并到主分支或者撤销修改;

                可以在分支上修改文件,并add和commit后,再切换回主分支,分支合并,再删除不用了的分支;

                   查看分支:git branch

                   创建分支:git branch <name>

                   切换分支:git checkout <name>

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

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

                   删除分支:git branch -d <name>

                   强行删除:git branch -D <name>

             (2)分支历史

                   若使用git merger 分支名合并分支,再删除分支后,会丢掉分支信息,可以使用git merge --no-ff -m "提交描述" 分支名 命令来合并,合并后有历史分支,可以使用git log 查询;

             (3)暂存当前分支

                   使用 git stash 把当前分支‘储藏’起来,干完其它事情再回来接着用分支;

                   通过git stash list 查看储藏的分支,用 git stash apply stash@{分支序号} 恢复;

    8、分支合并冲突

            若两个分支所修改的文件合并后有所冲突,可以用 git status 看到冲突,手动去文件里解决修改冲突,再add,commit;

            用 git log --graph --pretty=oneline --abbrev-commit 命令可以看到分支合并图。

             使用远程仓库Github

    1、配置

        (1)首先应去github官网注册一个账号;

        (2)添加SSH:登陆Github - 打开Account settings - 打开SSH Keys页面,根据需要填写title,在文本框粘贴来自C:Users管理员名.sshid_rsa.pub文件的内容,点击Add Key;

    2、添加远程库(本地已有git仓库,又想在GitHub上创建一个仓库,并把两个库关联起来)

         (1)本地仓库建好后,在GitHub上创建一个仓库(在头像旁边点添加新库-填入仓库名-点创建);

         (2)在本地Git Bash输入git remote add origin git@github.com:github用户名/新建仓库名.git

                 origin就是远程库名(当然也可以写为其它),可以使用git remote -v显示远程库信息

         (3)把本地库指定分支全部推送到远程库对应分支:git push -u origin master     (master是主分支;-u 表示把指定远程master关联起来);

    3、从远程仓库克隆(远程库已建好了,本地没有)

         (1) 使用git clone git@github.com:github用户名/远程仓库名.git  命令,克隆完后可以在当前目录下看到克隆下来的仓库

         (2) 使用 cd '仓库目录路径'  可以转换当前管理的仓库目录;

    4、本地库分支和远程库分支

           (1)github上已经有master分支 和dev分支

           在本地:

                git checkout -b dev 新建并切换到本地dev分支

                git pull origin dev 本地分支与远程分支相关联

          (2)在本地新建分支并推送到远程

               git checkout -b test

               git push origin test   这样远程仓库中也就创建了一个test分支

    5、远程库推送冲突

         (1)若两个本地库修改文件,但有所冲突,后推送的一个则会推送失败;

         (2)首先建立本地分支和远程分支的关联,使用git branch --set-upstream 本地分支名 origin/分支名

         (3)再抓取最新提交的文件  git pull;

         (4)解决冲突,并add、commit、push; 

             标签

    发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照。所以,tag就是一个让人容易记住的有意义的名字,它跟某个commit绑在一起。

    1、打上标签:   git tag 标签名 commit id  (标签名就对应着本次提交;若commit id省略,默认最新一次提交)

    2、 打上带说明的标签:   git tag -a 标签名 -m "标签说明" commit id

    3、使用 git tag查看所有标签; 使用 git show 标签名 查看标签信息;

    4、git tag -d 标签名   本地删除标签;

    5、推送某个标签到远程,使用命令git push origin 标签名;一次性推送全部尚未推送到远程的本地标签 git push origin --tags;

    6、删除远程库标签:  git push origin :refs/tags/标签名;

           特殊文件忽略提交

    1、在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件:

           #windows 

            thrund.db

            *.class

     

    2、使用 git add -f 文件名 强行加载;

    3、也可下载他人已写好的.gitignore文件,我们修改一下就可以了,GitHub已经为我们准备了各种配置文件,只需要组合一下就可以使用了。所有配置文件可以直接在线浏览:https://github.com/github/gitignore

     

               配置命令别名

    1、例如使用  git config --global alias.st status  命令,以后想查看状态时,就可以 git st  (原git status);

            git config --global alias.命令别称 原命令  (其中--global是针对当前用户有用,如果不加,则对当前仓库有用)

    2、删除别称

             每个仓库的Git配置文件都放在.git/config (该目录是隐藏的)文件中,别称就在[alias]后面,要删除,直接把对应的行删掉即可。

               删除github上的文件 不删本地的文件

    1、需求描述:有些本地的配置文件或者自动生成文件不想提交到远程仓库

    2、先把文件或文件夹加入到 .gitignore->

    git rm --cached -r 文件名或文件夹名        //删除文件夹需要 -r
    git commit -m "提交描述"
    git push

    以上内容参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

  • 相关阅读:
    Python基础(2)——数据类型:Numbers、列表、元组、字典、字符串、数据运算
    Exadata V2 Pricing
    Oracle网络TNS协议介绍(revised)
    V$LOCK视图显示TX锁没有对应的TM锁的几种可能现象
    Poor Data Export Performance(revised)
    single quote needed in expdp query?
    No way to disable datapump estimate?
    Oracle网络TNS协议的几个基础类描述(revised)
    logfile switch causes incremental checkpoint?
    图文详解安装NetBackup 6.5备份恢复Oracle 10g rac 数据库(修订)
  • 原文地址:https://www.cnblogs.com/Drajun/p/7488867.html
Copyright © 2011-2022 走看看