Git的基本使用

安装

廖雪峰带你安装Git

初始化和添加

1.初始化一个Git仓库,使用git init命令。

2.添加文件到Git仓库,分两步:

  • 使用命令git add ,注意,可反复多次使用,添加多个文件;
  • 使用命令git commit -m “”,完成。

版本管理

版本回退

1.HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id

Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD,上上一个版本就是HEAD,当然往上100个版本写100个比较容易数不过来,所以写成HEAD~100。
git reset --hard HEAD^ 是指回到上一个版本

2.穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

3.要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

4.git status查看git的状态,很常用。

管理修改

  • 用git diff HEAD – readme.txt命令可以查看工作区和版本库里面最新版本的区别.
  • 每次修改,如果不用git add到暂存区,那就不会加入到commit中。

撤销修改

  • git checkout – file :可以丢弃工作区的修改。
  • git reset HEAD file:可以把暂存区的修改撤销掉(unstage),重新放回工作区

删除文件

  • 用命令git rm删掉,并且git commit
  • 另一种情况是删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:git checkout – test.txt

远程仓库

添加远程库:

廖雪峰带你添加远程库

这里添加远程库里面的一些重点列出来:

  • 在本地仓库运行 git remote add origin [email protected]:michaelliao/learngit.git将本地仓库与远程仓库相关联。(origin就是远程库的名字,可以自己改一下)
  • git push -u origin master(第一次要 -u,其他的时候可以不用):就可以把本地库的所有内容推送到远程库上.

从远程库克隆

  • git clone [email protected]:michaelliao/gitskills.git:要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。Git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

分支管理

创建与合并仓库

  • git branch dev:创建dev分支
  • git checkout 命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git checkout -b dev 相当于
$ git branch dev
$ git checkout dev

  • git branch:git branch命令会列出所有分支,当前分支前面会标一个*号。
  • git checkout master: 切换分支。
  • git merge dev:我们把dev分支的工作成果合并到master分支上。
  • git branch -d dev:合并完成后,就可以放心地删除dev分支了。

处理冲突

廖雪峰带你学习git中的冲突处理

分支管理策略

廖雪峰带你学习分支管理策略

Bug分支

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

Feature分支

开发一个新feature,最好新建一个分支;
如果要丢弃一个没有被合并过的分支,可以通过git branch -D 强行删除。

多人协作

多人协作的工作模式通常是这样:
  • 查看远程库信息,使用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,如果有冲突,要先处理冲突。
  • 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to origin/。

这就是多人协作的工作模式,一旦熟悉了,就非常简单。

标签管理

创建标签

  • 命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  • 命令git tag -a -m "blablabla…"可以指定标签信息;
  • 命令git tag可以查看所有标签。

注意:标签总是和某个commit挂钩。如果这个commit既出现在master分支,又出现在dev分支,那么在这两个分支上都可以看到这个标签。

操作标签

  • 命令git push origin 可以推送一个本地标签;
  • 命令git push origin --tags可以推送全部未推送过的本地标签;
  • 命令git tag -d 可以删除一个本地标签;
  • 命令git push origin :refs/tags/可以删除一个远程标签。

使用Github

  • 在GitHub上,可以任意Fork开源仓库;

  • 自己拥有Fork后的仓库的读写权限;

  • 可以推送pull request给官方仓库来贡献代码。

自定义Git

忽略特殊文件

  • 忽略某些文件时,需要编写.gitignore;
  • .gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!

如果不太懂,戳我.

配置别名

配置别名

搭建Git服务器

搭建Git服务器





参考:

廖雪峰带你学GIt

你可能感兴趣的:(Git)