git的哲学--没有消息就是好消息
基本工作流程:
简单来说就是把[github远程仓库]的东西拿回到电脑里,编辑一番,然后把新文件add到[缓存区]再commit到[本地仓库]最后push到[github的远程仓库]。具体如下:
- 创建一个文件夹,git init将其初始化。
- 使用git clone命令把github远程仓库拿过来,(git clone xxxxx)
- 进行工作,工作结束后把编辑或新增的文件用git add xx这个命令添加到暂存区。
- 用[git commit -m '这地方写注释'] 命令把暂存区的东西提交到本地仓库。
- 用git push命令把本地仓库的东西发到Github的远程仓库里。
- 如果clone的仓库被别人修改了,记得git pull一下,要不然不能push。(作业)
如果多个分支,记得git pull origin master写具体点。
ps:如果想再github 上参加开源项目,需要先把这个项目fork到自己账号下的仓库,然后clone到本地,这样才能push修改,否则没有权限的话不能push,最后如果你想参与开源项目,就在官方仓库点pull request,申请一下。
常见情况
-
如果工作区有错误编辑,怎么办?
-
如果我已经把错误内容add到暂存区了,怎么办?
-
如果我已经把错误内容commit到本地仓库了,怎么办?
-
如果我已经退回到某个历史版本了,但我又想恢复回新版本,怎么办?
一、如果工作区有错误编辑,怎么办?
使用git checkout -- xxx 命令,这时分两种情况
- 文件没add,那么该命令会让文件回到和本地仓库完全一样的状态。
- 文件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远程仓库
刚才讲的都是本地仓库以及现有远程仓库再克隆,其实也可以直接往远程仓库推送。
步骤如下:
- 先有一个本地仓库和一个远程仓库
- 把他俩绑定,使用[git remote add origin git@github.com:github账户名/github仓库名.git]命令
- 本地仓库推送到远程仓库,使用[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:
- git push origin master 推送到远程仓库的master分支。
- git diff HEAD -- XX 可以查看工作区和本地仓库的差异