git使用

安装git

mac安装git有两种方法

1、安装了homebrew了以后,通过命令行 brew install git

2、从appstore直接安装xcode,xcode中集成了git。运行xcode ->选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。

创建版本库

1、在一个合适的位置创建空目录 mkdir 目录名 为确保不出乱七八糟的问题 ,建议创建目录的时候不要带有中文

​ 可以通过 pwd命令来查看当前位置的绝对路径

2、通过 git init将创建好的目录变成git可以管理的库,执行过后会生成一个.git的目录,这个目录是跟踪管理按本库的。不能随意更改。

3、在创建好的目录下通过 git add 文件名将文件添加到仓库,如果没有提示的话就是添加成功了。然后需要

git commit -m '"提交说明"提交说明是方便自己查看。提交成功后会提示改动了哪些内容。

版本穿梭

版本回退

当文件丢失或者其他等等,可以通过版本回退来回退到以前的一个版本。

1、通过 git log可以查看之前的版本,通过查看到的版本来选择回退

2、通过回退代码 git reset --hard HEAD^回退到上一个版本,如果需要回退多个版本可以使用 git reset — hard HEAD~你要往上回退多少个版本

3、如果你后悔了版本回退,想恢复到原来的版本,通过 commit id 来恢复版本。git提供了一个命令:git reflog来查看自己的每一次命令

使用命令git reset --hard commit_id来穿梭版本

工作区和暂存区

我们创建的文件夹是工作区,init后产生的.git文件夹是我们的版本库其中的stage就是暂存区。在.git中Git为我们创建了master,以及指向其的一个指针HEAD

git add是提交到了暂存区 可以多次add然后一次提交

git commit是将暂存区中的所有内容提交到当前分支中(master)

通过 git status 来查看stage中的状态

理解工作区和暂存区,以及暂存区中的stage和master

管理修改

​ git跟踪的是修改,当你修改一个文件中的内容,并且 git add后,这些修改的内容保存到了暂存区。此时你再修改这个文件中的内容。当你 git commit的时候,提交的只是第一次修改的的内容,即暂存区中的内容。第二次的修改并没有 git add到暂存区中,所以并不会提交。

​ 如果需要提交第二次修改的内容的话还是需要 git add

​ 如果不 git add到暂存区,git commit的话就不会提交到分支中

撤销修改

当你对一个文件进行了修改后,在git add之前你发现不能这么修改,你需要删除刚才增加的一行。这时候你可以通过 git checkout -- file来撤销修改,这种操作会回退到最近的一个版本

注意:git checkout --file中的 - -很重要,如果没有 - - 那么这命令就变成切换另一个分支了

现在你写了一句错误的代码并且已经 git add到暂存区了,然而你发现了错误,还没有commit。这时候怎么将暂存区中的内容回退到工作区中呢?

首先通过 git reset HEAD file将暂存区中的内容回退到工作区中,再用 git checkout -- file丢弃工作区中的内容。

小结:场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

删除文件

从版本库中删除文件使用:git rm file然后提交 git commit -m ""也可以直接 rm file直接删除,如果是使用 rm file删除文件的话可以通过 git checkout -- file来回退工作区删除的文件

如果是 git rm file并且以及提交了,这时候通过 git reset --hard commit_id来回退版本 或者通过

git reset --hard HEAD^来回退到上个版本

远程仓库

添加远程库 (本次是在github上建立的远程库)

1、添加远程仓库,这里是github上建立的一个仓库

$ git remote add origin git@github.com:lindong53/learngit.git

通过如下命令来关联远程仓库

git remote add origin git@server-name:path/repo-name.git

看到这里我茅塞顿开了。哭。

通过 git remote -v可以查看远程库中已存在的远程分支以及其远程url

首先查看状态 git status可以看到文件的修改(这时候应该看到了一堆红色的,这是还没有add的),这时将工作区的内容add到暂存区中 git add .(这时候再 git status的时候看到了之前红色的都变成绿色了。)这时候可以 git commit -m ""对add的进行一个注释,说明? 此时你就可以通过 git push origin master将本地版本库推送到远程服务器的master分支上去了。

