git终端命令

个人blog,欢迎关注加收藏
Git 教程强烈推荐廖雪峰老师:Git教程

本地仓库

  1. 克隆版本git clone url(版本库地址)http://...-将仓库的文件clone到工作台

  2. 暂存文件 git add *,git add把文件添加进去,实际上就是把文件修改添加到暂存区

  3. 提交本地 git commit -m'注释信息',实际上就是把暂存区的所有内容提交到当前分支,创建Git版本库时,Git自动为我们创建了唯一一个master分支
    add/commit命令可合并成:git commit -am '提交说明’

  4. 提交远程 git push
    –将文件提交到git创建的远程仓库中

  5. 更新版本 git pull,将远程仓库的最新版本拉取到本地仓库,已有文件做了更改,对版本进行更新,确保是仓库中最新的内容 才能将自己的文件传送到远程仓库

  6. 查看工作区状态 git status -s

  7. git diff:查看版本库中提交的最新版本与工作区文件的差异,用git diff HEAD -- readme.txt命令可以查看工作区的readme.txt文件和版本库里面最新版本的区别

  8. git log --pretty=oneline:查看日志,记录的是提交记录(vscode终端查看完后,英文状态下按q退出)

  9. 第一次提交文件,初始化项目时
    两个命令

    • git config --global user.email “hubiyu@qq.com” //消息推送的通知邮箱

    • git config --global user.name “hubiyu” //设置使用者的名字

    • git config --system --unset credential.helper清除用户信息缓存,每次都需要输入密码

  10. 返回上一个版本:git reset --hard HEAD^

    • 首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
    • git log --pretty=oneline可以查看提交记录的日志,会显示每个版本的版本号id,git reset --hard 版本号id,只要知道版本号id,就可重置到任意版本,比如:git reset --hard c5aea218702d5afa335eadc1b1b5e5b99c1258a9,版本号id可以不写全,git会自动匹配
      在这里插入图片描述
  11. git reflog记录你的每一个git操作命令

  • 当你从最新版本回退到了某个版本,关掉了电脑,后悔了,想恢复到最新版本怎么办?找不到新版本的commit id怎么办?git reflog查看所有操作记录
    在这里插入图片描述
  1. cnpm i --配置node.js运行环境缺失的文件(node_modules)

  2. git checkout -- 文件名:撤销修改,如:git checkout -- readme.txt,这里有两种情况:

    • 一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态(修改前的状态);
    • 一种是文件已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
    • 如果修改的内容已经git add到暂存区了,还没有提交,而你又不想要这部分修改,命令git reset HEAD <fileName>可以把暂存区的修改撤销掉(unstage),重新放回工作区,git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
    • 总之,就是让这个文件回到最近一次git commit或git add时的状态,git checkout -- 文件名其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
    • git checkout -- file命令中的--很重要,没有--,就变成了切换到另一个分支的命令
  3. git checkout .这条命令把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子.

    • 注意:在使用 git checkout 时,如果其对应的文件被修改过,那么该修改会被覆盖掉。
  4. 拉取分支:git checkout -b 分支名(本地分支名) origin/分支名(远程仓库分支名) :分支名可以保持一致,如:git checkout -b master origin/master

  5. 删除文件:git rm <filename>,如:git rm test.txt,删除文件后git工作区会标红,是因为工作区删除了test.txt文件,而版本去还存在该文件,两个区域不同,则报红,执行git commit -m 'remove file'即可

远程仓库

  1. 由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置,本地仓库与远程仓库之间添加ssh key可参考GitHub ssh key 配置
  2. 关联本地仓库和远程仓库:$ git remote add 远程仓库的名字 远程仓库的地址,如:$ git remote add origin git@github.com:michaelliao/learngit.git,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的
  3. 删除与远程仓库的关联:git remote remove 远程仓库的名字
  4. 将本地仓库的内容推送到远程仓库:git push -u 远程仓库名 本地分支名,如:git push -u origin master;实际上是把当前分支master推送到远程。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令git push origin master
  5. git remote set-url origin git@github.com:michaelliao/learngit.git,直接将本地仓库关联的远程仓库路径切换到另一个模块michaelliao/learngit
  6. git remote prune origin,清理无用的远程分支(不会影响本地分支)
  7. git clone 远程仓库地址,从远程克隆一份项目到自己本地

