zoukankan      html  css  js  c++  java
  • git重新学习

    一个学习网址:https://learngitbranching.js.org/

    一.对于一个新的远程空仓库

      本地新建文件后推送

    #初始化
    git init
    #添加文件
    git add README.md
    #提交版本
    git commit -m "first commit"
    #添加远程仓库
    git remote add origin https://github.com/tjp40922/test.git
    #把提交版本推送到远程仓库
    git push -u origin master
    
    #或者直接推送
    $ git push https://github.com/tjp40922/test.git
    
    #虽然第一次推送指定了目标仓库地址,但是并没有进行永久关联仓库,下一次推送还是会有这样的提示(直接Git pull拉去之后挨次提交也是会有这样的提示,也是要进行下面的操作):
    $ git push
    fatal: No configured push destination.
    Either specify the URL from the command-line or configure a remote repository using
    
        git remote add <name> <url>
    
    and then push using the remote name
    
        git push <name>
    
    #进行仓库关联
    git remote add master https://github.com/tjp40922/test.git
    
    #再次推送了
    $ git push master
    fatal: The current branch master has no upstream branch.
    To push the current branch and set the remote as upstream, use
    
        git push --set-upstream master master
    
    #需要进行身份验证(验证完成就可以直接推送了)
    $  git push --set-upstream master master
    Username for 'https://github.com': tjp40922
    Counting objects: 3, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (2/2), done.
    Writing objects: 100% (3/3), 304 bytes | 0 bytes/s, done.
    Total 3 (delta 0), reused 0 (delta 0)
    To https://github.com/tjp40922/test.git
       04475e7..588c8af  master -> master
    Branch master set up to track remote branch master from master.
    
    #这样操作后翼子操作的都是主分支

    二.当本地新建一个空文件夹

    #从远程克隆主分支(克隆完记得进入克隆下来的项目文件夹再进一步操作)
    git clone https://github.com/tjp40922/test.git
    #查看分支(还是在主分支)
    git branch
    #创建新并切换到的分支(dev)
    git checkout -b dev
    #再次查看新分支(已经切换到新的分支)
    git branch
    #把dev分支推送到远程仓库
    git push origin HEAD -u
    
    #因为克隆下来的会有仓库跟中记录的,不需要像第一种情况还需要进行关联
    #这样以后推动的都会直接推动到dev分支,master在从dev拉去代码进行合并
    #但是这样默认每次pull/push都是到dev分支的,所以每次需要拉拉取主分支就需要pull + 主分支的地址
    
    如果本地分支已经关联远程的主版本,直接pull即可
    否则,可用
    git pull origin 远程主分支名:本地分支名
    进行拉取
    git pull origin master:dev

    #对于文件夹可以通过进入文件夹把文件夹的文件进行提交,文件夹就会被一并提交

     三.创建忽略文件以及过滤规则

    今天讲讲Git中非常重要的一个文件——.gitignore。
    
    首先要强调一点,这个文件的完整文件名就是“.gitignore”,注意最前面有个“.”。这样没有扩展名的文件在Windows下不太好创建,这里给出win7的创建方法:
    
    创建一个文件,文件名为:“.gitignore.”,注意前后都有一个点。保存之后系统会自动重命名为“.gitignore”。
    
    一般来说每个Git项目中都需要一个“.gitignore”文件,这个文件的作用就是告诉Git哪些文件不需要添加到版本管理中。
    
    实际项目中,很多文件都是不需要版本管理的,比如Python的.pyc文件和一些包含密码的配置文件等等。
    
    这个文件的内容是一些规则,Git会根据这些规则来判断是否将文件添加到版本控制中。
    
    下面我们看看常用的规则:
    
    /mtk/ 过滤整个文件夹
    
    *.zip 过滤所有.zip文件
    
    /mtk/do.c 过滤某个具体文件
    
    很简单吧,被过滤掉的文件就不会出现在你的GitHub库中了,当然本地库中还有,只是push的时候不会上传。
    
    需要注意的是,gitignore还可以指定要将哪些文件添加到版本管理中:
    
    !*.zip
    
    !/mtk/one.txt
    
    唯一的区别就是规则开头多了一个感叹号,Git会将满足这类规则的文件添加到版本管理中。
    
    为什么要有两种规则呢?想象一个场景:我们只需要管理/mtk/目录中的one.txt文件,这个目录中的其他文件都不需要管理。那么我们就需要使用:
    
    /mtk/
    
    !/mtk/one.txt
    
    假设我们只有过滤规则没有添加规则,那么我们就需要把/mtk/目录下除了one.txt以外的所有文件都写出来!
    
    最后需要强调的一点是,如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,Git仍然会对所有文件进行版本管理。
    
    简单来说,出现这种问题的原因就是Git已经开始管理这些文件了,所以你无法再通过过滤规则过滤它们。
    
    所以大家一定要养成在项目开始就创建.gitignore文件的习惯,否则一旦push,处理起来会非常麻烦。
    
     
    
    # 此为注释 – 将被 Git 忽略
     
    *.a       # 忽略所有 .a 结尾的文件
    !lib.a    # 但 lib.a 除外
    /TODO     # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
    build/    # 忽略 build/ 目录下的所有文件
    doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

      

    假设你在Windows下进行Python开发,Windows会自动在有图片的目录下生成隐藏的缩略图文件,如果有自定义目录,目录下就会有Desktop.ini文件,因此你需要忽略Windows自动生成的垃圾文件:

    # Windows:
    Thumbs.db
    ehthumbs.db
    Desktop.ini

    然后,继续忽略Python编译产生的.pyc.pyodist等文件或目录:

    # Python:
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build

    加上你自己定义的文件,最终得到一个完整的.gitignore文件,内容如下:

    # Windows:
    Thumbs.db
    ehthumbs.db
    Desktop.ini
    
    # Python:
    *.py[cod]
    *.so
    *.egg
    *.egg-info
    dist
    build
    
    # My configurations:
    db.ini
    deploy_key_rsa
    

      

    最后一步就是把.gitignore也提交到Git,就完成了!当然检验.gitignore的标准是git status命令是不是说working directory clean

    使用Windows的童鞋注意了,如果你在资源管理器里新建一个.gitignore文件,它会非常弱智地提示你必须输入文件名,但是在文本编辑器里“保存”或者“另存为”就可以把文件保存为.gitignore了。

    有些时候,你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了:

    $ git add App.class
    The following paths are ignored by one of your .gitignore files:
    App.class
    Use -f if you really want to add them.

    如果你确实想添加该文件,可以用-f强制添加到Git:

    $ git add -f App.class

    或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:

    $ git check-ignore -v App.class
    .gitignore:3:*.class    App.class

    Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

    小技巧:

      让Git记住仓库的账号密码的方法

    #执行以下命令(让计算机缓存我们输入的账号密码)
    git config --global credential.helper store
    
    #然后执行:
    git push origin your-branch
    
    #会让你输入用户名和密码,这时你输入就好了,然后下次再git push /pull 的时候就不用密码了~
    
    #检验方式:C:Users你的电脑名;   这个文件夹下面是否能找到.git-credentials文件,如果文件的内容是有关你的git的设置,格式为:http://{用户名}:{密码}@{git 网址}

    #切记,每次要推送之前最好新git pull一下

    #切记,每次要推送之前最好新git pull一下

    #切记,每次要推送之前最好新git pull一下

  • 相关阅读:
    牛客网 剑指Offer JZ16 合并两个排序的链表
    牛客网 剑指Offer JZ15 反转链表
    牛客网 剑指Offer JZ14 链表中倒数最后k个结点
    牛客网 剑指Offer JZ12 数值的整数次方 经典快速幂
    牛客网 剑指offer-JZ10 矩形覆盖
    牛客网 剑指offer-JZ9 跳台阶扩展问题
    牛客网 剑指offer-JZ8 跳台阶
    牛客网 剑指offer-JZ7 斐波那契数列
    牛客网 剑指offer-JZ6 旋转数组的最小数字
    codility_ BinaryGap
  • 原文地址:https://www.cnblogs.com/tjp40922/p/11315505.html
Copyright © 2011-2022 走看看