1.git命令学习

git使用

1.设置用户名和邮箱

git config --global user.name "r1chie"
git config --global user.email r1chie@ramboai.com

2.初始化git

git init

2.1 配置文本编辑器

git config --global core.editor vim

3.克隆仓库

git clone xxxxx

可以克隆本地目录

克隆后,文件夹里面只有.git目录,而没有文件,原因是该项目存在多个分支,使用来来查看远程分支:

git branch -r(远程) 或 -a(所有) 

查看之后再使用:

git checkout  branch_path

就可以clone出来了。

4.文件跟踪

增加追踪文件,或者把已经追踪的文件放进暂存区。因此每次将文件修改之后,需要进行git add命令把文件放入暂存区。

git add xxx.c

删除追踪文件

git rm xxx.c

如果git add后面是目录,那么将递归目录下所有的文件

5.查看修改记录

git log

也可以查看简略统计信息

git log --stat

6.查看状态

查看文件处于什么状态

git status

状态简览:

git status -s

A:表示新添加到暂存区中的文件

M:表示修改过的文件

7.对比文件

工作区文件与仓库中的文件对比:

git diff

与缓存区里的文件与仓库中的文件对比:

git diff --cached

8.上传文件

上传文件:

git commit

添加修改的信息:

git commit -m "xxxxxxxx"   ///字符串可填版本号

9.查看远程主机名

git remote -v

10.撤销操作(未push)

10.1 文件被修改,但未执行git add操作(从工作区内撤销)

git checkout filename  //恢复原来的文件

git checkout . //恢复已经修改过的文件

10.2 同时对多个文件进行git add,但只想commit部分文件

git add *
git status //查看已经被add的文件

git reset HEAD filename   //取消某个文件的暂存

10.3 文件执行了git add,但想撤销对其的修改

git reset HEAD filename  //取消暂存

git checkout filename //撤销修改

10.4 修改的文件已经被git commit,但想再次修改并且不产生新的commit

git add filename
git commit --amend -m "xxx"  //这样就会修改掉最后一次的commit

10.5 已在本地进行了多次commit操作,现在想撤销到其中某次commit

git reset --hard  hash   

hard:会清空工作区缓存区的内容,并更新工作区

git reset --soft  hash

soft:不清空工作区缓存区

git reset --mixed hash

mixed:仅仅清空缓存区,不清空工作区

11.回滚(已push)

例子:

程序提交顺序:

B1   11
A2    10
A1     9

A发现A2程序有错误,需要退回到A1,那么A的正确操作是这样的:

git reset --hard A1 //本地退回到A1
git push -f origin dev //强制推送到远程仓库的 dev分支

那么该分支的版本就是A1,B的代码要基于A1,B可以这么操作:

git checkout dev //切换到工作分支
git reflog      //查看B1的版本id
git reset --hard B1 //回滚到B1
git checkout -b devb1  //拉取新分支
git log              //检查零时日志
git checkout dev  //切换到工作分支
git reset --hard A1         //回滚到A1版本
git reset --hard origin/dev  //本地仓库回滚到
git merge devb1    //合并临时分支版本  
git push origin dev //推送到远程仓库dev分支

12.分支

创建新的分支,使用命令:

git branch_name

切换分支

git checkout branch_neme

或者

新建并且切换分支命令

git checkout -b branch_name

删除分支

git branch -d branch_name

查看各个分支在哪个commit上

git log --decorate

查看更为详细的分支情况

git log --decorate --graph --all

12.1 合并分支

合并分支

git merge branch_name
  • 情况一:在这种情况下,把hotfix合并到master,那么只是把指针master移动到hotfix

在这里插入图片描述

  • 情况二:把iss53合并到master中,那么就会产生一个新的commit—C6,C6有两个父节点,一个是C4,一个是C5

在这里插入图片描述

  • 冲突合并:如果C4中对文件A的第11行做了修改,并且C5也是对文件A的第11行做了修改,就会产生冲突,那么git会暂停下来,等待你解决了这个合并冲突后,才能进行合并。冲突后,可以打开冲突的文件:

    <<<<<<< HEAD:1.txt
    123
    =======
    321
    >>>>>>> iss53:1.txt
    

    ====上半部分是HEAD所指向的版本的冲突内容,=====下半部分是iss53分支所指示的版本的冲突内容,你可以保存只某个部分的内容,重新git add将其标记为已解决。

12.2 远程仓库

克隆远程仓库:

git clone path

克隆后,本地仓库将会命名为origin/master。git也会给你一个与origin的master分支指向同一个地方的本地master分支

在这里插入图片描述

如果此时,在远程仓库已经被其他开发更新了,你可以使用命令来更新你的本地仓库:

git fetch origin 

origin是服务器,从远程仓库中抓取本地没有的数据,并且更新本地数据库,移动origin/master指针指向新的、更新后的位置

在这里插入图片描述

遇见的问题

​ 我在本地clone后,做一些修改,再push到本地文件,push能成功,并且能看到log,但在主仓库中却没有看见文件的更新。

原因是当前本地仓库只是一个工作区,在push后,信息是存放在数据库的,因此还需要将数据库中的信息更新到工作区,可以调用:

git checkout master .

文档参考:https://www.progit.cn/#_git_branching

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值