git 学习记录

作者: 懒惰的企鹅 | 来源:发表于2018-04-28 17:29 被阅读0次

    1、git init :初始化所在目录为git仓库(在这个目录里,可以理解为一个虚拟的空间,.git文件隐藏存在,);假如所在目录为gitOne

    2、git add fileName:(如果)gitOne文件夹里存在fileName这个文件,就把它添加到这个仓库的缓存区(index);

    $ git add .  # 将所有修改添加到暂存区
    $ git add *  # Ant风格添加修改
    $ git add *Controller   # 将以Controller结尾的文件的所有修改添加到暂存区
    
    $ git add Hello*   # 将所有以Hello开头的文件的修改添加到暂存区 例如:HelloWorld.txt,Hello.java,HelloGit.txt ...
    
    $ git add Hello?   # 将以Hello开头后面只有一位的文件的修改提交到暂存区 例如:Hello1.txt,HelloA.java 如果是HelloGit.txt或者Hello.java是不会被添加的
    

    3、git commit -m "提交说明信息(比如提交了什么文件和版本)":将所有add 到缓存区(index)的修改,commit(提交)到本地的仓库主干。(可以这么理解,如果只是单纯的复制一个test.txt文件到gitOne文件夹里,这个文件和它所在的目录的git仓库并没有产生联系,通过addcommit 来将你把它加入到这个文件夹的操作记录下来,并在git仓库里记录这次添加记录,使test.txt和gitOne在git仓库里产生联系,其他人使用git工具来拉你的代码的时候,就知道需要checkout那些文件,也只会checkout有关联的文件,在git虚拟仓库里存在关联信息的文件)

    4、git log:查看历史提交信息

    5、git status:查看当前的缓存区(index)的状态,有没有add了以后没commit的文件,或者add后做了修改没重新add的文件。

    6、git reset --hard HEAD^ :回退到上一个commit的版本,git reset --hard 12345:(12345是commit的ID,可以使用git reflog 来查看历史的执行有效命令的信息,有每次commit的id信息)

    7、git checkout -- fileName:当你修改错了某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- fileName;当你已经add了修改文件,将修改信息添加到了缓存区(index),就需要git reset HEAD fileName 来回退到add之前(文件还是已修改)然后git checkout -- fileName 来丢弃修改,如果是已经commit 的,只能使用上一条的版本回退命令来回退了(前提是没有push到远程仓库);

    8、关联远程仓库:要关联一个远程库,将本地仓库推送到远程仓库,使用命令git remote add origin git@server-name:path/repo-name.git;关联后,使用命令git push -u origin master第一次推送 master 分支的所有内容;此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

    9、clone仓库到本地:如果是我们新加入一个开发团队或对开源的一些项目做出开发支持,需要使用git clone address(远程仓库地址)来从远程仓库(团队已创建好的)clone一个到本地,默认目录名为远程仓库名;git clone address(远程仓库地址) fileName(本地文件夹名字):创建本地目录fileName,并克隆远程仓库到里边;

    10、git pushgit pull是一对推送/拉取分支的git命令。
    git push 使用本地的对应分支来更新对应的远程分支:
    $ git push <远程主机名> <本地分支名>:<远程分支名>
    git pull获取并合并其他的厂库,或者本地的其他分支:
    $ git pull <远程主机> <远程分支>:<本地分支>

    11、创建并指向这个分支$ git checkout -b dev创建dev分支,并checkout指向这个分支,仓库当前有效HEAD会指向这个分支(即执行git命令时所操作的对象),等于执行了两条命令:

    $ git branch dev ***创建分支'dev'***
    $ git checkout dev ***'checkout'指向'dev'分支***
    

    $ git branch查看当前仓库所有分支;git branch -a查看远程和本地所有分支

    * dev          ***当前仓库`HEAD`所指向的分支前会有'*'字符***
      master    ***clone下来,一般默认分支为'master'***
    

    12、分支的合并$ git checkout branchName可以切换回branchName分支;git merge branchName命令用于合并branchName到当前分支(当前仓库所操作的分支),如:当前分支为master,将dev分支 合并master(当前分支)中

    $ git checkout master
    $ git merge dev
    

    合并后,可以使用$ git branch -d dev删除本地dev分支;

    13、查看远程库信息,使用git remote -v

    本地新建的分支如果不推送到远程,对其他人就是不可见的;

    从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

    在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

    建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name

    从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

    14、git pull失败的时候:
    提示Please, commit your changes or stash them before you can merge.错误,是因为本地有未提交的修改,本地内容和上一次commit-push内容不一致,解决办法有两种:
    1).使用stash将未提交的修改放到暂存区,等pull更新后,再拿出来:

    git stash
    git pull
    git stash pop
    

    接下来git diff一下此文件看看自动合并的情况,并作出相应修改。

    git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
    git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
    git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
    git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
    2).放弃此次本地的不同修改,将工作区恢复到之前某次commit时的版本号(可参考上边第六条说明,以下命令为直接回退到上次提交的版本,也可以指定到某一个版本):

    git reset --hard
    git pull
    

    相关文章

      网友评论

        本文标题:git 学习记录

        本文链接:https://www.haomeiwen.com/subject/bftnlftx.html