【GIT】Git常用命令学习

Git常用命令学习

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

仓库操作

  1. 初始化创建一个本地仓库

    git init
    
  2. 克隆远程仓库至本地

    git clone <远程仓库地址> [仓库名称]	#可以加上自定义仓库名称
    
  3. 配置仓库

    git config user.name <用户名>
    git config user.email <邮箱>
    

    等价于在.git/config文件中添加:

    [user]
    	name = zcongfly
    	email = [email protected]
    

    如果向对所有仓库进行全局配置

    git --global config user.name <用户名>
    git --global config user.email <邮箱>
    

    此时修改的则是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
    
  2. 添加工作区文件至暂存区中

    git add <文件名>/-A	# -A表示将工作区中的所有文件添加到暂存区中
    

    注意,这里的文件名支持用通配符,如*.txt可以代表所有以txt结尾的文件,其余涉及到文件名的参数通常都支持通配符。

  3. 将暂存区的文件移动回工作区

    git rm --cached <文件名>
    
  4. 将暂存区的文件提交至存储区

    git commit -m `<提交说明信息>`
    

    这里的-m表示message,指描述信息。

  5. 查看历史提交记录

    git log [--oneline] # 加上--oneline表示只用一行显示日志信息,此时会省略掉作者和日期
    
    commit 5b29c03e7def3e9f404d0572eef772ea7f3ce955
    Author:lihaibo <[email protected]> (HEAD -> master)
    Date:Wed Mar 29 10:35:31 2023 +0800
    	第二次新增文件
    
    commit bdb56b85f63449b1b&4f1b0bec5621b6126b140d
    Author:lihaibo <[email protected]>
    Date:Wed Mar 29 10:32:16 2023 +0800
    	第一次新增文件
    
    # 加上--oneline的输出结果
    5b29c03 (HEAD -> master) 第二次新增文件
    bdb56b8 第一次新增文件
    
  6. 误删除当前文件夹(工作区)中的文件,如果向找回误删除的文件,需要从存储区恢复误删除的文件到暂存区(只是删除了工作区中的文件,未影响到存储区的文件)

    git restore <文件名>
    

    注意,这种做法只有当执行删除操作尚未执行提交操作时,可以恢复误删除的文件,如果执行力提交操作则恢复不了。

  7. 退回上一版本

    如果误操作了文件并且已执行提交操作,可通过退回上一版本撤销操作

    git log --oneline	# 查看提交日志
    
    5b29c03 (HEAD -> master) 第二次新增文件
    bdb56b8 第一次新增文件
    
    git reset --hard bdb56b8
    
    HEAD is now at bdb56b8 第一次新增文件
    
    git log --oneline	# 查看提交日志
    
    bdb56b8 (HEAD -> master) 第一次新增文件
    
  8. 恢复版本

    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. 创建分支

    git branch <分支名称>
    

    注意,git中的分支时基于提交操作的,得先有提交操作再创建分支。

  2. 查看当前分支

    git branch -v
    
    * master af42a21 aaaa	# 前面有*的表示当前分支
      user   af42a21 aaaa
    
  3. 切换分支

    git checkout user
    
  4. 创建并切换分支

    git checkout -b order
    
  5. 删除分支

    git branch -d user
    
  6. 合并和冲突

    合并两个分支,需要先切换到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.
    

    此时,分支变为master|MERGING,表示正在合并,点开c.txt文件,可以看到两个同名文件的内容被整合到一个c.txt文件里并被标注了内容来源:

    <<<<<<< HEAD
    cccc	#原master分支中c.txt文件的内容
    =======
    3333	#原order分支中c.txt文件的内容
    >>>>>>> order
    

    将原有内容清空,替换成c.txt文件想要保留的内容,重新add和commit该文件:

    git add c.txt
    git commit -m cc33
    

    提交成功后,可以发现分支由master|MERGING变回了master

标签操作

  1. 添加标签(别名)

    git log命令可以查看所有历史版本的提交操作,git log <版本号>可以查看特定版本号的提交操作:

    git log
    
    commit e392852bb03f543d29fa5d302c8fe530c48ae599
    Author: zcongfly <[email protected]>
    Date:   Mon Jul 3 09:07:55 2023 +0800
    
        bbbb
    
    commit af42a2165d21d09be8e3c6b5d82fe586ac40444d
    Author: zcongfly <[email protected]>
    Date:   Mon Jul 3 09:00:29 2023 +0800
    
        aaaa
    
    git log af42a2165d21d09be8e3c6b5d82fe586ac40444d
    
    commit af42a2165d21d09be8e3c6b5d82fe586ac40444d
    Author: zcongfly <[email protected]>
    Date:   Mon Jul 3 09:00:29 2023 +0800
    
        aaaa
    

    但是,版本号太长了,不好记而且让人不明所以,因此可以给每一步提交操作产生的版本起一个别名,即打上一个标签,这样,便可以通过别名访问到特定的版本。

    git tag <标签名> <版本号>
    git log <标签名>	#等价于git log <版本号>
    
    git tag uptafile af42a2165d21d09be8e3c6b5d82fe586ac40444d
    git log --oneline
    
    e392852 bbbb
    af42a21 (tag: uptafile) aaaa
    
  2. 删除标签

    git tag -d <标签名>
    

    除了用于标记每一步提交操作产生的版本的别名外,标签还可以直接被拿来创建分支,意为“对每一步操作创建一个分支”。

    git checkout -b <要新建分支的名称> <标签名>
    
    git checkout -b abranch uptafile
    git log
    
    commit af42a2165d21d09be8e3c6b5d82fe586ac40444d (HEAD -> abranch, tag: uptafile)
    Author: zcongfly <[email protected]>
    Date:   Mon Jul 3 09:00:29 2023 +0800
    
        aaaa
    

远程仓库

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

[remote "origin"]
	url = [email protected]: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
    
  2. 关联本地仓库与远程仓库

    如果本地仓库没有与远程仓库建立关联,可以通过如下命令进行关联

    git remote add <要关联的远程仓库的名称> <远程仓库地址>
    
    git remote add origin [email protected]:zcongfly/git_test.git
    

    执行上面的命令后,.git/config文件中会被添加类似的配置信息。

  3. 删除本地仓库与远程仓库的关联

    git remote remove <远程仓库的名称>
    
  4. 重命名远程仓库的名称

    git remote rename <新的远程仓库的名称>
    
  5. 本地仓库的更新内容推送到远程仓库

    git push <远程仓库的名称或url>
    
  6. 拉取远程仓库的更新内容

    git pull <远程仓库的名称或url>
    

猜你喜欢

转载自blog.csdn.net/weixin_44624036/article/details/131511389