Git 命令简介

2019-08-02  本文已影响0人  丿小七

总结 Git 版本管理 - 命令

代码提交删除及版本回退

  1. git add readme.txt

    添加修改的文件,把文件修改添加到暂存区

  2. git commit -m "append GPL"

    提交修改的文件 -m后接提交log,是把暂存区的所有内容提交到当前分支
    如果不用git add到暂存区,那就不会加入到commit

  3. git loggit log --pretty=oneline

    查看历史记录

  4. HEAD

    当前版本,HEAD^上个版本,HEAD^^ 上上个版本,HEAD~100往上100个版本

  5. git reset --hard HEAD^

    回退到上一个版本

  6. git reset --hard 1094a

    回退到指定版本,1094a指定版本的ID

  7. git reflog

    记录每一次命令

  8. git diff HEAD -- 要查看的文件.m

    查看工作区和版本库里面最新版本的区别:

  9. git checkout -- 要修改的文件.xx

    可以丢弃工作区的修改,让这个文件回到最近一次git commitgit add时的状态
    要修改的文件.xx自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
    要修改的文件.xx已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态
    git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。前提是有被添加到版本库

  1. git reset HEAD 暂存区要撤销的文件.xx

    把暂存区的修改撤销掉(unstage),重新放回工作区
    执行完该命令后,暂存区是干净的,工作区有修改,如果需要丢弃工作区的修改,参考第9点

又到了小结时间。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

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

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退,不过前提是没有推送到远程库。
  1. rm test.txtgit rm

    在文件中删除或者命令删除时,需要从版本库中删除该文件,删除后需要提交git commit

远程仓库

  1. 创建SSH Key
    本地git仓库和github仓库之间的传输是通过ssh加密的,所以需要先创建SSH Hey,在用户主目录下查看有没有.ssh,如果有检查有没有id_rsaid_rsa.pub这两个文件,如果有了,则可以跳过,没有则创建

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

  2. 登录GitHub,打开账号设置SSH Keys页面
    添加SSH Key,粘贴id_rsa.pub文件的内容

添加远程仓库

先有本地库,后有远程库,如何关联远程库

个人远端仓库 origin.png
  1. 登录GitHub

  2. 找到Create a new repo按钮,创建新仓库

  3. Repository name处填入仓库名称(方便后面使用用learngit代替),点击创建,成功的创建一个新的Git仓库

  4. learngit新建的仓库为空仓库,可以从改仓库克隆出新的仓库,也可把一个已有的本地仓库与之关联,然后把本地仓库的内容推送到GitHub仓库,在本地learngit仓库下运行命令

    git remote add origin git@github.com:youGitHubAccountName/learngit.git
    * 添加成功后远程库的名字就是origin

  5. 把本地库的所有内容推送到远程库上

    git push -u origin master
    * 把本地库的内容推送到远程,实际上是把当前分支master推送到远程,由于远程库是空的,在第一次推送master分支时加上-u参数,git会把本地的master分支内容推送到远程新的master分支,还会把本地的master分支和远程的master分支关联起来。
    > git push

  6. 推送成功后可以在GitHub页面中看到远程库的内容已经和本地一样了

  7. 本地更改提交

    git push origin master

从远程库克隆

先创建远程库,然后从远程库克隆

git与本地建立联系.png
  1. 登录GitHub,创建新仓库,名字叫(以实际项目名字命名)gitsKills
  2. 勾选initialize this repository with a README,会自动创建一个README.md文件
  3. 用命令克隆一个本地库git clone(确定本地仓库的路径在输入命令)

    git clone 创建的仓库地址.git

分支管理

创建与合并

  1. 创建dev分支,然后切换到dev分支

    git checkout -b dev
    -b表示创建并切换相当于两条语句
    git branch dev
    git checkout dev

  2. git branch查看当前分支,当前分支前面会有一个*

  3. dev分支的工作完成即commit后,就可以切回master分支

    git checkout master

  4. dev上的工作成果合并到master分支上

    git merge dev
    用于合并指定分支到当前分支(经过第3步的操作后,该出即将dev合并到master上)

  5. 合并完成后删除dev分支

    git branch -d dev

解决冲突

使用git status也可以告诉我们冲突的文件
找到对应的冲突文件后,手动解决冲突,
重新添加commit
git log --graph --pretty==oneline --abbrev-commit查看分支合并情况

分支管理策略

通常Git会用Fast forward模式,这种模式下删除分支,会丢掉分支信息。
如果强制禁用Fast forward模式,Git会在merge时生成一个新的commit,这样从分支历史上就可以看出分支信息。

  1. 创建并切换dev分支

    git checkout -b dev
    git add readme.txt
    git commit -m "add merge"

  2. 切回master

    git checkout master

  3. 准合并dev分支,--no-ff参数为禁用Fast forward

    git merge --no-ff -m "merge with no-ff" dev
    因为--no-ff会创建一个新的commit,所以加上-m参数,把commit描述写进去

  4. 合并后用git log查看分支历史

    git log --graph --pretty=oneline --abbrev-commit

bug分支

stash,可以把当前工作现场储藏(暂存)起来,等以后恢复现场后继续工作

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除,
当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场

Feature分支

多功能开发
一个功能对应一个feature分支

多人协作

抓取分支

  1. 先用git pull把最新的提交从origin/dev上抓取下来,然后在本地合并,解决冲突,在推送
  2. git pull失败,原因是没有指定本地dev分支与远程分支的链接根据提示可设置后再pull

    git branch --set-upstream-to=origin/dev dev

Rebase

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

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

标签管理

创建标签:

常用命令

  1. mkdir learngit 创建一个空目录

  2. cd learngit 切换到该目录下

  3. pwd 查看该目录路径

  4. git init

  5. ls -ah 查看.git的目录,.git用来跟踪管理版本库的

  6. cat ~/.ssh/id_rsa.pub 查看ssh是否是自己的(与git管理台自己账户设置中对应)

  7. 移除之前的仓库对应关系

    git remote remove origin
    git remote remove upstream

  8. 创建新的自己的仓库,在建立主仓库upstream

    git remote add origin 地址xxx
    git remote add upstream http://远端地址.git (输入要要远程连接的主仓库)

  9. 再拉取本地仓库的分支和upstream分支

    git pull upstream

多需求开发时,有未完成的任务,又需要切换分支的情况:
先暂存,然后切换分支,处理完后切回,然后找回暂存内容,继续开发

参考:Git教程
https://www.liaoxuefeng.com/wiki/896043488029600/896954848507552

Git Document
https://git-scm.com/book/zh/v2

Git cheat sheet
https://gitee.com/liaoxuefeng/learn-java/raw/master/teach/git-cheatsheet.pdf

上一篇 下一篇

猜你喜欢

热点阅读