git教程

版权声明: https://blog.csdn.net/Her_smile/article/details/79254247

之前一直用git 用之前都是粗略的看了选  但是总是遇到一些难以解决的问题  于是趁最近过年有空跟着廖雪峰的git教程学习了一遍 将得很好 但是还是自己需要多动手  自己做了一个笔记   包括自己动手实践出来的。

一、git 安装及介绍

1.初次安装git 需要初始化用户名和email

git config --global user.name 'name'  git config --global user.email 'email'

(因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址)

2.创建版本库: 

git  init

(项目目录下的.git文件夹 默认是隐藏的   版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”,没事千万不要手动修改这个目录里面的文件)

二、时光穿梭机

1.git status

该命令可以让我们时刻掌握仓库当前的状态,一般有三种常见的状态:not staged for commit :表示该文件 之前添加到暂存区过  现在进行了修改 还未被add 此时需要add。modified:工作区文件被修改。untracked:指的是一个新文件  从未被添加到版本库或者暂存区过

2.git diff

 顾名思义就是查看difference  必须在该文件没有被add之前才能查看

3.commit也称为快照
4.git log

(查看历史记录,在Git中,我们用git log命令查看(每次的commit记录),用HEAD表示当前版本 上一个版本就是HEAD^上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100)

5.回退 就可以使用git reset --hard HEAD*(这里除了用HEAD指针还可以使用commit id)   git reflog命令用来记录你的每一次记录 git log和git reflog都可以查看commit id  只不过当你将HEAD指针移动到之前的地方此时使用git log 就看不到现在HEAD指针所在的地方到最新版本这一段之间的记录 而git reflog可以查看所有的记录

6.工作区:本地存储项目的文件夹。本地仓库(版本库repository):本地的.git文件。暂存区:存在于本地仓库中

7.master分支和指向master分支的HEAD指针为我们自动创建

8.git管理的是修改 而不是文件 修改之后必须add到暂存区 add之后commit 才能将修改同步到本地仓库

9.撤销修改有两种情况:还没有add到暂存区使用git checkout -- file 。add到了暂存区先使用 git reset HEAD file,将文件回退到not stage状态 此时就和第一种情况一样了使用和其相同的方法撤销修改

10.删除文件:一般直接在文件管理器里面手动删除 此时会导致工作区和版本库的不一致现在有两种选择
第一:git rm file 表示从版本库删除工作区删除的文件
第二:git checkout -- file 表示将本地工作区中的删除的文件从版本库恢复

三、远程仓库

1.创建ssh密匙:$ ssh-keygen -t rsa -C "youremail@example.com"   如果创建过了直接到本地c盘用户目录下早.ssh文件目录 里面有id_rsa和id_rsa.pub两个文件,id_rsa是私钥,id_rsa.pub是公钥。为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议 也支持http。同时允许添加多个公共密匙这样就可以在多个电脑上提交

2.操作远程仓库有两种方式:
第一:将本地版本库和远程版本库关联 使用git remote add 自定义name 远程仓库地址   这样之后操作远程仓库地址就可以直接使用自定义过的name了。而且本地仓库可以关联多个远程仓库  只要保证名字不重复就行了,而且需要注意通过这种方式关联仓库后,第一次pull的时候需要使用git pull 远程仓库名(origin) 分支名(master) –allow-unrelated-histories。
第二:直接克隆远程的版本库 这样本地的版本库就是远程的一个副本 是相互关联的就可以直接操作了  如果是直接克隆会默认生成一个本地仓库与远程仓库关联的origin代替名

3.使用git remote 或者git remote -v来查看远程仓库信息     使用git remote rm 远程仓库名 来删除

4.第一次push 一般加上-u  git push -u 远程仓库名字 分支name   加上了-u参数,Git不但会把本地相应分支内容推送到远程相应的分支,还会把本地的相应分支和远程的相应分支关联起来,在以后的推送或者拉取时就可以简化命令。

5.推送分支使用git push 远程仓库名称  本地仓库分支(在工作中一般需要推送的是master分支和其他的开发分支 bug分支和正在开发的新功能分支可以不必推送)

6. 如果我们在远程仓库建立了多个分支,那么在推送的时候,一定要指明是哪个分支,虽然在一个分支上通过指明像哪个分支推送也可行,但是最好还是将自己本地的分支和远程分支保持一致,例如远程新建了一个分支,那么最好在本地也新建一个分支并在这个分支上开发。做到分支和分支之间互不影响。

四、分支管理

1.创建分支有两种方式:git checkout -b 分支名 表示创建并切换到新创建的分支。等同于以下两条命令 git branch 分支名(创建)    git checkout 分支名(切换)

2.合并:git merge 分支名  表示将当前分支以外的某个分支合并上来
3.删除:git branch -d 分支名

4.合并分支冲突:如果将其他分支合并到当前分支(一般是master分支), 如果从上一次合并结束到现在还没合并这段时间或者另外一个分支是一个新建的分支 此时也还没合并,如果这段期间两个分支对同一个文件相同行进行了修改就会导致冲突  需要手动清理冲突  保留两个冲突中的一个

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

6.Fast-forward模式:也就是直接把master指向dev的当前提交,所以合并速度非常快。

7.当我们在完成某项工作时  突然需要完成另一项修复某个bug的工作 此时可以把当前的工作隐藏起来 等另一个工作完成后再继续这个工作   在哪个分支上修复bug就应该切换到哪个分支进行创建新的分支 修复完成后再合并在删除临时分支。git stash:可以把当前工作现场“储藏”起来 。 git stash list :查看被储存的工作 。 git stash apply 储存名(用git stash list查看):恢复某个工作 但是此命令不会删除stash里面相应的内容  还需要使用 git stash drop 储存名 。另一种方式是使用git stash pop  这个会恢复并且删除stash列表里面最上面的一个

8.当我们创建了一个新分支 并切回主分支 准备合并时 如果此时还未合并的时候想删除临时分支是会出错的 必须merge过后删除才不会出错  如果要强行删除需要使用git branch -D(正常是小写) 分支名

五、标签管理

1.标签(tag):也是版本库的一个快照 是一个指向commit的一个指针 分支的指针可以移动 但是标签的指针不能移动

2.打标签的方式:git tag 标签名(默认是打在最新提交的commit上的),git tag 标签名 commit_id(打到指定的commit上) ,git tag -a 标签名 -m 对这次打标进行说明 commit_id  。

3.git show tagname(查看标签信息)

4.删除标签:git tag -d 标签名   

5.默认推送时是不会推送标签的 如需推送使用 git push 远程仓库名 标签名  或者使用 git push 远程仓库名 -tags 一次性推送全部未推送的标签

6.删除远程标签:先删除本地标签 再使用git push 远程仓库名 :refs/tags/标签名

六、自定义git

1.如何提交时忽略文件:在Git工作区的根目录下创建一个特殊的.gitignore文件 然后把要忽略的文件名填进去,Git就会自动忽略这些文件

 

阅读更多

没有更多推荐了,返回首页