zoukankan      html  css  js  c++  java
  • git学习笔记

    之前用的是SVN,打算学一下Git(廖雪峰的教程),做一下笔记哈!主要是常用命令使用方法,便于查询。

    创建版本库:在你喜欢的目录下建立一个新的目录“learngit”,然后进入该目录并通过git init命令把这个目录变成Git可以管理的仓库。

    把文件添加到版本库:由于Git只能跟踪文本文件的改动,所以要添加的文件应该是文本文件。比如“1.txt”,将该文件放在learngit目录下,使用“git add 1.txt”将文件添加到版本库。

    把文件提交到仓库:git commit -m "this is a file"       

        (-m “” 后跟一个提交说明,方便阅读)(先add后commit,add可以分多次add很多文件,commit一次即 可将add过的文件提交)

    查看工作区的状态:使用git status命令。

    查看版本控制系统的修改历史记录:git log

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

      一个HEAD^表示上一个版本,HEAD^^表示上上个版本,HEAD~100 表示向上100个版本

      git reset --hard 版本号的前几位       也可以回到某个指定的版本

      Git回退版本就像C里面的指针一样,通过某个地址直接指向某个版本,速度很快

    查看命令历史:git reflog

    查看工作区和版本库里面最新版本的区别:git diff HEAD -- 文件名

      每次修改,如果不用git add到暂存区,那就不会加入到commit中。

    把文件在工作区的修改全部撤销:git checkout -- 文件名

    用版本库里的版本替换工作区的版本:git checkout -- 文件名

    把暂存区的修改撤销掉(unstage),重新放回工作区:git reset HEAD 文件名

     从版本库中删除文件:git rm 文件名   , 然后 git commit -m ""  提交

    工作区和暂存区的概念:文件存在于工作区,add将文件放到暂存区,commit将文件放入版本库。

    要关联一个远程库,使用命令:git remote add origin git@server-name:path/repo-name.git

    关联后,使用命令:git push -u origin master  第一次推送master分支的所有内容;

    此后,每次本地提交后,只要有必要,就可以使用命令:git push origin master  推送最新修改

    要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

    查看分支git branch

    创建分支git branch <name>

    切换分支git checkout <name>

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

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

    删除分支git branch -d <name>

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

    拿张老廖的图。

    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

    在修复bug时, 我们要先创建一个新的分支,在新分支上进行bug修复,然后合并,最后删除新分支。

    如果手头有未完成的工作,我们可以先把工作现场“git stash”一下,然后去修复bug,然后再返回工作现场的分支“git stash pop”一下,即可回到工作现场。

    开发一个新feature,最好新建一个分支

    如果要丢弃一个没有被合并过的分支,可以通过  git branch -D <name> 强行删除。

    多人协作的工作模式通常是这样:

    1. 首先,可以试图用git push origin <branch-name>推送自己的修改;

    2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

    3. 如果合并有冲突,则解决冲突,并在本地提交;

    4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

    如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

    这就是多人协作的工作模式,一旦熟悉了,就非常简单。

    查看远程库信息: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,如果有冲突,要先处理冲突

    rebase操作可以把本地未push的分叉提交历史整理成直线;

    rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

    命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id,git tag <tagname> <commit id>

    命令git tag -a <tagname> -m "blablabla..."可以指定标签信息

    命令git tag可以查看所有标签

    推送一个本地标签:git push origin <tagname>

    推送全部未推送过的本地标签:git push origin --tags

    删除标签:git tag -d <tagname>

    删除一个远程标签:git push origin :refs/tags/<tagname>

    忽略某些文件时,需要编写.gitignore

    .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理

  • 相关阅读:
    HDU 4460 Friend Chains 第37届ACM/ICPC杭州赛区题目 (bfs求最短路,求两两之间最短路的最大值)
    HDU 4445 Crazy Tank (简单物理题,枚举)
    HDU 4433 locker 第37届ACM/ICPC 天津赛区现场赛C题(DP)
    JQuery 3级级联,3级联动,3级连动
    C++异常处理
    C++ Template
    学会用core dump调试程序错误(转)
    C++命名规则
    vim实用配置(转)
    GDB多进程调试(转)
  • 原文地址:https://www.cnblogs.com/bo-liang/p/9514860.html
Copyright © 2011-2022 走看看