Git日常基本使用不完全指南

一.常用命令

  • git init 初始化一个本地仓库,会在当前文件夹下生成一个.git 文件包
  • git add ./<file> 提交本地内容到暂缓区,.表示全部提交,file表示提交的文件名
  • git commit -m"xxxx" 将暂缓区内容提交到本地仓库并进行备注
  • git status 查看本地内容状态
  • git reset --hard HEAD^ 本地回退到上一个版本
  • git reset --hard 版本号 本地回退到具体的版本
  • git log 查看提交的 commit 版本日志,但查看不到回退过的版本记录,即 commit 后回退了,该次 commit 记录查看不到
  • git reflog 查看所有的版本操作日志,方便查看每个操作步骤所在的版本,可以根据版本号自由前进后退
  • git checkout -- <file> 撤销在工作区的修改,回到和版本库一样的状态
  • git branch 分支名 创建分支
  • git branch 查看本地分支情况
  • git checkout 分支名 切换分支
  • git checkout -b 分支名 创建并切换分支
  • git merge 分支名 合并某分支到当前分支
  • git stash 把工作现成隐藏暂存起来
  • git stash pop 恢复隐藏暂存的内容
  • git remote add origin 远程仓库地址 将远程仓库和本地仓库进行关联
  • git remote -v 查看本地仓库对应的远程仓库
  • git clone 远程仓库地址 将远程仓库内容克隆到本地
  • git pull
  • git push origin 分支名 将本地分支推送到远程,远程仓库就创建了该分支
  • git checkout -b dev origin/dev 将远程 dev 分支拉取到本地,并在本地创建 dev 分支和远程 dev 分支进行关联
  • git branch -vv 查看本地分支和远程分支的关联关系
  • git checkout --track origin/dev 将远程分支关联到本地并创建同名分支,并自动追踪远程同名分支
  • git merge --abort 取消合并代码

二.从零开始搭建项目仓库

在项目开发中,为了代码安全和方便多人协作开发,我们通常会使用代码托管工具对代码进行管理。在这里我们使用 Github 作为远程代码共享库。下面我们就从零开始搭建一个远程仓库,并和本地 GIT 仓库进行关联。具体步骤如下:

1. 创建 SSH Key

因为本地的 Git 仓库和远程 Github 仓库之间是通过 SSH 加密进行传输的,因此需要先设置 SSH Key。
设置 SSH Key 步骤:

  • 1.1 在 C 盘用户(USER)目录下找到.ssh文件夹,查看是否有id_rsaid_rsa.pub这两个文件;
  • 1.2 如果没有,执行ssh-keygen -t rsa -C "xxxxx@qq.com" 一路回车生成公钥和私钥文件,id_rsa是私钥,id_rsa.pub是公钥;

2. 登录 Github,设置 SSH Key

  • 2.1 登录 GIthub,以此选择Setting - SSH and GPG keys, 然后选New SSH key按钮
  • 2.2 填写任意 title(尽量有意义),将第一步生成文件id_rsa.pub中的内容复制进 Key 中,添加即可。

3. 在 Github 中创建一个远程仓库

在 Github 右上角找到+号,选择new repository,填写相关信息后创建仓库,至此,远程仓库就创建完毕了。

4. 将远程仓库和本地仓库进行关联,并将本地代码推送到远程仓库

将远程仓库和本地仓库进行关联分两种情况:
4.1 本地仓库还未创建
此时,只需要在本地项目文件夹中使用git clone 远程仓库项目地址 将远程仓库克隆到本地,因为此时远程仓库时空的,克隆下拉只有一个.git文件夹.这样就把本地仓库和远程仓库进行关联了,就可以在本地写项目代码。
4.2 本地仓库已创建

  • 001 初始化本地仓库
    git init
  • 002 将本地仓库和远程仓库进行关联
    git remote add origin 远程仓库项目地址
  • 003 将本地代码添加到暂缓区
    git add .
  • 004 将暂缓区代码上传到本地仓库
    git commit -m"xxxxx"
  • 005 将本地仓库代码推送到远程仓库
    git push -u origin master

    使用git push -u origin master 就可以将本地仓库推送到远程仓库,注意因为初始状态时远程仓库时空的,加上-u, git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令.

注意:通常执行 005 后会报错,因为本地分支版本低于远程,因此需要更新。需要执行:git pull --rebase origin master ,然后再执行 005 就成功了。

三.场景处理

1、在当前版本更新了内容,需要放弃文件修改

① 未 add 到暂缓区之前

  • 放弃部分文件修改
      git checkout -- 文件名
    
  • 放弃全部文件修改
      git checkout .
    
    ps: 在切换分支的时候如果遇到切换到新分支后很多文件被修改,可以使用该方法放弃修改。

