git学习笔记

基本操作

版本查看、回退

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

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

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

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

现在,我们要把当前版本append GPL回退到上一个版本add distributed,就可以使用git reset命令:git reset --hard HEAD^

丢弃工作区某个文件修改:

git checkout -- file

如果已经add到暂存区,一样可以丢弃:

git reset HEAD <file>

创建分支并切换到分支:

git checkout -b branchname

分支:

查看分支:git branch
查看远程分支和本地分支:git branch -a
创建分支:git branch <name>

切换分支:git checkout <name>或者git switch <name>

创建+切换分支:git checkout -b <name>或者git switch -c <name>

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

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

临时紧急修复bug如何保留当前未完成的工作:

修复bug时,我们会通过创建新的bug分支进行修复,然后合并,最后删除;

当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场;
你可以多次stash,恢复的时候,先用git stash list查看,然后恢复指定的stash,用命令:

$ git stash apply stash@{0}

在master分支上修复的bug,想要合并到当前dev分支,可以用git cherry-pick 命令,把bug提交的修改“复制”到当前分支,避免重复劳动。

远程库

//查询当前远程的版本
$ git remote -v
//获取最新代码到本地(本地当前分支为[branch],获取的远端的分支为[origin/branch])
$ git fetch origin master  [示例1:获取远端的origin/master分支]
$ git fetch origin dev [示例2:获取远端的origin/dev分支]
//查看版本差异
$ git log -p master..origin/master [示例1:查看本地master与远端origin/master的版本差异]
$ git log -p dev..origin/dev   [示例2:查看本地dev与远端origin/dev的版本差异]
//合并最新代码到本地分支
$ git merge origin/master  [示例1:合并远端分支origin/master到当前分支]
$ git merge origin/dev [示例2:合并远端分支origin/dev到当前分支]

推送本地分支到远程分支:

git checkout -b localbranch
git push origin localbranch/remotebranch
#(origin远程仓库别名可能为其他,自定义名称),可以通过git remote -v来查看你的远程仓库别名,此时如果远程仓库没有该分支,会新建一个分支
#下次如果已经在该分支上,想要推到远程分支,只需
git push origin remotebranch

拉取远程分支到本地

#先同步一下远程仓库的信息
git fetch origin
git checkout -b ac_branch origin/ac_branch
#上一命令创建了本地新分支,并跟远程分支同步
#如果本地已经有该分支了,只要切换到该分支后
git push origin ac_branch

分支下再创建分支

团队项目开发时,常常会进行分模块开发,一个小团队负责一个模块的功能开发,当该模块功能太多时,又需要进行分块,这时需要怎么办呢?废话不多说,马上进入正题:

门派之争

下面举个例子,现在主分支master为武林,武林下有华山派,华山派下又有气宗,剑宗。先创建好华山派的分支:

git branch HuaShang

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ ls
HuaShang.txt  Kongfu.txt

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ cat HuaShang.txt
华山派

下面开始创建华山派下的气宗分支:

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ git checkout -b QiZong HuaShang
Switched to a new branch 'QiZong'
M       HuaShang.txt

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ ls
HuaShang.txt  Kongfu.txt

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ touch Qizong.txt

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ git add Qizong.txt

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ git commit -m "add qiaong"
[QiZong 370e45c] add qiaong
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 Qizong.txt
Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ ls
HuaShang.txt  Kongfu.txt  Qizong.txt

切回华山派看看,是否有气宗的内容

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (QiZong)
$ git checkout HuaShang
Switched to branch 'HuaShang'
M       HuaShang.txt

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ ls
HuaShang.txt  Kongfu.txt

发现华山派里暂没有气宗门派,是时候将他合并到华山里,

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ git merge QiZong
Updating 3086bd3..370e45c
Fast-forward
 Qizong.txt | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 Qizong.txt

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (HuaShang)
$ ls
HuaShang.txt  Kongfu.txt  Qizong.txt

这时华山派已有气宗,那么主分支武林里呢?照理来说是没有的,因为这是华山派的分支

Admin@DESKTOP-TQV3L0V MINGW64 /d/Personal/Desktop/Temp/gitexercise (master)
$ ls
Kongfu.txt  ShaoLin.txt

参考教程:https://stackoverflow.com/questions/4470523/create-a-branch-in-git-from-another-branch
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值