Git学习笔记

Git 的教程:

一:git的基础操作--提交,发布

    创建一个本地版本库: git init
    添加一个文件: git add
    提交一个文件到本地版本库: git commit -m 描述信息
    查看目前文档的状态: git status
   在add前查看修改的内容: git diff 文件名
   查看提交的日志: git log
查看命令的历史: git reflog

二:git的版本控制

    git的当前版本是HEAD,回到前一个版本是: git reset --hard HEAD^
    git回到任意版本是: git reset --hard commit——id
    放弃未add的版本: git checkout -- file
   一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态
   场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

   场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

   场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
  查看远程库的信息: git remote -v

删除: 如果在工作区删除了一个文件
 1. 如果你确定要删除,那使用 git rm file 从版本库中删除,并且commit
 2. 如果你是误删,则需要从版本库中恢复文件: git checkout -- file


三:连接远程仓库:

 1. 生成密钥:ssh-keygen -t rsa -C "18500524969@qq.com",在用户目录下可以找到这个文件。
 2. 注册github账号,把密钥添加到gitHub
 3. 连接远程数据库
 1. 未创建本地仓库
    echo "# learngit" >> README.md
    git init
   git add README.md
   git commit -m "first commit"
   git remote add origin https://github.com/jiangerOne/learngit.git
   git push -u origin master
2. 如果已经创建本地仓库
   git remote add origin https://github.com/jiangerOne/learngit.git
   git push -u origin master
4. 从远程库克隆
  git clone git@github.com:jiangerOne/javaProject.git

四:分支操作:

   1. 分支的基本操作: 某个分支的操作不会对其他分支的数据进行影响,如果要同步,则需要合并分支
     查看当前的分支: git branch
     创建一个新的分支: git branch dev
    切换到dev: git checkout dev
    git checkout -b dev = git branch+git checkout dev
    合并某分支到当前分支:git merge dev
    删除分支: git branch -d dev
  2. 分支冲突:
   当一个分支提交了改变的内容,另一个分支也提交了改变了相同行的内容时,分支合并会冲突。
    解决方案:首先解决冲突,可以使用git log --graph.
3. 分支策略
    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,
    能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
   在实际开发中,我们应该按照几个基本原则进行分支管理:
     1. 首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
     2. 那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,
       比如v10版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;
    3. 你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。
   4.合并分支时,主分支不要提交,要合并
4. 创建bug分支:
  1. 当你在dev上工作时,你突然发现一个bug,但是dev的工作还没有做完,你需要保存dev的环境
    跑到master创建bug分支,修复bug
     1. 保存dev的当时状态:git stash
     2. 切换到master分支上创建bug分支:
        git checkout master
        git checkout -b bug--01
   3. 修复完bug,合并bug分支,删除bug分支
      git merge bug--01
     git branch -d bug--01
4. 回到dev,查看stash,删除stash,继续开始工作
     checkout dev
     git stash list
     git stash apply恢复
     git stash pop 恢复,删除
5. 强行删除未合并的新分支: 开发一个新feature,最好新建一个分支;
     如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。
6. 多人合作:
   但是,并不是一定要把本地分支往远程推送,那么,哪些分支需要推送,哪些不需要呢?

   master分支是主分支,因此要时刻与远程同步;

   dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;

   bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;

   feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。

7. 多人合作分支:

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

五:标签管理:

1. 标签的主要作用是更好的标识版本
2. 创建一个标签
命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

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

git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;

命令git tag可以查看所有标签。
git show tag 可以查看tag的信息
3. 删除一个标签:
命令git push origin <tagname>可以推送一个本地标签;

命令git push origin --tags可以推送全部未推送过的本地标签;

命令git tag -d <tagname>可以删除一个本地标签;

命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

六:自定义git

上颜色
git config --global color.ui true
配置别名:
git config --global alias.st status


原文地址:https://www.cnblogs.com/grasser/p/8483837.html