GIT学习-常用命令

2**

GIT学习-常用命令

**
在学习git前首先需要对相关名词和概念有基本了解,git基础知识学习可参考以下资料:

  1. git基础知识:GIT学习-(1)基础知识
  2. git下载与配置:GIT学习-(2)GIT下载与配置
  3. GitHub/Gitee/Gitlab的ssh公钥配置:GIT学习-(3)配置SSH公钥及新建远端仓库(创建版本库)
  4. git官方常用命令文档:git常用命令

1. GIT基础配置

# 配置用户名
git config --global user.name "用户名"

# 配置用户邮箱
git config --global user.email 用户邮箱

#查看系统config
git config --system --list

#查看当前用户(global)配置
git config --global --list

2. 配置SSH公钥

# -t rsa 加密方法
ssh-keygen -t rsa -C "email邮箱"

3. GIT基础命令

# 初始化目录
git init

# 查看所有文件状态
git status
# 查看指定文件状态
git status filename
ex:git status readme.txt

4.1 常用命令

4.1 添加代码到暂存区

# 将所有修改的代码添加到暂存区
git add .
# 将指定代码文件添加到暂存区
git add [filename]
ex: git add readme.md

# 强制添加文件到暂存区(一般是.gitignore忽略的文件)
git add -f <filename>

4.2 暂存区代码提交到本地仓库

# 将暂存区代码提交至本地仓库并注提交说明
git commit -m "note"
ex: git commit -m "first commit"

4.3取消暂存区文件

# 取消暂存区单个文件
git reset HEAD 

# 取消暂存取所有文件
git reset HEAD -- .

4.4 将本地仓库代码推送到远程

# 将本地仓库代码推送到远程仓库的不同分支
git push [remote] [remote-branch]

# 将本地仓库master分支推到origin远端仓库(远端仓库就有了matser分支)
git push origin master

# 由于远端仓库是空的,所以首次推送到远端要加-u
git push -u origin master
# 将本地仓库代码推送到名为origin远程仓库的dev分支
ex: git push origin dev
# 将本地的dev分支推送到远程仓库的dev-1分支
git push origin dev:dev-1

4.5 拉取远端代码

# 将远程仓库指定分支代码拉到本地工作区
git pull [remote] [remote-branch]

# 从origin远程仓库拉取master分支代码
ex: git pull origin master

5. 查看历史提交记录

# 查看提交历史
git lg

# 查看提交历史记录详细信息
git log

GIT学习-常用命令_第1张图片

# 查看每次提交的备注说明和版本号
git log --pretty=oneline

GIT学习-常用命令_第2张图片
每次提交版本号都是唯一,HEAD表示当前版本,当我们需要回退到某个版本的代码时就必须要知道版本号才能回退

# 查看命令历史
git reflog

GIT学习-常用命令_第3张图片

6. 版本回退

当前版本为HEAD,上版本为HEAD^,上上个版本为HEAD^^,上100个版本HEAD~100

# 回退到上一版本
git reset --hard HEAD^

# 回退到上上一个版本
git reset --hard HEAD^^

# 回退到指定版本
git reset --hard 版本号
ex: git reset --hard 1094a

7. 查看文件差异

# 查看工作区与版本库最新版本区别
git diff HEAD -- 文件名
ex: git diff HEAD -- readme.txt

GIT学习-常用命令_第4张图片

8. 撤销修改

修改的文件放到了缓存区和本地仓库,但是想撤销修改

# 撤销文件修改
git checkout -- 文件名
ex: git checkout -- readme.txt

撤销修改后的文件有两种情况:
(1)文件修改后还未放到缓存区,撤销修改后将回到与版本库一模一样的状态,也就是回退到上一次执行git commit命令后的文件
(2)文件修改后将文件已经git add到了缓存区,然后文件又做了修改,此时撤销修改文件将变成添加到暂存区后的状态,也就是回退到上一次执行git add命令后的文件

9. 删除文件

# 删除工作区文件
rm 文件名
ex:rm test.txt

# 删除提交到版本库(本地仓库)的文件
git rm 文件名
ex: git rm test.txt

如果删错了文件,可以使用撤销修改将误删的文件恢复,但只能将文件恢复到最新版

10. 远程仓库

10.1 查看远程仓库

查看远程仓库

# 查看远程仓库
git remote -v

在这里插入图片描述
查看远程仓库详细信息

# 查看远程仓库详细信息
git remote -v <remote-name>
ex: git remote -v origin

GIT学习-常用命令_第5张图片

10.2 关联远程仓库

远程仓库名通常用 origin 命名,URL就是在github/gitee克隆代码的地址
GIT学习-常用命令_第6张图片

# 关联远程仓库
git remote add 远程仓库名 URL
ex:git remote add origin [email protected]:michaelliao/learngit.git

10.3 删除远程仓库

删除远程仓库即解除本地与远程仓库的链接关系,远程仓库仍然存在,若想删除远程仓库则需要登录github/gitee

# 删除远程仓库
git remote rm 远程仓库名字
ex: git remote rm origin