分支管理

  1. 创建分支:git checkout -b 本地仓库分支名或者git switch -c 本地仓库分支名,如:git checkout -b devgit switch -c dev
  2. 创建分支并关联远程分支:git checkout -b 本地分支名 远程分支名,如:git checkout -b dev origin/dev,创建了本地分支dev并关联远程分支dev(远程仓库origin下的分支dev),本地和远程分支的名称最好一致
  3. 查看分支:git branch
    在这里插入图片描述
  4. 切换分支:git checkout 本地分支名git switch 本地分支名,如:git checkout mastergit switch master
  5. 合并分支:git merge 本地分支名,如:git merge dev,命令用于合并指定分支到当前分支
    • 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息,git merge --no-ff -m "commit message" 本地分支名,请注意–no-ff参数,表示禁用Fast forward,因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去。
  6. 删除分支:git branch -d 本地分支名,如git branch -d dev,强制删除:git branch -D 本地分支名,如:git branch -D dev
  7. git log --graph查看分支合并图
  8. git stash将当前工作现场储藏起来,等以后恢复继续工作
    • git stash list查看储藏列表
      在这里插入图片描述
    • git stash apply stash@{位置下标},如:git stash apply stash@{0}
    • git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;另一种方式是用git stash pop,恢复的同时把stash内容也删了,但不能恢复指定的stash
  9. git cheryy-pick 提交版本号可以讲指定的提交所做的修改复制到当前分支,如:git cherry-pick 336c5,在dev分支上修改bug提交,提交版本号为336c5,dev分支也是从master分出去的,即bug也存在于master分支,将修复dev上该bug的提交复制一份到master分支
  10. git remote查看远程仓库的信息,git -remote -v可以查看远程仓库详细的信息
    10.推送分支:git push 远程仓库名 本地分支名,如:git push origin master ,如果需要推送其他分支dev:git push origin dev
  11. 拉取代码:git pull,第一次抓取代码时,会有以下提示,原因是没有指定本地dev分支与远程origin/dev分支的链接

在这里插入图片描述
* git branch --set-upstream-to <branch-name> origin/<branch-name>,如: git branch --set-upstream-to=origin/dev dev,根据提示链接分支,再拉取代码:git pull
* git pull时提示git Auto packing the repository in background for optimum performance. See "git help gc" for manu...,是自己本地一些 “悬空对象”太多(git删除分支或者清空stash的时候,这些其实还没有真正删除,成为悬空对象,我们可以使用merge命令可以从中恢复一些文件),解决方法: 1. 输入命令:git fsck --lost-found,可以看到好多“dangling commit” ,2.清空他们:git gc --prune=now,完成

  1. 多人协作的工作模式通常是这样:
  • 首先,可以试图用git push origin <branch-name>推送自己的修改;
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
  • 如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>
  • 如果合并有冲突,则解决冲突,并在本地提交,冲突如下:
    在这里插入图片描述
  • 没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!

标签

  1. 查看所有标签:git tag
  2. 创建标签:git tag tagName,为当前分支上的最新一次提交版本打上标签,如:git tag v1.0
  3. 指定提交版本创建标签:git tag tagName 版本号,在当前分支指定的提交版本上打上标签,如:git tag v0.0 4f5e5aded587c22b9ed696c2ede0bd309a8cde32
  4. 展示标签信息:git show tagName,展示标签所标记的此次提交相关的所有信息,如:git show v1.0
  5. 带参数的创建标签:git tag -a tagName -m '标签说明' 版本号-a参数可以指定标签名,-m可以添加标签说明,如:git tag -a v2.0 -m '这是2.0版本' c5aea218702d5afa335eadc1b1b5e5b99c1258a9
  6. 删除标签:git tag -d <tagName>,删除本地所有tag:git tag -l | xargs git tag -d 或者 git tag -d $(git tag)
  7. 推送tag到远程仓库:git push 远程仓库名 tagName,如:git push origin v1.0
  8. 同时推送所有tag:git push 远程仓库名 tags,如:git push origin tags
    在这里插入图片描述
  9. 如果要删除远程仓库的tag:
    • 先删除本地的tag:git tag -d tagName
    • 删除远程仓库的tag:git push 远程仓库的名字 :refs/tags/tagName,如:git push origin :refs/tags/v0.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值