【GIT】Git常用命令学习

简介: 【GIT】Git常用命令学习

Git常用命令学习

说明:<>表示占位符的说明,[]表示可选,/表示“或”

仓库操作

  1. 初始化创建一个本地仓库
git init
  1. 克隆远程仓库至本地
git clone <远程仓库地址> [仓库名称] #可以加上自定义仓库名称
  1. 配置仓库
git config user.name <用户名>
git config user.email <邮箱>
  1. 等价于在.git/config文件中添加:
[user]
  name = zcongfly
  email = zcongflying@qq.com
  1. 如果向对所有仓库进行全局配置
git --global config user.name <用户名>
git --global config user.email <邮箱>
  1. 此时修改的则是C盘下的用户根目录的.gitconfig文件。

文件操作

  1. 查看文件暂存区状态
git status
# 1.当前文件夹(工作区)中没有任何文件
On branch master  #在master分支
No commits yet    #目前没有提交状态
nothing to commit (create/copy files and use "git add" to track)  #没有文件可供提交
# 2.当前文件夹(工作区)中有文件但是还没有添加进暂存区,会显示这样的信息
On branch master
No commits yet
Untracked files:  #存在一个未追踪文件a.txt
  (use "git add <file>..." to include in what will be committed)
        a.txt
nothing added to commit but untracked files present (use "git add" to track)  #没有文件被提交但是有一个未追踪的文件
# 3.当前文件夹(工作区)中有文件且已经被添加进暂存区中
On branch master
No commits yet
Changes to be committed:  #有文件可供提交至存储区
  (use "git rm --cached <file>..." to unstage)
        new file:   a.txt
        
# 4.当前文件夹(工作区)已执行过一次或以上的提交命令,目前没有文件
On branch master 
nothing to commit, working tree clean
  1. 添加工作区文件至暂存区中
git add <文件名>/-A  # -A表示将工作区中的所有文件添加到暂存区中
  1. 注意,这里的文件名支持用通配符,如*.txt可以代表所有以txt结尾的文件,其余涉及到文件名的参数通常都支持通配符。
  2. 将暂存区的文件移动回工作区
git rm --cached <文件名>
  1. 将暂存区的文件提交至存储区
git commit -m `<提交说明信息>`
  1. 这里的-m表示message,指描述信息。
  2. 查看历史提交记录
git log [--oneline] # 加上--oneline表示只用一行显示日志信息,此时会省略掉作者和日期
commit 5b29c03e7def3e9f404d0572eef772ea7f3ce955
Author:lihaibo <15811009164@163.com> (HEAD -> master)
Date:Wed Mar 29 10:35:31 2023 +0800
  第二次新增文件
commit bdb56b85f63449b1b&4f1b0bec5621b6126b140d
Author:lihaibo <15811009164@163.com>
Date:Wed Mar 29 10:32:16 2023 +0800
  第一次新增文件
# 加上--oneline的输出结果
5b29c03 (HEAD -> master) 第二次新增文件
bdb56b8 第一次新增文件
  1. 误删除当前文件夹(工作区)中的文件,如果向找回误删除的文件,需要从存储区恢复误删除的文件到暂存区(只是删除了工作区中的文件,未影响到存储区的文件)
git restore <文件名>
  1. 注意,这种做法只有当执行删除操作尚未执行提交操作时,可以恢复误删除的文件,如果执行力提交操作则恢复不了。
  2. 退回上一版本
    如果误操作了文件并且已执行提交操作,可通过退回上一版本撤销操作
git log --oneline # 查看提交日志
5b29c03 (HEAD -> master) 第二次新增文件
bdb56b8 第一次新增文件
git reset --hard bdb56b8
HEAD is now at bdb56b8 第一次新增文件
git log --oneline # 查看提交日志
bdb56b8 (HEAD -> master) 第一次新增文件
  1. 恢复版本
    reset操作退回了上一版本,但同时也丢弃了当前版本的操作记录。如果既希望能恢复误操作的文件,又希望保留当前版本的操作该如何操作?
git revert <版本号>  # 如果想退回bdb56b8版本但同时希望保留5b29c03版本,填5b29c03
[master 5b29c03] Revert "第二次新增文件"
1 file changed, O insertions(+), 0 deletions(-)
create mode 100644 a. txt
git log --oneline
d7583ak (HEAD -> master) Revert "第二次新增文件"
5b29c03 第二次新增文件
bdb56b8 第一次新增文件
  1. 实际上,恢复版本相当于重新执行了一次新的提交操作。

分支操作

  1. 创建分支
git branch <分支名称>
  1. 注意,git中的分支时基于提交操作的,得先有提交操作再创建分支。
  2. 查看当前分支
git branch -v
* master af42a21 aaaa # 前面有*的表示当前分支
  user   af42a21 aaaa
  1. 切换分支
git checkout user
  1. 创建并切换分支
git checkout -b order
  1. 删除分支
git branch -d user
  1. 合并和冲突
    合并两个分支,需要先切换到master分支,再把其他分支合并到master。当两个分支中存在同名文件时,会发生文件冲突,需要人工进行处理。

master分支有a.txt、c.txt两个文件,order分支有b.txt、c.txt两个文件,其中c.txt的文件内容不相同。

