美文网首页
Git 命令简介

Git 命令简介

作者: 丿小七 | 来源:发表于2019-08-02 18:28 被阅读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
  • 本地Git仓库、GitHub创建仓库,保持同步
  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 remote add origin git@server-name:path/repo-name.git

    • 关联后第一次推送master分支的所有内容

    git push -u origin master

    • 每次本地提交后,推送最新修改

    git push origin master

从远程库克隆

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

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

    git clone 创建的仓库地址.git

  • 小结
    需要先知道仓库地址,然后使用git clone命令克隆

分支管理

创建与合并

  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 branch
    • 创建分支:git branch branchName
    • 切换分支:git checkout branchName
    • 创建+切换分支:git checkout -b branchName
    • 合并某分支到当前分支:git merge branchName
    • 删除分支:git branch -d branchName

解决冲突

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

分支管理策略

  • master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
  • 干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

通常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,可以把当前工作现场储藏(暂存)起来,等以后恢复现场后继续工作

  • git stash 暂存工作区内容
  • git stash list 查看工作区的内容
  • git stash applygit stash drop 恢复工作去的内容并删除stash里的内容
  • git stash pop 恢复工作去的内容并删除stash的内容

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

Feature分支

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

  • git branch -d feature-vulcan 删除一个分支
  • git branch -D feature-vulcan 强行删除一个分支

多人协作

  • 推送分支,把该分支推送到远程仓库

    git push origin 要推送的分支名

  • master为主分支,因此要时刻远程同步

  • dev分支是开发分支,所以也需要与远程保存同步

  • bug分支只用于本地修复bug,就没必要推送到远程了

  • feature分支是否推送到远程取决与是否合作开发

抓取分支

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

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

  • 多人协作的工作模式:
    1. 首先试图用git push origin branchName 推送自己的修改

    2. 推送失败,因为远程分支比你的本地更新,需要先git pull合并

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

    4. 在用git push origin branchName推送

    5. 本地分支和远程分支创建链接关系

      git branch --set-upstream-to branchName origin/branchName

Rebase

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

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

标签管理

创建标签:

  • git branch 切到需要打标签的分支上
  • git tag v1.0 打一个新的标签
  • git tag 查看所有标签 标签是按字母排序的,不是按时间顺序列出的
  • git log --pretty=oneline --abbrev-commit 查找commit id
  • git tag v0.9 commit id 指定提交的地方打标签
  • git tag show v0.9 查看标签信息
  • git tag -a v0.1 -m “version 0.1 released” 1094adb-a指定标签名,-m指定说明文字
  • git tag -d v0.1 删除本地标签
  • git push origin <tagname> 推送到远端
  • git push origin --tags 推送全部标签到远端
  • git push origin :refs/tags/v0.9,删除远程标签,已经推送到远端的删除需要先删除本地的标签,然后在删除远端的

常用命令

  • 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 remote -v 显示本地所有的远程仓库地址

  • git remote remove origin/upstream 删除本地代码与远端GitLab分支之间的关系

  • git remote add origin git@gitlab.go-goal.cn:albert/xxx-bottom.git 本地代码与新的GitLab服务器关联起来

  • git remote add upstream git@gitlab.go-goal.cn:albert/xxx-bottom.git 本地代码与新的GitLab服务器关联起来

  • git pull 线上线下分支同步

  • git pull upstream 线上线下分支同步

  • git push origin --all 将本地的所有分支都推送到新的GitLab服务器远程分支

  • git stash 暂存工作区内容

  • git stash list 查看工作区的内容

  • git stash applygit stash drop 恢复工作去的内容并删除stash里的内容

  • git stash pop 恢复工作去的内容并删除stash的内容

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

    查看分支合并情况

  • git status

    查看当前仓库的状态

  • git diff

    查看difference修改内容

  • git add 、git commit

    添加需要提交的文件,然后commit

  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 stash 暂存工作区内容
  • git stash list 查看工作区的内容
  • git stash applygit stash drop 恢复工作去的内容并删除stash里的内容
  • git stash pop 恢复工作去的内容并删除stash的内容

参考: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

相关文章

  • Git命令

    Git命令简介 git命令是一些命令行工具...

  • Git命令集合

    Git基础命令 git远程关联 git远程关联移除 git命令简单简介 常用命令集合:git init创建版本库 ...

  • iOS学习 git的操作与使用

    01. GIT简介 02. GIT命令行帮助 $ git help查看git所有命令的帮助 $ git help ...

  • Git从入门到使用

    对于git命令全了解 Git常用命令简介 git rebase 命令和merge命令作用相似。如果你想要一个干净的...

  • Git 本地操作

    GIT简介自行百度 GIT命令行帮助=======================================...

  • Git 命令简介

    仓库 配置 暂存:add 删除untracked的文件:clean 提交:commit 分支:Branch Sta...

  • Git命令简介

    创建版本库 通过git init命令把这个目录变成Git可以管理的仓库 把文件添加到版本库 git add把文件提...

  • Git 命令简介

    总结 Git 版本管理 - 命令 代码提交删除及版本回退 git add readme.txt添加修改的文件,把文...

  • Git起步--命令操作

    一、各个命令简介:1、git status:该命令可以让我们时刻掌握仓库当前的状态。2、git diff:该命令可...

  • Git命令语法汇总

    本文是在学习廖雪峰Git教程后对常用Git命令的使用总结,仅供在使用Git时方便查找。 一、Git简介 Git是当...

网友评论

      本文标题:Git 命令简介

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