git学习笔记

之前用的是SVN,打算学一下Git(廖雪峰的教程),做一下笔记哈!主要是常用命令使用方法,便于查询。

创建版本库:在你喜欢的目录下建立一个新的目录“learngit”,然后进入该目录并通过git init命令把这个目录变成Git可以管理的仓库。

把文件添加到版本库:由于Git只能跟踪文本文件的改动,所以要添加的文件应该是文本文件。比如“1.txt”,将该文件放在learngit目录下,使用“git add 1.txt”将文件添加到版本库。

把文件提交到仓库:git commit -m "this is a file"       

    (-m “” 后跟一个提交说明,方便阅读)(先add后commit,add可以分多次add很多文件,commit一次即 可将add过的文件提交)

查看工作区的状态:使用git status命令。

查看版本控制系统的修改历史记录:git log

回退到某一个版本:git reset --hard HEAD^

  一个HEAD^表示上一个版本,HEAD^^表示上上个版本,HEAD~100 表示向上100个版本

  git reset --hard 版本号的前几位       也可以回到某个指定的版本

  Git回退版本就像C里面的指针一样,通过某个地址直接指向某个版本,速度很快

查看命令历史:git reflog

查看工作区和版本库里面最新版本的区别:git diff HEAD -- 文件名

  每次修改,如果不用git add到暂存区,那就不会加入到commit中。

把文件在工作区的修改全部撤销:git checkout -- 文件名

用版本库里的版本替换工作区的版本:git checkout -- 文件名

把暂存区的修改撤销掉(unstage),重新放回工作区:git reset HEAD 文件名

 从版本库中删除文件:git rm 文件名   , 然后 git commit -m ""  提交

工作区和暂存区的概念:文件存在于工作区,add将文件放到暂存区,commit将文件放入版本库。

要关联一个远程库,使用命令:git remote add origin git@server-name:path/repo-name.git

关联后,使用命令:git push -u origin master  第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令:git push origin master  推送最新修改

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

查看分支git branch

创建分支git branch <name>

切换分支git checkout <name>

创建+切换分支git checkout -b <name>

合并某分支到当前分支git merge <name>

删除分支git branch -d <name>

git log --graph命令可以看到分支合并图

拿张老廖的图。

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

在修复bug时, 我们要先创建一个新的分支,在新分支上进行bug修复,然后合并,最后删除新分支。

如果手头有未完成的工作,我们可以先把工作现场“git stash”一下,然后去修复bug,然后再返回工作现场的分支“git stash pop”一下,即可回到工作现场。

开发一个新feature,最好新建一个分支

如果要丢弃一个没有被合并过的分支,可以通过  git branch -D <name> 强行删除。

多人协作的工作模式通常是这样:

  1. 首先,可以试图用git push origin <branch-name>推送自己的修改;

  2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

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

  4. 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>

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

查看远程库信息: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,如果有冲突,要先处理冲突

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

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

命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id,git tag <tagname> <commit id>

命令git tag -a <tagname> -m "blablabla..."可以指定标签信息

命令git tag可以查看所有标签

推送一个本地标签:git push origin <tagname>

推送全部未推送过的本地标签:git push origin --tags

删除标签:git tag -d <tagname>

删除一个远程标签:git push origin :refs/tags/<tagname>

忽略某些文件时,需要编写.gitignore

.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理

原文地址:https://www.cnblogs.com/bo-liang/p/9514860.html