基本配置

当安装Git后首先要做的事情是设置用户名称和emailt地址。这是非常重要的,因为每次Git提交都会使用该用户信息

设置用户信息

  • git config --global user.name "itcast"
  • git config --global user.email "hello@iteast.cn"

查看用户信息

  • git config --global user.name
  • git config --global user.email

获取本地仓库及其基础操作指令

  • 初始化仓库文件夹:git init

  • git status:查看的修改的状态(暂存区、工作区)

  • git add 单个文件名|通配符.:工作区->暂存区

  • git commit -m '注释内容':暂存区->本地仓库的当前分支

  • git commit -a -m "提交信息" :同时add 和 commit

  • git-log:查看提交日志(q退出查看)

  • git reset --hard [commitID] : 回退状态、丢弃上次提交未暂存、相对危险

  • git checkout [commitID]:回退状态、保留上次提交未暂存、相对安全
  • git branch:列出所有本地分支

  • git branch -a:列出所有远程分支

  • git branch <branch-name>:创建新本地分支

  • git branch -m <old-branch-name> <new-branch-name>:重命名分支

  • git branch -d <branch-name>:删除分支,不能删除当前分支

  • git checkout <branch-name>:切换到分支

  • git checkout -b <branch-name>:创建并切换到分支,并将当前目录更改提交到新分支

  • git switch <branch-name>:切换到分支

  • git switch -c <branch-name> :仅创建并切换到分支

  • git switch -d <branch-name>:删除分支

  • git switch -m <new-head> :不创建新提交的情况下移动当前分支。暂不确定

  • git merge 分支3:将分支3合并到当前分支上

配置SSH公钥

  • 生成SSH公钥:ssh-keygen -t rsa 不断回车; 如果公钥已经存在,则自动覆盖
  • 获取公钥:cat ~/.ssh/id_rsa.pub
  • 公钥获取后,将其添加到github仓库设置中,以获取推送权限
  • 验证是否配置成功: ssh-T:git@github.com

添加远程仓库

  • 命令:git remote add <远端名称> <仓库路径>
    • 远端名称,默认是origin,取决于远端服务器设置
    • 仓库路径,从远端服务器获取此URL
      image.png

查看远程仓库

  • git remote:查看远程仓库
    image.png
  • git remote -v :可查看仓库地址
    image.png

克隆clone

  • 命令: git clone <仓库路径> [本地目录]
    image.png

抓取fetch和拉取pull

  • 抓取 命令:git fetch [remote name] [branch name]
  • 抓取指令就是将仓库里的更新都抓取到本地仓库,不会合并到工作区
  • git diff 仓库名/分支名 查看抓取分支与本地分支的区别
  • git pull 仓库名 分支名 diff后没问题就可以pull
  • 拉取指令就是将远端仓库的修改拉到本地工作区,等同于fetch+merge
  • 如果不指定远端名称和分支名,则抓取所有并更新当前分支。

推送push

  1. git push [remote-name] [branch-name]
  • remote-name:远程仓库的名称,例如 origin
  • branch-name:要推送到远程仓库的分支,例如 master

如果不指定 branch-name,则默认推送到与当前本地分支同名的远程分支。

  1. git push -f [remote-name] [branch-name]
    强制推送,即使远程分支中有未取回的更改,可以使用 -f 标志,使用 -f 标志时要谨慎,因为它可能会覆盖远程仓库中其他人的更改。

  2. git push -u [remote-name] [branch-name]
    设置上游分支,可以在本地分支上使用 git pull git push 命令从远程仓库拉取更改,而无需指定远程仓库和分支名称。

标签tag

  1. git tag [tag-name] [commit-ish] : 创建标签
  • tag-name:标签的名称,例如 v1.0
  • commit-ish:要标记的提交的哈希值、标签或分支名称,例如 HEAD 或 master
    要创建标记 v1.0 并将其指向当前提交,可以使用以下命令:
    1
    git tag v1.0

