git基本使用方法和常见问题

git的哲学--没有消息就是好消息


基本工作流程:

简单来说就是把[github远程仓库]的东西拿回到电脑里,编辑一番,然后把新文件add到[缓存区]再commit到[本地仓库]最后push到[github的远程仓库]。具体如下:

  1. 创建一个文件夹,git init将其初始化。
  2. 使用git clone命令把github远程仓库拿过来,(git clone xxxxx)
  3. 进行工作,工作结束后把编辑或新增的文件用git add xx这个命令添加到暂存区。
  4. 用[git commit -m '这地方写注释'] 命令把暂存区的东西提交到本地仓库。
  5. 用git push命令把本地仓库的东西发到Github的远程仓库里。
  6. 如果clone的仓库被别人修改了,记得git pull一下,要不然不能push。(作业)
    如果多个分支,记得git pull origin master写具体点。

ps:如果想再github 上参加开源项目,需要先把这个项目fork到自己账号下的仓库,然后clone到本地,这样才能push修改,否则没有权限的话不能push,最后如果你想参与开源项目,就在官方仓库点pull request,申请一下。


常见情况

  • 如果工作区有错误编辑,怎么办?
  • 如果我已经把错误内容add到暂存区了,怎么办?
  • 如果我已经把错误内容commit到本地仓库了,怎么办?
  • 如果我已经退回到某个历史版本了,但我又想恢复回新版本,怎么办?

一、如果工作区有错误编辑,怎么办?

使用git checkout -- xxx 命令,这时分两种情况

  1. 文件没add,那么该命令会让文件回到和本地仓库完全一样的状态。
  2. 文件add了,那么该命令会让文件回到被添加到暂存区后的状态。
    ps:这个命令的本质其实是用本地仓库的状态替换工作区的状态,所以也可以用来恢复被错误删除的文件。

二、如果我已经把错误内容add到暂存区了,怎么办?

这时使用git checkout命令只能操作工作区文件,暂存区的撤销使用命令:
git reset HEAD xxx ,这个命令可以把暂存区的修改撤销掉。

ps:把暂存区的修改撤销以后,如果使用git checkout命令,会让工作区文件回到本地仓库状态,而不是曾经的暂存区里的状态。

三、如果我已经把错误内容commit到本地仓库了,怎么办?

每次commit时,git都会对修改进行快照,保存文件当时的状态。
先使用[git log]命令,查看这些被保存的快照。最上面的快照是最近的。
确定了要撤回到哪个快照后,使用[git reset --hard HEAD~数字]命令,HEAD是当前版本,后面的数字是几就往前数几个版本。

ps:也可以使用[git reset --hard xxxx]命令,xxxx是commit id号。

四、如果我已经退回到某个历史版本了,但我又想恢复回新版本,怎么办?

如果已经退回到某个历史版本了,这时使用[git log]就只能看到当前版本(退回到的这个版本)和更早的快照。
这时应使用[git reflog]命令,显示全部记录,找到想要恢复的‘未来版本’的commit id号。
再使用[git reset --hard xxxxxxx]即可,xxxxx就是commit id。


github远程仓库

刚才讲的都是本地仓库以及现有远程仓库再克隆,其实也可以直接往远程仓库推送。
步骤如下:

  1. 先有一个本地仓库和一个远程仓库
  2. 把他俩绑定,使用[git remote add origin git@github.com:github账户名/github仓库名.git]命令
  3. 本地仓库推送到远程仓库,使用[git push -u origin master]命令,这样master就绑定了,以后使用[git push origin master]命令就可以把本地仓库master分支的最新修改推送到github的远程仓库了。

ps:同一个本地仓库,可以对应push多个远程仓库。
[git remote add coding 地址]这个是绑定到coding的项目上,git push coding master。


git分支操作

git分支类似平行宇宙,平时互不影响,最后一合并就ok
首先使用[git branch -a]查看本地和远程的所有分支,*代表目前所在的分支。
创建一个新分支git branch xx,切换到这个分支git checkout xx,然后就可以在各个分支愉快的工作了。
最后使用[git merge xx]命令把分支合并到master上就ok了。
记得删除dev分支[git branch -d dev]
ps:合并命令时把xx分支合并到当前分支,所以记得要切换到mastert上再用。


常用命令:

  • git int 把一个文件夹初始化成仓库
  • git clone 把远程仓库的东西拿到本地
  • git add 把文件从工作区提交到暂存区
  • git commit -m '注释' 把暂存区里的东西都提交到本地仓库
  • git push 把本地仓库的东西发到远程仓库
  • git status 查看目前仓库的状态
  • git diff 如果你向本地仓库提交文件后,在工作区编辑了这个文件,git diff xx可以让你查看两个文件的差异。
  • git checkout -- xx 把xx文件在工作区的修改全部撤销;若xx没add,那么回到和本地仓库一样的状态,如果已经add了,那么回到添加到暂存区后的状态。
  • git checkout xx 切换到xx分支
  • git reset HEAD xx 把xx文件的暂存区修改撤销掉。
  • git log 查看本地仓库的提交历史,以便确定要退回到哪个版本。
  • git remote -v 查看本地库里记录的远程库地址。
  • git branch -a 查看本地和远程所有分支。
  • git branch xx 创建新分支xx
  • git checkout xx 切换到xx分支
  • git merge xx 把xx合并到当前分支
  • git branch -d xx 把xx分支删除

ps:

  1. git push origin master 推送到远程仓库的master分支。
  2. git diff HEAD -- XX 可以查看工作区和本地仓库的差异
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,740评论 4 54
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,746评论 9 163
  • 你太久没有流浪 总是逃避别人的热情 如果有一天 你带着简单的行囊 试图去走遍陌生的街道 在风里来 在雨里去 躲不开...
    信徒_e567阅读 175评论 0 0
  • 不幸的事,具有偶然性,有些可能逃脱不了,但有些却是可以避免的,比如生病这类事。 (一直想写一篇关于健康的小日...
    沫若水阅读 170评论 0 2
  • 1.字符串以什么开头 preg_match('/^MP/', 'Mwf');
    鱼落于天阅读 208评论 0 0