② 已经 add 到了暂缓区

  • 放弃部分文件修改
      git reset HEAD 文件名
    
  • 放弃全部文件修改
      git reset HEAD .
    
    ③ 已经 commit 到了暂缓区
  • 回退版本
      git reset --hard HEAD^  // 连add也一起撤销
      git reset --soft HEAD^  // 只撤销commit,不撤销add
    
  • 本地回退后强制更新远程
  git push -f origin xxx

2、在当前工作的分支上正在工作,但工作没做完无法提交,突然后紧急 bug 需要修复,该如何处理

  • 情景描述:

    因为是紧急任务,而当前分支的工作也短时间内无法完成,因此无法在当前分支进行处理,需要重开新的分支单独处理 bug 问题。

  • 解决办法:

    使用git stash命令先将当前任务暂存起来,然后当然分支就是干净了,就可以切换新的分支,当把新的分支 bug 修复完提交以后,就可以切换回这个分支,在使用git stash pop命令将暂存内容恢复,然后继续处理当前任务。

3、新建dev分支,将master代码拷贝到dev分支,在dev分支进行开发。具体步骤如下:

1)、新建本地dev分支并切换至dev分支

git checkout -b dev

2)、将本地master代码合并到dev分支

git merge master

3)、将本地dev分支推送到远程,并在远程创建dev分支

git push origin dev

此时,远程dev分支创建成功,代码也同步成功。

4、删除分支

  • 删除本地dev分支
git branch -d dev
  • 删除远程dev分支
git push origin --delete dev 或 git push origin -d dev
  • 删除全部远程已经删除过的本地分支
git remote prune origin

5、本地其他开发者远程拉取dev分支,并切换至dev分支

1)、 将远程分支信息拉取到本地

git fetch
  • 如果远程仓库没有的分支,但是本地remotes中看到还有,可以使用如下命令清除:
 git remote prune origin
  • 如果远程仓库存在的dev分支,git fetch之后在remotes中可以看到,本地没有,可以使用如下命令同步:
git checkout -b dev origin/dev

2)、查看远程所有分支信息

git branch -a

3)、切换分支

git checkout dev

6、已提交至远程的代码发现有问题需要回退到上一个版本

1)、本地回退

git reset --hard HEAD^

2)、推送远程

git push -f

7、版本上线前打 tag

1)、新建 tag
切换至对应的上线分支:

git tag -a web_1.4.0.20201127_beta -m"更新需求"

2)、推送 tag 至远程仓库

git push origin web_1.4.0.20201127_beta

3)、查看所有 tag

git tag --list

4)、删除 tag

// 删除本地
git tag -d web_1.4.0.20201127_beta
// 删除远程
git push origin :refs/tags/web_1.4.0.20201127_beta

5)、解决tag推送报错
在用repo管理代码时遇到了error: src refspec XXX matches more than one 这样的错误,一个是在 删除一个远程的tag时遇到的,
一个是在将一个tag push到服务器时遇到的,两个错误的提示是完全一样的。遇到这样的问题该怎么解决,经过研究后找到了
解决的方法,下面就将解决的方法和大家分享!
第一种情况,删除远程branch时遇到这种情况的解决方法:
比如删除服务器上的testtag 这个tag时,输入如下命令

git push origin :testtag

提示 `error: src refspec XXX matches more than one
error: failed to push some refs to 'git@xxx:android/text.git'
出现这个错误的原因是在服务器上有个tag的分支是testtag这个名 有个branch的分支也是这个名,
也就是说tag分支和branch分支同名了,在执行 git push origin :testtag这个命令时不知道是删除那个
所以会提示错误。解决办法:

git push origin :refs/tags/testtag

这就是明确告诉服务器删除的tag的分支,
删除branch分支

git push origin :refs/heads/testtag

第二种情况,将一个tag分支push到服务器时遇到这种情况的解决方法:
还那testtag这个tag分支为例,将tag分支push到服务器

git push origin testtag

提示: `error: src refspec XXX matches more than one
error: failed to push some refs to 'git@xxx:android/text.git'
出现这个错误主要是因为本地也有个branch的分支名为testtag,这样在push时不知道是将branch的分支push到
服务器还是将tag的分支push到服务器,如果是将tag分支push到服务器,那就将branch的分支删掉,如果是将
branch的分支push到服务器就将tag的分支删掉。
删除branch分支的方法:
git branch -D testtag
删除tag分支的方法:
git tag -d testtag

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 14,657评论 9 163
  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 9,388评论 3 27
  • (预警:因为详细,所以行文有些长,新手边看边操作效果出乎你的预料) 一:Git是什么? Git是目前世界上最先进的...
    axiaochao阅读 5,933评论 1 8
  • 原文地址主要用到的命令: git config user.name 设置用户名 git config user....
    AFinalStone阅读 3,375评论 0 2
  • 转载自:http://www.open-open.com/lib/view/open1414396787325.h...
    Bbooo阅读 3,375评论 0 3

友情链接更多精彩内容