10.4 重命名远程仓库

# 重命名远程仓库
git remote rename <old-remote-name> <new-remote-name>

11. 分支

11.1 创建分支

ps:注意要和前面的撤销修改文件命令区分开来

# 创建分支
git checkout 分支名
ex: git checkout dev

# 创建并切换到该分支
git checkout -b 分支名
git switch -c 分支名
ex: git checkout -b dev

# 切换到已有分支
git switch 分支名

11.2 查看分支

# 查看本地分支
git branch

# 查看远程分支
git branch -r

# 查看本地和远程分支
git branch -a

11.3 删除分支

# 删除本地分支
git branch -d 分支名	# -d会在删除前检查merge状态(其与上游分支或者与head)
git branch -D 分支名	# -D是git branch --delete --force的简写,它会直接删除,主要用于强制删除一个没有被合并的分支
ex:git branch -D dev

# 删除远程分支
git push <remote-name> --delete 分支名
ex:git push origin --delete dev

11.4 合并分支

Fast forward模式(快速合并模式)
通常,合并分支时,如果用Fast forward模式进行分支合并,在这种模式下,删除分支后,会丢掉分支信息。

# 合并分支到当前分支上
git merge 分支名
# 当前位于master分支,将dev分支内容合并到master分支
ex: git merge dev

强制禁用快速合并模式
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

git merge --no-ff -m "提交说明" 合并的分支名

# 强制禁用快速合并模式
# 将dev分支内容合并到当前master分支上,并提交commit说明
ex: git merge --no-ff -m "merge with no-ff" dev

11.5 管理分支

当在当前分支(dev)完成一半工作需要切到其他分支工作时,当前分支部分文件没有修改完,此时使用git status查看当前分支会发现有未被跟踪和修改的文件,此时输入git stash命令可以将当前分支临时封存起来,然后git status查看当前分支状态是干净的,可以发现之前未被跟踪和修改的文件被临时封存起来了,这时候切到其他分支工作不影响当前分支工作。
当切回该分支继续工作时,可以查看临时封存的版本号,并可以切换临时封存前的状态,但需要删除封存的stash内容

# 临时封存分支
git stash

# 查看封存文件记录,可以看到临时封存的版本号
git stash list

# 恢复到临时封存之前的状态
git stash apply

# 删除临时封存的stash内容
git stash drop

# 恢复并删除临时封存内容
git stash pop

11.6 修改分支

当前位于dev分支,master分支有个bug修改了,同样需要将dev分支上该处的bug进行修改,有两种方法:

  1. 直接将master分支merge到当前dev分支上。这样会存在一个问题,就是别人也在master分支合并了很多内容,当前dev分支相较于master分支落后了很多,而我只想修改当前dev分支存在那个bug的位置,这样就需要用到第二种方法;
  2. 修改bug单独切了一个分支issue(从master分支切出来),提交commit后版本号为4c805e2,然后将issue分支合并到master分支上;此时切回之前工作的dev分支,输入cherry-pick命令就能将issue分支内容合并到dev分支上
    cherry-pick命令使用场景可参考廖雪峰老师博客的说明,说的很清楚
    git cherry-pick命令使用
git cherry-pick 版本号
ex: git cherry-pick 4c805e2

12. 拉代码

当本地的dev分支需要拉远程仓库dev的代码时,使用git pull拉取代码失败报一下错误,需要将本地dev分支与远程仓库dev分支先建立链接,然后在git pull拉代码
GIT学习-常用命令_第7张图片

# 将本地分支与远程仓库对应分支建立链接
git branch --set-upstream-to <branch-name> origin/<branch-name>
git branch --set-upsteam-to=远程仓库名/远程仓库对应分支 本地分支
ex:git branch --set-upstream-to=origin/dev dev

13. 标签

13.1 创建标签

# 打标签
# 默认标签是打在最新提交的`commit`上的
git tag <tag name>
ex: git tag v1.0

# 对指定版本打标签
git tag <tag name> <commit>
ex: git tag v1.0 f52c

# 带有说明的标签
git tag -a <tag name> -m "标签说明" <commit>
ex: git tag -a v0.1 -m "version 0.1 released" 1094adb

13.2 查看标签

标签不是按时间顺序列出,而是按字母排序的

# 查看标签
git tag

# 查看标签具体信息
git show <tag name>
ex: git show v1.0

13.3 删除标签

# 删除标签
git tag -d <tag name>
ex: git tag -d v0.1

13.4 推送/删除标签

# 将标签推送到远程
git push <remote> <tag name>
ex: git push origin v1.0

# 将本地所有标签推送到远程
git push <remote> --tags
ex: git push origin --tags
# 删除本地标签
git tag -d <tag name>
ex: git tag -d v1.0

# 删除远程标签
git push <remote> :ref/tags/<tag name>
ex: git push origin :refs/tags/v0.9

14. 小技巧

改变版本号、提交说明、分支的颜色

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

使用git lg命令就能很清楚的区分
GIT学习-常用命令_第8张图片

你可能感兴趣的:(GIT,git,学习,github)