跳至主要內容

Git 的使用

zedo2022年1月27日git大约 5 分钟约 1408 字

Git 的使用

本文适用于 windows 系统。

安装

下载安装包,这里给出一些国内镜像:

下载 .exe 文件(例如 Git-2.37.1-64-bit.exe)后打开,按默认设置继续下去就可以了。

git 初始化

这里假设目前所使用的 git 仓库都是同一个账号(全局):

git config --global user.email "注册时的邮箱"
git config --global user.name "你的用户名"

可以通过以下指令查询配置是否成功:

git config --list

添加 ssh 公钥

ssh-keygen -t rsa -C "注册时的邮箱"

之后连续回车直至结束即可,结果类似以下内容:

$ ssh-keygen -t rsa -C "1962234583@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\Trezedo/.ssh/id_rsa):
Created directory 'C:\Users\Trezedo/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\Trezedo/.ssh/id_rsa.
Your public key has been saved in C:\Users\Trezedo/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:OPk4c769YNYRcDoyw3Z20HoVZRYKLc9/zKQ1s+brSMA 1962234583@qq.com
The key's randomart image is:
+---[RSA 3072]----+
|        o.o..o=. |
|     .   =o.o+   |
|      * =.o=.    |
|     . O.oo.o  oo|
|      + S..E . *+|
|       + . .. oo+|
|      + * .  .o. |
|       B o  . .. |
|        o.o. ..o.|
+----[SHA256]-----+

在生成 SSH Key 时,如果设置了 passphrase,使用 SSH 协议克隆远程仓库时,在每次 git pull 和 git push 时都会提示 Enter passphrase for key '/Users/Trezedo/.ssh/id_rsa',每次都要手动输入密码才能继续操作,可以在命令行输入 sh-keygen -p 进行重新设置,直接回车输入为空,就没有密码了。

接下来在码云上添加 SSH 公钥。右上角打开设置,

20220128193519.png

找到 SSH 公钥

20220128193543.png

粘贴 id_rsa.pub  中的内容到以上文本框,点击确定,输入密码即可。

在项目中添加 gitee 远程仓库地址

git remote add gitee git@gitee.com:zedo/zedo.git

git remote -v 查看远程库信息

删除已有的远程库地址:

git remote rm gitee

解决 git 每次都要输入用户名和密码问题open in new window

git 如何 add 全部而又忽略部分文件open in new window

git pull --rebase origin master

获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)

git 命令

列出分支

列出本地分支命令:

git branch

没有参数时,git branch 会列出你在本地的分支:

* master

此例的意思就是,我们有一个叫做 master 的分支,并且该分支是当前分支。

当执行 git init 的时候,默认情况下 git 就会为我们创建 master 分支。

列出远程源命令:

git remote

通常情况下,远程源的名称是 origin:

* origin

创建分支

如果我们要手动创建一个分支。执行以下命令即可:

git branch branch-name

其中 branch-name 是分支名。

$ git branch testing
$ git branch
* master
  testing

现在我们可以看到,有了一个新分支 testing

切换分支

如果要切换到我们要修改的分支,使用 checkout

git checkout branch-name

也可以使用以下命令来创建新分支并立即切换到该分支下:

git checkout -b branch-name

删除分支

删除分支的命令如下:

git branch -d branch-name

例如我们要删除 testing 分支:

$ git branch
* master
  testing
$ git branch -d testing
Deleted branch testing (was 2a35462).
$ git branch
* master

合并分支

将名为 branch-name 的分支合并到 master 分支:

# 先切换到主分支
git checkout master
git merge branch-name

重命名分支

本地分支

如果重命名当前分支:

git branch -m new_name

如果重命名任意本地分支:

# 将 old_name 分支重命名为 new_name
git branch -m old_name new_name

远程分支

注意:重命名的远程分支不能是默认分支,如要修改默认分支的名称,可以先设置其他分支为默认分支。

假设远程分支与本地分支的名称一致。

# 先重命名本地分支
git branch -m old_name new_name

# 删除远程分支
git push --delete origin old_name

# 上传到新分支
git push origin new_name

# 关联修改后的本地分支与远程分支
git branch --set-upstream-to origin/new_name

查看提交历史

git log 可以查看提交历史。

查看简洁版的记录可以使用:

git log --oneline

如果有多条提交,命令行终端不会完全展示,这时按回车键可以继续往下查看,按 Q 键可以退出。

回退到某个版本

git reset --hard HEAD^ # 回退到上一版
git reset --hard HEAD^^ # 回退到倒数第二版
git rest --hard dc3dc8b # 回退到 commit id 为 dc3dc8b 的版本

commit id 可以通过以下命令查看:

git log --oneline
git reflog

soft、mixed 和 hard 的区别:

放弃本地修改

全部使用远端代码的方法如下:

# 拉取所有更新,不同步
git fetch --all

# 本地代码同步远端最新版本(覆盖本地所有与远程仓库上同名的文件)
# git reset 指令把 HEAD 指向 master 最新版本
git reset --hard origin/master git pull

# 再更新一次(其实也可以不用,第二步命令做过了)
git pull

git 强制覆盖本地命令(单条执行)∶

git fetch --all && git reset --hard origin/master && git pull

.gitignore 规则open in new window

问题总结

fatal: refusing to merge unrelated historiesopen in new window

error: failed to push some refs to 'git@gitee.com:xxx/xxx.git'open in new window

2023-9-14 更新
重启 search-pro,css 样式调整