zoukankan      html  css  js  c++  java
  • git使用笔记

    git在我目前看来,有两大好处优点1、版本回退 2、分支,适用于团队协作开发

    我是根据廖老师学的的git教程,边实践边做笔记,以下是笔记

    git config --global user.name “name”

    git config --global user.email “email”

    cd  path(需要创建仓库的项目的目录)

    在此目录下 输入git init 即创建好了代码工作库,此目录下会有个.git隐藏文件,用来记录我们的git操作,删库直接删除文件夹就好了

    在该目录下写代码文件,写好后

    使用git add 文件名/目录名/.  (.表示添加所有文件)

    git commit -m “描述(关于改动的描述或者什么描述)

    至此提交完了代码文件

     

    当改动了代码文件,可以使用git diff 文件名 可以查看对上一文件做了什么修改//好像要在提交前才能查看

    git status 可以查看当前仓库状态

     

    这个图中可以看出,当前将要提交的修改包括1.txt  //在此之前进行了一次add操作

    git log 命令可以查看历史记录,显示从最远到最近提交操作

     

    也可以加--pretty=oneline 参数,会清晰很多

     

    有一串很乱的数值,这是commit id(版本号),它是经过sha1得到的

    退回之前的版本//这就是git的强大之一

    git reset --hard head^

    head表示当前版本,head^表示上一版本,以此类推,多的话就可以用类似head~100

    还可以用 commit id号,而且不需要全部完整的id号,只要给出几位(..稍微多点,5,6位吧)就可以还原到指定版本号

    此时还原到上一版本后git log已经看不到还原前的版本了,但还是可以通过git reset --hard 还原前版本的commit id

    由此可知,只要指定commit id就可以往前或往后还原版本。如果bash关闭了,或者之前没有用log查看commit id那么可以使用git reflog查看,它记录了每一次命令

    git checkout -- filename  撤回修改,两种情况

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

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

    如果已经提交到了暂存区,那么可以通过git reset head filename把暂存区的修改撤销掉(unstage),重新放回工作区,再用git checkout -- filename 回到版本库时版本//注意--后面有个空格

    rm  filename  删除文件//但版本库的文件没有删除,可以通过git checkout -- filename恢复到版本库中的文件

    git rm filename  同时删除版本库的文件

    连接github

    创建rsa密钥

    ssh-keygen -t rsa -C "youremail@example.com"

     

    id_rsa是密钥,id_rsa.pub是公钥,中间创建是会有一堆问题,就是让你设置特殊的自己的密钥之类的(...英文没多看),因为不是什么很重要的东西,直接一直回车默认选项就好了

    然后是打开登录github,进入setting

     

    点这个创建sshtitle随便填,key里面粘贴id_rsa.pub里面的所有内容,然后点add ssh key

    然后在github上创建远程仓库

     

    之后的页面差不多都可以直接看懂,repository name一般都设置和自己电脑上的仓库名一样就好了,这样方便识别。选择piblicprivate要钱....

    最后create repository

    然后git关联github的仓库

    git remote add origin git@github.com:(你的github账户名)/github上的仓库名.git

    完成后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的。

    接下来就可以把内容推送到远程库中

    git push -u origin master      //master是什么,后面会提

    这是第一次推送,加上了-u,且第一次会出现一个询问,输入yes并回车就好了//也可以自己看看英文意思

    后面就可以简化命令了 git push origin master

    github上把远程库全部复制到本地

    git clone git@github.com:(github账户名称)/远程库名.git

    因为是克隆仓库,所以也会有.git隐藏文件

    每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。//不同分支上互不影响,最后可以合并分支

    初始默认有个master分支,就是前面的master

    创建分支

    $ git branch tian        //创建分支(tian是自定义的分支名)   

    $ git checkout tian      //切换分支

    也可以一条命令 git checkout -b tian

    git branch列出所有分支,当前分支前面有个*

    合并分支 git merge tian  //合并指定分支到当前分支

    合并后可以删除分支了  git branch -d tian

    分支之间互不影响,看下面例子:

    这是处于master分支时,我建立的文件

     

    切换到tian分支,然后在本地修改了1.txt

     

    接着add commit一波后,再切换到master分支,可以去本地打开文件看看,它又变成了原来的文件内容

    合并之后好像并不是直接覆盖,因为我试了把master合并到tian,而不是把tian合并到master,但文件内容没有变成原先master时的文件内容。到此我有些猜想,但不能确定,以后有机会或者碰到了再试试。

    冲突问题...

    如果在tian分支下提交了1.txt,然后切换到master分支下,修改1.txt后再次提交,git就会提示错误,需要手动修改git status也可以告诉我们冲突的文件

    git log --graph --pretty=oneline --abbrev-commit  //查看分支历史,带图形

    通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。

    如果要强制禁用Fast forward模式,可以采用参数--no-fGit就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

    --no-ff方式的git merge

    git merge --no-ff -m "merge with no-ff" dev   //要加上-m  因为会创建commit

    bug分支:你正在做一个分支上做项目,但接到一个bug修复任务

    git有个stash命令用来保存当前工作现场,保存完后可以切换到bug分支进行操作,然后切换到该bug原先所在的分支,再merge 再删除bug分支,再就可以回到正在工作的分支上工作

    git stash list  查看工作现场

    有两种恢复方式

    一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

    另一种方式是用git stash pop,恢复的同时把stash内容也删了:

    你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

    $ git stash apply stash@{0}

    当伙伴从远程库clone时,默认只能看到本地的master分支,若要在tian分支上开发,就必须创建origintian分支到本地,于是需要使用

    git checkout -b tian origin/tian               //不知道后面的是什么格式还是随便

    如果他都提交了某文件,而你也对此文件进行了修改并提交,则会产生冲突

    则需要git pull把最新的提交抓下路,在本地合并解决冲突,再推送

    git branch --set-upstream tian origin/tian   //git pull 前需要链接本地分支和远程分支

  • 相关阅读:
    java.lang.NoSuchMethodError:antlr.collections.AST.getLine() I
    T7 java Web day01 标签HTML
    T6 s1 day19
    T5 s5 Day18
    T5 s4 Day 17
    T5 s3 day16
    T5 s2 Day 15
    T5 s1 day14
    T4 S03 day 12
    T4 S01 day1
  • 原文地址:https://www.cnblogs.com/GH-D/p/8370588.html
Copyright © 2011-2022 走看看