git常用命令

最近在网上发现了个git闯关的游戏,link.,因为自己平时做项目用的都是git,但都是些最基本的,于是要写篇博客记录一下,省得以后再找。

  • 初始化一个git仓库。
git init
  • 设置/查看git配置的用户名和邮箱
git config --global user.name [用户名]
git config --global user.eamil  [邮箱]
  • 添加文件到仓库
git add [文件名]
  • 提交文件到仓库
- git comit -m '提交的说明'
  • 克隆项目
git clone 项目地址
  • 忽略文件,让特定文件不受版本控制
    1.忽略指定文件类型结尾的文件
    在.gitignore里编辑 添加一行*.swp,add并且commit后,版本仓库会忽略掉以*.swp结尾的文件
    在这里插入图片描述
    2.忽略以.a结尾的文件,但是不忽略lib.a这个文件
    在这里插入图片描述
  • 查看暂存区的状态
git status

在这里插入图片描述
用git status命令查看工作区状态,有三个状态:
Changes to be committed: 要提交的更改。
Changes not staged for commit:未提交的更改。
Untracked files: 没有跟踪的文件。

  • 从暂存区/分支上删除文件,并且本地也删除该文件
git rm  <file>
  • 删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制,
git rm --cache <file>
  • 隐藏当前工作
git stash
  • git重命名文件
git mv oldfile newfile
  • git移动文件到指定文件夹
git mv file folder
  • 查看提交的日志
git log
  • 给git打个标签
git tag '标签名'
  • 查看所有标签
git tag
  • 切换到某个标签
git checkout <tagname>
  • 把标签推送到远程仓库
git push origin [tagnema]   (推送单个标签)
git push origint --tags  (推送所有标签)
  • 合并缓存区的修改和最近的一次commit, 然后用生成的新的commit替换掉老的. 如果缓存区没有内容, 那么利用amend可以修改上一次commit的描述.
git commit --amend 
git commit --date <date>
  • 回退某个提交
git reset HEAD <file>
#回退所有内容到上一版本 HEAD^的意思是最近一次的提交
git reset HEAD^
#回退a.py这个文件的版本到上一个版本 
git reset HEAD^ a.py 
#向前回退到第3个版本 
git reset --soft HEAD~3 
#回退到上一个版本
git reset --soft HEAD^
#将本地的状态回退到和远程的一样 
git reset --hard origin/master 
#回退到某个版本 
git reset 38679ed 
#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit 
git revert HEAD  
  • 撤销某个文件的修改
git checkout -- <file>
  • 列出所有的远程分支
#列出所有的远程分支,只显示分支名
git remote
#列出所有的远程分支,显示克隆地址
git remote -v
  • 从远程分支拉取代码
git pull origin master
  • 添加一个远程仓库地址
git remote add [shortname] [url]
  • 把一个分支的修改合并到当前分支
git rebase [branchName]
  • 上传本地代码分支到master分支
git push origin master
  • 比较文件
#比较暂存区与最新本地版本库
git diff <file>

#比较工作区和最新版本
git diff  HEAD <file>

#比较工作区与指定的 commit -id 的差异
git diff commit-id <file>

#比较暂存区与指定 commit-id 的差异
git diff --cached commit-id  <file>

#比较两个 commit -id 的差异
git diff  commit-id  commit-id 
  • 查看文件的每个部分都是谁修改的
git blame <file>
#指定行数,从第一行到第十行
git blame -L 1,+10 <filename>
  • 分支管理
#查看所有分支
git branch

#创建一个分支
git branch <branchname>

#切换到某个分支
git checkout <branchname>

#切换到某个标签
git checkout <tagname>

#切换到某个标签,但已有分支名与标签名一样
git checkout tags/<tagname>

#在某个分支的上一个版本上新建分支
git checkout <branchname> HEAD^1 
或者
git log
git checkout <branchname> -v 第二条id的前七位

#删除分支
git branch -d <branchname>

  • 分支推送
#将本地的master分支推送到origin主机的master分支
git push origin master 

#如果当前分支与远程分支直接存在追踪关系,则本地分支和远程分支都可以省略
git push origin

#如果当前分支只有一个追踪分支,那么主机名都可以省略
git push

#不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机。
git push --all origin
  • 合并分支
git merge <branchname>
  • 拉取远程仓库的代码
git fetch

关于git pull 和 git fetch的区别,这位博主介绍的很详细https://blog.csdn.net/weixin_41975655/article/details/82887273

  • rebase的使用
#合并master分支上的代码到当前分支
git rebase master
  • 将版本库未打包的松散对象打包
git repack
  • 挑选某个分支的某几个提交到当前分支
git cherry-pick commitid
  • git grep 查找git库里面的某段文字
#查找TODO
git grep TODO
  • 修改提交
git rebase -i

将某个分支上的所有修改都应用成一个提交。默认修改都将进入暂存区

git merge --squash <分支名>
  • 查找错误的节点
git bisect rum make test
  • 查看操作日志
git reflog
  • 撤销指定的提交记录,只会撤销当前的提交
git revert <commitid>
  • 解决冲突
    在这里插入图片描述
    冲突是开发中最常见的了,看图片里的冲突 “<<<<<<<<< HEAD” 到 “=”是你的当前分支的修改,
    从"
    " 到">>>>>>>mybranch" 是合并的分支的修改。这样就可以根据自己的需求合并了。

  • submodule:添加git仓库的子模块。场景:需要对依赖库进行修改和版本控制,且易于统一控制

git submodule add <url> <folder>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值