要创建标记 v1.0 并将其指向 master 分支上的最新提交,可以使用以下命令:

1
git tag v1.0 master
  1. git tag: 列出所有标签

  2. git tag -d [tag-name] : 删除标签

  3. git tag -a [tag-name] [commit-ish] [-m "注释消息"] : 创建带有注释的标签

  4. git show [tag-name] : 打印标签信息

  5. git tag <remote-name> <branch-name> <tag-name>: 标签推送到仓库

查看当前仓库大小

1
git count-objects -vH

image.png

git全流程

  1. 初始化本地文件为git文件

    1
    git init
  2. 此时查看远程仓库,关联为空

    1
    git remote
  3. 将本地文件与远程仓库关联

    1
    2
    3
    git remote add [远端别名(ohmyboss)/origin] [仓库地址]

    origin是默认远程仓库名称,也可以取其他的

image.png

  1. 此时查看远程关联仓库

image.png

  1. 为了查看并显示仓库地址
1
git remote -v

image.png

  1. 此时还未必能够push或fetch,原因本地分支与仓库分支可能不一致,需要修改分支名
1
2
3
4
5
git branch --查看本地分支名 默认为 master 而远端仓库分支名 默认 main

git branch -m main --改变本地分支名为 main

git config --global init.defaultBranch main --将以后默认分支名改为main
  1. 接着需先将远程仓库同步到本地
1
2
3
git pull [remote name] [branch name]

如果本地分支没有与远程分支关联的跟踪信息。你需要指定要与本地分支合并的远程分支

image.png

  1. 搞定好,试着拉取一下仓库,发现还是需要输入账号密码?之前设置过SSH秘钥。

image.png

原因是之前设置的fetch和pull地址使用的是HTTP协议,而不是SSH协议地址。

image.png

需要修改为使用SSH协议地址

1
git remote set-url [远端别名(ohmyboss)] [SSH地址]

image.png

  1. 修改好以后,再次尝试拉取仓库,发现又出现问题

image.png

查看本地log 发现原因是本地仓库与远程仓库都有各自的commit ,不同的commit导致冲突。

1
git log --oneline

image.png

使用–rebase ,将本地commit 与远程commit合并,并且本地为最新commit。

1
git pull --rebase [远端名] [分支名] 

image.png

  1. 如何返回历史的commit
1
2
3
git checkout [commitID] --返回到某个commit

git checkout master --返回到最新提交
  1. 接下来对本地仓库进行修改后,需要进行add 和commit,另外commit信息里面可以后面 “#+数字” 关联相应issues
1
2
3
git add xxx.md 

git commit -m "提交信息"

image.png

  1. 提交完后,需要将修改push到远程仓库,发现不能直接git push,还是需要指定仓库别名+同步的分支名

image.png

1
git push ohmboss main

要想以后不带别名和分支名,则可以这样设置默认值

1
git push -u ohmboss main
  1. 不像push到远端仓库mian分支,想push到别的分支
1
2
3
git switch -c [新分支名] --本地创建新分支

git push ohmboss [新分支名] --推送到远程仓库型分支,并在自动远程仓库创建新的分支

image.png

  1. 远端仓库compare and proquest进入预请求界面,查看新分支对main的不同之处可以对新分支与main分支进行合并操作,并自动将新分支删除,那么本地就不需要新分支了,也可以进行删除
1
git branch -d [新分支名]

此时会有提示

image.png

是因为本地main分支与远程main分支commit数因为远端分支合并导致不同。所以需要先pull同步main分支

image.png

此时再删除新分支就可以了

image.png

  1. 创建pull request并审核代码修改

fork到自己仓库 ->git clone ->本地创建新分支 ->在新分支修改需要修改的地方->push ->进入自己仓库的compare and proquest预请求界面 -> 选择合并到源仓库的main分支 -> 源仓库可收到对应pull request请求