Git的基本使用

Git是目前世界上最先进的分布式版本控制系统

以下目录顺序不代表操作顺序 !

安装git

不多说了,去官网下安装包安装


创建版本库

如果你使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(包括父目录)不包含中文。

终端进入想要创建git版本库的文件夹

git init

会生成一个.git隐藏文件夹,初始化完成


远程仓库

github绑定秘钥,参考另一篇文章

git remote add origin {git@github.com:example/example.git}


拉取代码

第一次拉取使用
使用ssh和https都是一样的,但是https需要输入用户名密码,ssh只需要绑定过秘钥即可

git clone {git@github.com:example/example.git}

以后再更新代码使用

git pull

执行git pull时,其实相当于执行了git fetch和git merge

git pull --rebase

执行git pull --rebase时,相当于执行了git fetch和git rebase

rebase和merge的区别后面再说


分支

基于当前分支创建一个新的分支

git branch {branchname}

切换到指定分支

git checkout {branchname}

也可以使用git checkout -b {branchname},创建分支并切换到它

查看所有分支,包括远程的

git branch -a

强制删除本地分支

git branch -D {branchname}

删除远程分支

git push origin --delete {branchname}


版本回退

退回上一个版本

git reset --hard HEAD^

注意:Windows下使用终端会需要使用^结束,即git reset --hard HEAD^^

退回若干个版本

git reset --hard HEAD~{num}

退回到指定版本

# 查看版本信息

git log

# 可以看到这样的信息,就是你的提交历史,键盘u是上一页,d是下一页,q可以退出该界面
commit e475afc93c209a690c39c13a46716e8fa000c366 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 21:03:36 2018 +0800

    add distributed

commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Fri May 18 20:59:18 2018 +0800

    wrote a readme file

# 退回到指定版本
# 版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

git reset --hard eaadf4

撤销上次commit,注意是回到上次commit之前的状态,如果上次commit已经push到远程,会导致版本不一致

git reset --soft HEAD^

windows同样是git reset --soft HEAD^^

撤销add操作,注意只是撤销add本次的修改部分,并不是撤销add整个文件

git reset HEAD所有

git reset HEAD {全路径}指定文件


暂存区

1.将本地修改保存到暂存区,注意只有add过后的编辑内容会进入暂存区

stash和栈的存储顺序一样,先进后出

stash之后本地的工作区就是干净的

git stash

2.取出最近的一次stash的内容

git stash apply

3.删除最近一次stash的内容

git stash drop

4.取出最近的一次stash的内容,如果没有冲突就删除stash的内容

git stash pop

5.查看stash列表

git stash list

6.清除所有stash的内容

git stash clear


提交

# 状态

# 可以看到当前版本库的状态,包括有哪些文件还未提交等

git status
# 将文件交给版本库管理

git add 文件全路径	# add指定文件

git add .	# add当前文件夹下所有未被版本库管理的文件
# commit操作

# 将add之后的所有变更进行一次提交,

git commit -m ""
# 将本地仓库推送到远程,注意本地和远程有冲突会失败

git push

# 强制推送,用本地的版本覆盖远程,会把别人的代码覆盖掉,最后仅在自己的分支可以使用

git push -f
# 远程分支覆盖本地(三步)

git fetch --all
git reset --hard
git pull

实际项目的提交流程

All Roads Lead to Rome

条条大路通罗马

处理冲突提交方式有多种,这里只介绍博主喜欢的一种

单分支开发

如果是多个人在一条分支上开发

git status查看状态

git add .添加需要管理的内容

git stash将内容暂时存储起来

git pull更新代码

由于本地修改已经被存储起来,所以目前本地版本树和远程是一致的,不会有任何冲突

git stash pop将存储的内容还原回来,并删除存储的内容

此时可能会有冲突,如果有冲突,stash的内容是不会被删除的,可以放心

解决冲突

git add .

git commit -m ""

git push

多分支开发

如果是多个人在自己分支上开发,并合并到主分支

假设主分支叫develop,自己的分支叫rome

在rome分支开发完成之后

git status

git add .

git stash

git checkout develop

git pull

git checkout rome

git rebase develop

git stash pop

此时可能会有冲突,解决冲突

git status

git add .

git commit -m ""

git push

如果通过一些版本回退的命令,导致本地代码和远程不一致,

但是本地的代码同时确定是基于develop的最新代码,可以使用git push -f覆盖自己远程分支的代码

rebase 和 merge

从意义上来考虑

rebase

当前在rome分支

git rebase develop 应该是在让自己分支独有的提交重新基于主分支的代码

merge

当前在develop分支

git rebase rome 让rome的分支的提交合并到主分支来

详细解析

有空再写

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值