【Git基础】git常用命令和分支问题

转载自:https://blog.csdn.net/qq_43768851/article/details/124277192

一、常用命令

//1. 用户签名的作用:区分我们是哪一个操作者
//第一步:设置用户名和邮箱:
git config --global user.你的姓名  // 设置用户签名
git config --global user.你的邮箱  // 设置用户签名
//查看是否设置好了:C盘 -> 用户 -> 你当前登录的用户 -> .gitconfig文件,记事本打开,里面有姓名和邮箱信息即可。
---------------------------------------------

//2. 创建你想要存放本地代码库的目录,然后在此目录下打开gitbash
//输入命令,初始化本地库:
git init  // 初始化本地库
---------------------------------------------

//3. .git同级的文件夹中创建新的文件,如a.txt后,即可看到本地库文件状态
git status  // 查看本地库状态
//我们的文件还在untracked状态(未被追踪、未添加到暂存区),下一步就是git add命令,将文件添加到暂存区。
---------------------------------------------

//4. 添加到暂存区
git add 文件名
//在将工作区的 a.txt 文件上传至 暂存区后,工作区内的 a.txt 文件并没有消失
git rm --cached 你的文件(a.txt)  //删掉暂存区的文件
---------------------------------------------

//5. 将暂存区的文件提交到本地库
git commit -m "日志信息" 文件名  //提交到本地库
---------------------------------------------

//6. 查看版本信息(查看是否提交到本地库成功了)
git reflog  //查看本地记录
或
git log  //详细地查看是谁在什么时间提交了什么到了本地库中,会出现用户签名、完整的版本号
---------------------------------------------

//7. 版本穿梭,回退到指定版本
git reset --hard 版本号

---------------------------------------------

//8. 检查本地的代码修改
git  diff  //可以查看当前没有add 的内容修改(不在缓冲区的文件变化)

git diff --cached  //查看已经add但没有commit 的改动(在缓冲区的文件变化)

git diff HEAD //是上面两条命令的合并

//9. 将其他分支的某些新commit更改 加入到当前分支中(可能要解冲突)
git cherry-pick xxxx  // 拉取来一个commit,commit ID是xxxx
git cherry-pick xxxx^..yyyy  // 拉取从xxxx到yyyy间所有commit更新到本分支。^是包含起始点commit

//10. 获取最新的commit id的简短结果
git rev-parse --verify --short HEAD // ea79e49b2
git rev-parse --verify HEAD // 这是完整结果:ea79e49b21ae8706dfbe5e2f13a766b5b10ac9db

//11. 获取当前repo的最新tag
git describe --tags `git rev-list --tags --max-count=1` //后面''内的不加,会输出带commit号的:v2.0.2-1-g00eea27

二、Git分支操作

git branch 分支名称 // 创建分支
git checkout -b 分支名称 // 创建分支并切换当前工作环境至此分支
//注意此时创建的分支只是在本地,并未和远程仓库关联。一般都会用git网页上create branch选项,这样会自动关联

git branch -v
// 查看分支

git checkout 分支名
// 切换分支

// 删除本地分支
git branch -d 分支名  // 会检查更改是否merge
git branch -D 分支名  // 强制删除,无检查

// 删除远端分支
git push origin --delete 分支名 

git merge 分支名
// 把指定的分支合并到当前分支上

具体展示

  1. 查看分支 - git branch -v
    在这里插入图片描述

  2. 创建分支 - git branch 分支名称
    在这里插入图片描述

  3. 切换分支 - git checkout 你想要切换到的分支的名称
    在这里插入图片描述
    切换分支后可以对此分支文件进行修改:
    我有两个分支,一个叫master(主分支),一个叫lindaobie。
    我现在先切换到lindaobie分支中去修改文件,然后再回到master分支,看看我们在master分支中的文件是否也会被修改。然而实际上master分支中的文件是不会被修改的!
    在这里插入图片描述

  4. 合并分支 - git merge 分支名

请注意,git merge 分支名,这里的分支名,是我们要合并到当前分支上的,其他分支的名称

4.1 演示一下,我们把lindaobie分支,合并到当前的master分支上:

在这里插入图片描述

4.2 合并成功,查看一下,发现当前master分支上的文件已经被lindaobie的文件内容覆盖了,成功。

在这里插入图片描述

特殊情况:分支合并冲突

合并分支时,两个分支在同一个文件有不同的修改

  • 在老版本中,Git无法替我们决定选择哪一个,必须人为决定新代码的内容。
  • 在新版本中,git会自动弹出一个窗口并且进行选择性合并,之后我们再人为对这个文件进行修改,重新上传。

原因:实际上在正常合并两个分支上的内容时,我们只应该修改其中的一个分支,不修改的分支应该称之为主分支。但如果我们一直都在修改不同分支上的同一个文件,那么合并的时候就会出现不知道谁向谁合并的问题。说得有点晦涩,让我们具体操作一下来理解这个问题。

开始操作!

  1. 现在我们的两个分支(lindaobie、master)中的yangziyi.txt中的内容是完全一致的。
  2. 开始修改,master分支中的yangziyi.txt文件,在最后一行加上 “我是一只布偶猫
    提交至暂存区,然后提交至本地库。
    在这里插入图片描述
  3. 开始修改,lindaobie分支中的yangziyi.txt文件,在倒数第二行加上 “我是一只英国短毛猫
    提交至暂存区,然后提交至本地库。
    在这里插入图片描述
  4. 此时,我们的两个分支中的同一个文件都被修改了!在master分支中合并一下lindaobie分支试试看,结果是合并之后同时抽取了特征值,但是多了一行,虽然git已经自动帮我们解决了合并的大部分问题,但依旧需要我们手动进行进一步的修改。尽管如此,git已经足够智能了。
    在这里插入图片描述
    我们vim打开自动合并后的文件yangziyi.txt,手动进行进一步的修改:
    这才是我们想要的状态:
    在这里插入图片描述
  5. 请注意,附带 合并冲突 的 自动选择合并,是新版本的特性,在之前的版本里,系统不知道应该保留哪一部分,合并之后,我们的master分支中的 “我是一只布偶猫” 就会被覆盖掉,但不要这样啊,我们想同时保留“我是一只布偶猫”和“我是一只英国短毛猫”!所以说git其实并不笨,它把这种处理不了的情况报告给我们了。

6.重新上传到暂存区,再上传到本地库,发现,很OK!问题经过git和我们的共同努力,已经解决了!合并成功!
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值