Git 进阶之路(2)-实用操作

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45505313/article/details/102633900

1.git config 配置信息

git 的设置文件为 .gitconfig,它可以在用户主目录下(全局配置),也可以在项目目录下(项目配置)

# 显示当前的Git配置
$ git config --list

# 编辑Git配置文件
$ git config -e [--global]

# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

另外因为要和远程服务器交互,pull 和 push代码,当新安装 git 的时候需要生成 ssh key作为交互凭证,其命令如下

# 该命令通常会生成 ~/.ssh 目录,其中后缀为 .pub 的文件即为公钥,需将其添加到远程服务器的 ssh key 中
$ ssh-keygen

2. git clean 清除工作区修改

该命令用于清理workspace中自己的改动(红色),比如代码被改乱了,想要清理掉所有修改重新开始

//清理所有workspace下的改动
git clean -f -d

//清理所有workspace下的改动,包含忽视的文件
git clean -f -d -x

//指定清理的路径,可以很方便的去掉指定的一个目录或多个文件的新改动
git clean -f -d <Path>

3. git format-patch 生成 patch 文件

该命令将commit存为特殊格式的patch文件,用git am可以再把这些patch拿进来,其通常的步骤如下

  1. 将最旧的 commit1 到 较新的 commit 2 之间的提交生成 patch 文件

    $ git format-patch commit1^..commit2
    
  2. 可以使用 git apply将patch打进分支,但不提交

    git apply xxx.patch
    
  3. 使用 git am 将patch打进分支,并直接提交,相当于一次性 cherry-pick 多个提交

    # 打入单笔提交
    git am xxx.patch
    
    #一次性打入多笔提交
    git am *.patch
    

4. git push 创建/删除远程分支

命令 功能
git push <远程主机> <本地分支或 HEAD>:<远程分支> 将本地代码推送到远程分支
git push origin master 将本地改动提交到 UPSTREAM REPOSITORY
git push [email protected]:username/project.git 将本地改动提交到指定的 UPSTREAM REPOSITORY
git push origin master -f 强制将本地改动提交到 UPSTREAM REPOSITORY,如果有冲突,会强制覆盖

分支推送顺序的写法是<来源地>:<目的地>,所以git pull是<远程分支>:<本地分支>,而git push是<本地分支>:<远程分支>。如果省略远程分支名,则表示将本地分支推送与之存在"追踪关系"的远程分支(通常两者同名),如果该远程分支不存在,则会被新建

  1. 使用以下命令可以创建本地新的dev分支,这个时候dev是一个本地分支,远程仓库不知道它的存在
    # 创建并切换到本地分支 dev
    git checkout -b dev
    
    # 以下命令可以删除本地分支
    git checkout master # 切换到master分支
    git branch -d dev # 删除本地dev分支
    
    # 查看所有分支,当前所在分支会被星号(*)标注
    git branch -a 
    
  2. 将 dev 分支发布到远程仓库,也就是同步dev分支的代码到远程服务器
    # 创建远程仓库 dev 分支
    git push origin dev
    
    # 删除远程仓库dev分支,注意origin后面的空格
    git push origin :dev 
    

5. git commit --amend 修改远程分支的历史提交

5.1 修改远程分支上一次提交

  1. 使用 git 的过程中,有时候我们会发现上一次开发某个功能或者修复某个 bug 的 commit 不够完整,也就是没有达到预期要求。这时候再修改代码,重新提一笔 commit 虽然能达到目的,但是也把 commit 的提交完整性破坏掉了。此时我们可以本地修改代码,然后使用以下命令来合并暂存的修改和上一次的提交,用新的 commit 替换上一个提交。缓存区没有文件时运行这个命令可以用来编辑上次提交的提交信息,而不会更改 commit 的内容
     //将本地修改使用 git add 添加到暂存区后,使用以下命令覆盖上一次提交
     git commit --amend
    
     //将新的提交 push 到远程分支,注意 -f 参数,没有会导致远程与本地的一次merge操作,产生冗余提交记录
     git push -f
    
  2. 修改上一次提交的作者信息
    git commit --amend --author="userName <userMail>"
    git push --force-with-lease origin master
    

5.2 修改远程分支的任意提交信息

使用git提交代码时可能会出现message写错的情况,而此时commit已经push到远程服务器,想要修改的话主要需用到以下几个命令。另外需注意,在修改历史commit message时,需确保当前分支是最新代码,且已经提交了所有本地修改

 git log
 git rebase -i HEAD~n # n指定距离最新提交的几笔提交
 git commit --amend
 git rebase --continue
 git push -f
  1. git log 查看历史记录
    $ git log
    

在这里插入图片描述

  1. git rebase -i HEAD~3确定要修改哪些commit
    其中 HEAD~3 表示最近的3个提交,本例中只涉及最近的3笔,并且修改第2笔提交,如下图
    $ git rebase -i HEAD~3
    

在这里插入图片描述

  1. 使用git commit --amendgit rebase --continue修改edit的commit
    上一步执行完成后 HEAD 指针就指向了第一个需要修改的 commit,此时可以使用以下命令来完成对 commit message 的修改
    # 进入vim 编辑模式,修改 commit message
    $ git commit --amend
    
    # 完成一个commit 的修改,HEAD 指向下一个需要修改的commit
    # 如果全部修改完毕,则提示 Successfully rebased and updated refs/heads/dev.
    $ git rebase --continue
    

在这里插入图片描述

  1. git log 查看提交的历史,git push -f 将修改强制更新到远程服务器
    $ git push -f
    

猜你喜欢

转载自blog.csdn.net/weixin_45505313/article/details/102633900