通过远程库的ssh地址来克隆到本地

1、在本地创建一个存放项目的文件夹

2、把项目的ssh地址复制下来

3、cd 命令进入文件夹,使用 git clone ssh地址克隆到本地

然后 git pull origin master 是将远程仓库中的master分支同步到本地仓库 master中

分支管理

创建以及合并分支

首先理解分支,在git里有个分支叫master,这是一条主分支。可以有多个分支

这里我自己打个比方:比如工人开挖一条河 河1(master)是主河,工人(HEAD)每天就挖一点,老板给了钱(提交或者修改)工人正在挖的这条河1就会往前推进一点。这时候老板说另外开一条河 我就叫这条河为河2(dev),现在工人们都去挖河2了。因为资金充裕,河2一直在向前挖着。然而这时候,老板说要把两条河合并在一起,这时候就需要工人重新去河1去挖。总结就是**工人(HEAD)**到哪儿,挖到哪儿。

创建分支并切换到此分支的命令 g

查看当前分支:git branch

查看远程分支,以及当前所在的分支 : git branch -a

合并分支到当前分支,一般都是合并到master这个主分支上? git merge <name>

删除分支:git branch -d <name>

解决冲突

当你再分支dev上修改了,并且add到暂存区了,这时候你切换回master分支,也对同一个文件进行了修改并且 add到暂存区了。这时候你合并dev分支到master(反正就是合并两个分支)会产生冲突,到底用谁的呢?

git status可以告诉我们冲突的文件,并且有提示语句,让我们选择一个分支内容作为最终保存的内容。执行完成后,我们可以通过 git log来查看分支合并的情况

分支管理策略

在合并分支的时候,git默认是采取 Fast forward模式的,这种模式在删除分支的时候会丢失分支信息。

通过禁用 Fast forward模式,在合并分支的时候会产生一个新的commit,这样就可以在分支历史(git log)上看到分支信息了。

$ git merge --no-ff -m "merge with no-ff" dev

--no-ff:禁用Fast forward模式 ,因为会创建一个新的commit 所以加上 -m参数把commit描述写进去

BUG分支

1、当你在进行一个任务(dev)的时候,这时候有一个紧急的bug需要修改。而你还不能提交正在进行的任务,而这个bug(master上)又需要马上修复。这时候可以将dev这个任务暂时的缓存起来。切换到dev分支使用命令

git stash这时候 git status查看工作区就是干净的。

2、现在要修复master分支上的bug了 ,切换到master分支 git checkout master并且创建新分支解决bug

git checkout -b bug修复完成后,切换到master分支完成分支的合并

git checkout master git merge --on-ff -m "修改bug" bug

3、好了,现在bug修改完了,我们切换到dev分支,将缓存区中的内容还原到工作区中

通过git stash list查看缓存区中的内容列表,现在有两种方法来恢复。第一种就是通过 git stash apply来恢复,这种方式恢复后并不会删除stash区中的内容需要手动的 git stash drop来删除stash区中的内容

另一种方式就是 git stash pop这种方式会恢复内容并且删除stash区中的内容,也可以通过 git stash pop/apply stash@{0}来指定恢复的stash

多人协作

两个人同时在一个分支上开发,而且两人对同样的文件进行了修改,此时是他先上传的,你后上传。你push的时候会提示推送失败,因为文件中有冲突。首先需要先从远程库中 git pull到本地,在本地合并,解决冲突后再提交。

多人在同一分支上协同开发的时候很容易出现冲突,即使没有冲突,后提交的人也需要先pull在本地完成合并在进行push才能成功

保存本地修改,以及恢复

1.git stash保存本地修改

2.git pull origin master pull内容到本地

3.git stash list 查看本地保存内容,通常是 stash@{0}…

4.git stash pop stash@{list.num} 来恢复保存在暂存区的内容到本地

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值