git 命令使用记录

本文详细介绍了Git的常用命令,包括如何回退历史版本、操作远程仓库、从已有分支拉新分支开发、分支合并策略以及标签管理。重点讲解了多人协作时的分支创建、合并、删除以及标签的使用,旨在帮助开发者更好地理解和应用Git进行团队协作。
摘要由CSDN通过智能技术生成

1.git常用命令篇

//1.初始化仓库
git init
//2.添加文件
git add file.txt
//3.查看状态
git status
//4.查看改动内容
git diff file.txt
//5.提交到仓库
git commit -m 'modify file.txt'
//6.查看提交历史记录
git log

在这里插入图片描述
说明:git log命令可以查看历史提交记录,方便历史版本回退,怎么回退历史版本呢?
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交d9c4e8b…(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,
上上一个版本就是HEAD^^ ,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。

现在,我们要把当前版本modify as.c回退到上一个版本fixed the file as.c bug,就可以使用git reset命令:

//7.版本回退
git reset --hard HEAD^
//8.删除文件
git rm file.txt
git commit -m 'remove file.txt'

2.远程仓库篇

默认已经将公钥加入远程仓库,没有的话参考:链接

//1.关联远程仓库
git remote add origin git@server-name:path/repo-name.git
//2.第一次推送master分支
git push -u origin master
//3.之后推送master分支
git push origin master

3.git从已有分支拉新分支开发

从master分支copy一个开发分支,使用一下完成操作
1.1切换到被copy的分支(master),并且从远端拉取最新版本:

git checkout master
git pull

1.2.从当前分支copy新的分支,并切换分支

git checkout -b dev
//查看分支
git branch

1.3.把新建的分支push到远端:

git push origin dev

1.4.拉取云端分支

git pull
 
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.
 
git pull <remote> <branch>
 
If you wish to set tracking information for this branch you can do so with:
 
git branch --set-upstream-to=origin/<branch> dev

经过验证,当前分支并没有和本地分支关联,根据提示进行下一步:
1.5.关联

git branch --set-upstream-to=origin/dev

注意:–set*之后的参数没有空格
1.6.再次拉取 验证:

git pull

4.分支合并命令篇

4.1创建与合并分支
//1.创建并切换分支
git checkout -b dev
git switch -c dev  //新版本支持switch命令切换分支
//2.查看分支
git branch
//3.合并dev分支到master
git checkout master
git merge dev
//也可以加参数 --no-ff,表示禁用Fast forward
git merge --no-ff -m 'merge with no-ff' dev
//4.删除分支
git branch -d dev
//5.删除远程分支
git push origin --delete dev
4.2分支策略
  • 实际开发中,master分支应该是非常稳定的,只能用来发布新的版本,平时不能在上面干活
  • 开发都在dev分支上完成,团队合作的分支看起来如下
    团队合作图
4.3Bug分支

如果正在dev上进行开发,工作还未提交,这时有个紧急的bug需要修复,怎么办?
可以用stash功能"储藏"起来,bug修复后恢复现场继续工作

$ git statsh

现在就可以切换到要修复bug的分支上,创建新的分支issue-* 如:

$ git checkout master
$ git checkout -b issue-101
  ......//执行bug修复工作
$ git switch master  //切换到master分支
$ git merge --no-ff -m 'merged bug fix 101' issue-101

修复完成bug可以继续回到dev工作

//切换分支
$ git switch dev 
//查看工作区,此时工作区是干净的
$ git status
//查看暂存内容
$ git stash list
//恢复之前暂存的工作区
$ git stash pop

思考区在master分支上修复了bug,如果dev分支是早起从master分支分出来的,那么这个bug在dev分支上也存在,dev分支的bug怎么修复呢?
git解决方法:使用 cherry-pick命令,将修复bug的那次提交“复制”到dev分支

//查看分支,确定在dev分支上
$ git branch 
//合并到dev,后面的‘4c80512’表示修复bug的commit id前几位,根据自己的实际产生的id修改
$ git cherry-pick 4c80512
4.4 feature分支

软件开发中,每添加一个新功能,最好新建一个featrue分支,在上面开发,完成后,合并,最后删除该feature分支。

$ git switch -c feature-vulcan
  ......//进行代码开发
$ git add *
$ git commit -m 'add feature vulcan'
 //切换到dev分支,准备合并
$ git switch dev

正常的话合并,然后删除,但是,如果此时突然老板说该功能不要了,需要就地销毁,我们执行如下命令

$ git branch -d feature-vulcan
error: The branch 'feature-vulcan' is not fully merged.
If you are sure you want to delete it, run 'git branch -D feature-vulcan'.

销毁失败,git提醒需要使用-D参数

$ git branch -D feature-vulcan
Deleted branch feature-vulcan (was 287773e).

小结
要删除一个没有被合并过的分支,可以通过git branch -D <name>命令

4.5 多人协作

推送分支

//1.查看远程仓库信息
$ git remote
或者
$ git remote -v //显示更详细信息

//2.推送分支
git push origin master  
git push origin dev

注意:并不是一定要把本地分支往远程推送,具体哪些需要推送呢?

  • master 分支是主分支,因此要时刻与远程同步;
  • dev 分时是开发分支,团队所有成员都需要再上面工作,所以也需要与远程同步;
  • bug分支只用于在本地修复bug,没必要推到远程,除非老板要看你每周修复几个bug
  • feature分支是否推送到远程,取决于你是否和你的小伙伴合作在上面开发

抓取分支
如果现在远程有masterdev分支,从远程库clone时,只能看到本地的master分支,如果要在dev分支上开发,就必须创建远程origindev分支到本地

$ git checkout -b dev origin/dev

然后就可以在dev下开发了并push了。
如果修改一段时间push失败,与别的小伙伴产生冲突,先用git pull把最新的提交从origin/dev抓下来,然后再本地合并,解决冲突,再推送:

$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details.

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream-to=origin/<branch> dev

git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,执行如下命令

$ git branch --set-upstream-to=origin/dev dev
Branch 'dev' set up to track remote branch 'dev' from 'origin'.

小结
多人协作的工作模式通常是这样:

首先,可以试图用git push origin <branch-name>推送自己的修改;

如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;

如果合并有冲突,则解决冲突,并在本地提交;

没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,
用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。

rebase
多人在同一个分支上协作时,很容易出现冲突。即使没有冲突,后push的童鞋不得不先pull,在本地合并,然后才能push成功,每次合并再push后,分支变成了这样

$ git log --graph --pretty=oneline --abbrev-commit
* d1be385 (HEAD -> master, origin/master) init hello
*   e5e69f1 Merge branch 'dev'
|\  
| *   57c53ab (origin/dev, dev) fix env conflict
| |\  
| | * 7a5e5dd add env
| * | 7bd91f1 add new env
| |/  
* |   12a631b merged bug fix 101
|\ \  
| * | 4c805e2 fix bug 101
|/ /  
* |   e1e9c68 merge with no-ff
|\ \  
| |/  
| * f52c633 add merge
|/  
*   cf810e4 conflict fixed

总之看上去很乱。git提交历史能否变成一条干净的直线?
可以,git rebase就可以做到

$ git rebase
First, rewinding head to replay your work on top of it...
Applying: add comment
Using index info to reconstruct a base tree...
M	hello.py
Falling back to patching base and 3-way merge...
Auto-merging hello.py
Applying: add author
Using index info to reconstruct a base tree...
M	hello.py
Falling back to patching base and 3-way merge...
Auto-merging hello.py

小结

rebase操作可以把本地未push的分叉提交历史整理成直线;

rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

5标签管理

发布一个版本时通常现在版本库中打一个标签(tag),这样就唯一确定了打标签时刻的版本,标签是指向某个commit的指针。(跟分支很像,但是分支可以移动,标签不能移动),所以创建、删除标签都是瞬间完成的。tag是一个有意义的名字,容易记住,如v1.2,它跟某个commit绑在一起。

5.1创建标签
//1.切换到要打标签的分支上,如
$ git checkout master
//2.打标签命令 git tag <name>
$ git tag v1.0
//3.查看标签
$ git tag
//4.查看标签信息 git show <tagname>
$ git show v1.0
//5.创建带有说明的标签 用-a 指定标签名,-m指定说明文字
$ git tag -a v0.1 -m "version 0.1 released" 1094adb

如果想要对历史提交打标签怎么办?

//1.查历史提交commit id
$ git log --pretty=oneline --abbrev-commit
12a631b (HEAD -> master, tag: v1.0, origin/master) merged bug fix 101
4c805e2 fix bug 101
e1e9c68 merge with no-ff
f52c633 add merge
cf810e4 conflict fixed
5dc6824 & simple
14096d0 AND simple
b17d20e branch test
d46f35e remove test.txt
b84166e add test.txt
519219b git tracks changes
e43a48b understand how stage works
1094adb append GPL
e475afc add distributed
eaadf4e wrote a readme file

//2.如果想对add merge这次提交打标签,它对应的commit id 是f52c633,
$ git tag v0.9 f52c633

小结

命令git tag <tagname>用于新建一个标签,默认为HEAD,也可以指定一个commit id;

命令git tag -a <tagname> -m "blablabla..."可以指定标签信息;

命令git tag可以查看所有标签。
5.2操作标签
//1.删除标签(本地标签)
$ git tag -d v0.1

因为创建的标签都只存储在本地,不会自动推送到远程

//推送标签到远程
$ git push origin v0.1
//一次性推送全部尚未推送的本地标签
$ git push origin --tags

删除远程标签,需要分两步,先删除本地再删除远程

$ git tag -d v0.9
//删除远程标签
$ git push origin :refs/tags/v0.9

是否真的从远程库删除了标签,可以登录github查看
小结

  • 命令 git push origin <tagname>可以推送一个本地标签;
  • 命令 git push origin --tags可以推送全部未推送过的本地标签
  • 命令 git tag -d <tagname>可以删除一个本地标签
  • 命令 git push origin :refs/tags/<tagname>可以删除一个远程标签
MSP432P401R是一款低功耗、高性能的微控制器,而OpenMV是一款具备机器视觉功能的嵌入式系统。当需要实现MSP432P401R和OpenMV之间的串口通讯时,需要进行如下步骤: 1. 硬件连接:首先,将MSP432P401R和OpenMV串口引脚(如UART引脚)相连接。确保连接正确,例如将MSP432P401R的TX引脚连接至OpenMV的RX引脚,将MSP432P401R的RX引脚连接至OpenMV的TX引脚。 2. 配置串口:在MSP432P401R的代码中,通过对串口寄存器进行配置,设置波特率、数据位、停止位等参数,以便与OpenMV进行通信。同时,也需要在OpenMV的代码中对相应的串口参数进行配置,确保双方的通信参数一致。 3. 数据传输:在MSP432P401R的代码中,可以通过UART发送函数将需要传输的数据发送至OpenMV。同时,在OpenMV的代码中,也需要接收函数来接收MSP432P401R发送的数据。这样,就可以实现双方之间的数据传输。 4. 错误处理:为了确保稳定的通信,应该在代码中添加错误处理机制。例如,在发送时,可以判断发送是否成功,如果失败则重新发送。在接收时,可以检查接收缓冲区是否为空,避免数据丢失。 总结:MSP432P401R和OpenMV之间的串口通讯需要进行硬件连接和软件配置。通过正确配置参数和实现数据传输,可以实现双方之间的稳定通信,并通过错误处理机制来保证通信的可靠性。这样,便可以实现MSP432P401R和OpenMV之间的串口通讯
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值