Git常用操作命令

在git中,可以通过^~@{}来快速定位某个具体的commit
^代表父提交,当一个提交有多个父提交时,可以通过在^后面跟上一个数字,表示第几个父提交,^相当于^1
~n相当于连续的个^
如:HEAD head~0 head@{0} 表示最近一个提交
HEAD^ 上一次提交 HEAD^^上上次提交

忽略某一文件的跟踪
git update-index --assume-unchanged 然后git commit提交
如果要撤销 git update-index --no-assume-unchanged

停止追踪一个文件
偶然把application.xml加到代码库里了,现在每次运行应用,git都会报告有未提交的修改。你把*.xml放到了.gitignore文件里,可文件还是在代码库里,怎么才能告诉git撤销对这个文件的追踪
方法:git rm –cached application.xml
原理:虽然.gitignore会阻止git追踪文件的修改,甚至不关心文件是否存在,但这只是针对于那些以前从来没有追踪过得文件。一旦有个文件被加入提交,git就会持续关注该文件的改变。如果你希望从git的追踪对象中删除那个本应忽略的文件,git rm –-cached会从追踪对象中删除它,但让文件在磁盘上保持原封不动。因为现在它已经被忽略了,你再git status里就不会再看见这个文件,也不会再偶然提交该文件的修改了

创建分支并切换
git checkout -b dev

git stash 封存当前分支本地更改,加入到git栈
git stash pop: 将之前本地做的修改应用到当前工作区。表示从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈
使用场景:你正在自己的分支开发, 还没开发完, 此时又接到一个新任务,需要重新开分支进行解决,但是切换到主分支时会把当前分支的更改信息带过去。使用git stash可以暂时忽略自己的分支的当前更改,完成新任务后,回到自己的分支使用git stash pop进行恢复

checkout只会移动HEAD指针,reset会改变HEAD的引用值,reset到之前某个提交后,Git 的历史只能往回看,不能向未来看,所以把 HEAD 和 branch 往回移动,就能起到撤回 commit 的效果。
使用git log –graph 命令,可以查看自己仓库的当前分支提交ID的树状图

git reset三种模式–soft –mixed –hard
git reset –mixed:此为默认方式,不带任何参数的git reset,此时这种方式,它回退到某个版本,只保留源码,回退commit和index信息,保留工作目录和差异文件,并清空暂存区, 和--soft唯一的区别就是会把差异文件以及暂存区的文件都放到工作区,而不是暂存区,因为暂存区要清空
git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可,会保留工作目录和此次提交的文件(这个文件就是和前一个版本的差异, 执行git show --stat可以查看此时对应的当前commit的差异文件),最终把重置 HEAD 所带来的新的差异放进了暂存区。移动Head指针后,也就将之前的commit带到移动后的Head指向的版本上
git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,没有commit的修改(包括工作区和暂存区的内容)会被全部被擦掉这里万一手贱,撤销了,现在又想回复怎么办。执行:git reflog 找到要恢复的版本在执行: git reset --hard "commit ID"

更改提交时的备注信息
在commit -m 消息里有一个笔误,已经执行git commit –m ’xxx’, 但在push之前发现说明信息有误
方法:git commit–-amend 或者git commit –amend –m ’正确的信息’
原理:git commit–amend会用一个新的commit更新并替换最近的commit,这个新的commit会把任何修改内容和上一个commit的内容结合起来。如果当前没有提出任何修改,这个操作会把上次的commit消息重写一遍

已经执行了gitpush,将修改发送到了github,需要撤销某一个commit。
方法:git revert <commit版本号>,则改commit的所有改变都会被反转,这样在版本库也会多一次提交。

撤销更改
git commit --amend 撤销上一次提交 并讲暂存区文件重新提交
git reset HEAD 拉取最近一次提交到版本库的文件到暂存区
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区
git checkout – 拉取暂存区文件 并将其替换成工作区文件
git checkout – file 可以丢弃工作区的修改,有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

撤销 commit:
git reflog 查看最近提交记录 找到要回退的id
git reset --hard commit_id 即可撤销commit,等于是丢掉当前你的全部更改,如果落后远程代码,必须强制推送 git push origin HEAD --force,没有则直接git push. 注意git reset –hard HEAD 会把全部更改的文件都恢复到原始样子(小心使用)

git push origin --delete Chapater 删除远程分支
git branch -d Chapater 可以删除本地分支

使用 git branch -a 命令可以查看所有本地分支和远程分支
如果发现很多在远程仓库已经删除的分支在本地依然可以看到
使用命令 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息
此时我们可以看到哪些远程仓库已经不存在的分支,根据提示,
使用 git remote prune origin 命令就能成功在本地删除远程不存在的分支。但此本地分支并不会删除

git合并远程分支到本地分支
有可能在你自己的分支开发过程(你在自己的分支不停push,pull)中,中间又有很多主分支的提交,当你在自己的分支开发完要和主分支进行合并时。需要拉取主分支的最新的代码(此过程可能会有冲突)到你自己的分支,然后提交,最后向主分支发起合并请求
git fetch origin master:temp 从主分支拉取最新的代码,然后在自己的分支上合并
git merge temp
如果有冲突,解决冲突
重新提交到自己的分支
git add .
git commit -m ’ comment’
git push origin local****:remote****
而后,从你的远程分支提合并请求到master分支即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值