git checkout master
git merge order
Auto-merging c.txt
CONFLICT (add/add): Merge conflict in c.txt
Automatic merge failed; fix conflicts and then commit the result.
  1. 此时,分支变为master|MERGING,表示正在合并,点开c.txt文件,可以看到两个同名文件的内容被整合到一个c.txt文件里并被标注了内容来源:
<<<<<<< HEAD
cccc  #原master分支中c.txt文件的内容
=======
3333  #原order分支中c.txt文件的内容
>>>>>>> order
  1. 将原有内容清空,替换成c.txt文件想要保留的内容,重新add和commit该文件:
git add c.txt
git commit -m cc33
  1. 提交成功后,可以发现分支由master|MERGING变回了master

标签操作

  1. 添加标签(别名)
    git log命令可以查看所有历史版本的提交操作,git log <版本号>可以查看特定版本号的提交操作:
git log
commit e392852bb03f543d29fa5d302c8fe530c48ae599
Author: zcongfly <zcongflying@qq.com>
Date:   Mon Jul 3 09:07:55 2023 +0800
    bbbb
commit af42a2165d21d09be8e3c6b5d82fe586ac40444d
Author: zcongfly <zcongflying@qq.com>
Date:   Mon Jul 3 09:00:29 2023 +0800
    aaaa
git log af42a2165d21d09be8e3c6b5d82fe586ac40444d
commit af42a2165d21d09be8e3c6b5d82fe586ac40444d
Author: zcongfly <zcongflying@qq.com>
Date:   Mon Jul 3 09:00:29 2023 +0800
    aaaa
  1. 但是,版本号太长了,不好记而且让人不明所以,因此可以给每一步提交操作产生的版本起一个别名,即打上一个标签,这样,便可以通过别名访问到特定的版本。
git tag <标签名> <版本号>
git log <标签名> #等价于git log <版本号>
git tag uptafile af42a2165d21d09be8e3c6b5d82fe586ac40444d
git log --oneline
e392852 bbbb
af42a21 (tag: uptafile) aaaa
  1. 删除标签
git tag -d <标签名>
  1. 除了用于标记每一步提交操作产生的版本的别名外,标签还可以直接被拿来创建分支,意为“对每一步操作创建一个分支”。
git checkout -b <要新建分支的名称> <标签名>
git checkout -b abranch uptafile
git log
commit af42a2165d21d09be8e3c6b5d82fe586ac40444d (HEAD -> abranch, tag: uptafile)
Author: zcongfly <zcongflying@qq.com>
Date:   Mon Jul 3 09:00:29 2023 +0800
    aaaa

远程仓库

从GitHub或Gitee等远程仓库克隆到二八年底的仓库本身跟远程仓库就有关联,可以从.git/config文件中查看具体情况:

[remote "origin"]
  url = git@gitee.com:zcongfly/git_test.git
  fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
  remote = origin
  merge = refs/heads/master

使用过程中,可以使用名称origin代替urlurl为克隆时从远程仓库中拷贝下来的地址,可以是https地址、ssh地址或者其他地址。

  1. 查看本地仓库关联的远程仓库
git remote -v
  1. 关联本地仓库与远程仓库
    如果本地仓库没有与远程仓库建立关联,可以通过如下命令进行关联
git remote add <要关联的远程仓库的名称> <远程仓库地址>
git remote add origin git@gitee.com:zcongfly/git_test.git
  1. 执行上面的命令后,.git/config文件中会被添加类似的配置信息。
  2. 删除本地仓库与远程仓库的关联
git remote remove <远程仓库的名称>
  1. 重命名远程仓库的名称
git remote rename <新的远程仓库的名称>
  1. 本地仓库的更新内容推送到远程仓库
git push <远程仓库的名称或url>
  1. 拉取远程仓库的更新内容
git pull <远程仓库的名称或url>


目录
相关文章
|
2月前
|
Linux 开发工具 C语言
Linux的学习之路:7、yum与git
Linux的学习之路:7、yum与git
25 0
|
2月前
|
Shell 网络安全 开发工具
GIT常用命令
GIT常用命令
|
2天前
|
网络安全 开发工具 数据安全/隐私保护
git 常用命令【编程必备】
git 常用命令【编程必备】
7 0
|
1月前
|
存储 安全 项目管理
Git项目管理——Git常用命令汇总(五)
Git项目管理——Git常用命令汇总(五)
25 1
|
9天前
|
网络安全 开发工具 数据安全/隐私保护
git最全最常用的命令整理
git最全最常用的命令整理
14 0
|
9天前
|
开发工具 git
掌握Git必备:最常用的50个Git命令
掌握Git必备:最常用的50个Git命令
14 0
|
9天前
|
开发工具 git
git 的基本命令
git 的基本命令
|
12天前
|
人工智能 运维 中间件
一文了解Git(所有命令)附带图片
一文了解Git(所有命令)附带图片
14 0
|
20天前
|
存储 IDE 开发工具
Git 常用命令大全
Git 常用命令大全
31 0
|
2月前
|
网络安全 开发工具 git
版本管理 git 常用命令
版本管理 git 常用命令
33 1