Git操作命令

郎家岭伯爵 2022年02月11日 593次浏览

Git本地

设置username和email

git commit 命令会记录提交者的信息,所以使用git前必须先添加两条信息。

$ git config --global user.name "你的GitHub登陆名"

$ git config --global user.email "你的GitHub注册邮箱" 

查看当前用户

1. 查看当前登录账号:
git config user.name

2. 查看当前登录邮箱:
git config user.email

Git远程仓库

本文以登录GitHub为例。

因为本地Git仓库和GitHub仓库之间的传输是通过SSH加密传输的,GitHub需要识别是否是你推送,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送,所以需要配置ssh key。

本地创建SSH Key

在用户主目录(默认位置为C:\Users\Administrator,如果当前Windows用户不是Administrator,那么此处对应为当前登录的Windows用户账号)下,看看有没有.ssh文件,如果有,再看文件下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接到下一步。如果没有,打开Git Bash,输入命令,创建SSH Key。

# 注意ssh与-keygen之间没有空格
ssh-keygen -t rsa -C "你自己注册GitHub的邮箱" 

GitHub创建SSH Key

GitHub,打开“Settings”–“SSH Keys”页面,找到“SSH and GPG keys”,然后点击“New SSH Key”,填上Title(可以任意填写名称),在Key文本框里粘贴id_rsa.pub文件里的全部内容,最后输入GitHub账号的密码进行确认即可。

id_rsa.pub 默认在C:\Users\Administrator.ssh。

每台想要登陆某个github账号的主机都需要有一个对应的key,例如你有一个github账号,你在你的笔记本和台式上都要创建key。

使用创建的SSH Key登录

git bash里输入下面的命令登录:

$ ssh -T git@github.com

如果看到 hi + 你的用户名说明密钥验证通过了,你已经可以上传下载了。

验证通过

本地仓库上传到GitHub

# 初始化git项目
git init

# 把所有文件加入版本管理
git add -A

# 提交到本地仓库
git commit -m "初始化项目"

# 添加远程仓库,git@github.com:liyuwei520/halo-comment.git为远程仓库地址
# 注意这里的远程仓库地址必须是自己GitHub里存在的仓库地址,否则是无法push的
git remote add origin git@github.com:liyuwei520/halo-comment.git

# 推送到远程仓库
git push -u origin master

fatal: remote origin already exists 错误解决办法

可能会遇到该报错,遇到执行该命令后继续执行上一小节的命令即可。

git remote rm origin

push指定文件

在开发过程中会遇到只需要把部分文件push到远程仓库,其它内容保存在本地即可。针对这种应用场景,我们可以如下操作:

# 查看有哪些文件内容做了修改
git status

# add指定的文件到缓冲区
git add filename1 filename2

# commit缓冲区的内容到本地库
git commit -m "更新部分内容"

# 上传本地库内容到远程分支
git push origin branchname

拉取代码

拉取master

# 拉取master分支
git clone https://github.com/LANGJIALINGBOJUE/hello-world.git

拉取指定分支

# 拉取指定分支
git clone -b branchName https://github.com/LANGJIALINGBOJUE/hello-world.git

分支管理

创建分支

# 克隆master
git clone https://github.com/LANGJIALINGBOJUE/hello-world.git

# 先在本地创建分支,并切换到该分支
git checkout -b branchName

# 在远程仓库创建分支。此时远程分支初始化内容与master分支是完全一样的。
git push --set-upstream origin branchName

# 或者简写为:
git push -u origin branchName

切换分支

git checkout branchname

注:

需要注意的是:如果不同的分支在本地位于同一个文件夹,那么切换分支对应的文件也会同时出现变化。例如mastertest0处于同处于d:/git/hello-world,那么切换分支后该文件夹也会显示不同的文件。

注:

git checkout -b branchname,此命令可以创建并直接切换到新分支。

合并分支

# 合并分支
git merge branchname

# 提交合并的内容
git push

合并分支是将指定的分支合并到当前分支,这点务必注意!

本案例是把test0分支合并到matser分支。为了便于观察效果,在test0分支中特意新建了一个test0.txt文件并push到了仓库:

更新分支

当我们需要把master或者其它分支合并到指定分支时:

# 切换到主分支
git checkout master

# 把主分支代码pull下来
git pull 

# 切换到指定分支
git checkout branchname

# 把主分支代码merge到指定分支
git merge master

# push指定分支。此时master与branchname分支的内容是完全一样的
git push origin branchname

删除分支

# 删除本地分支
git branch -d branchname

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

查看提交历史

# 查看历史提交记录
git log

或者

# 以列表形式查看指定文件的历史修改记录
git blame filename

Git标签

创建标签

如果达到一个重要的阶段,并希望永远记住那个特别的提交快照,那么就可以使用Git标签

git tag -a v1.1 -m "提交一个标签”

此时会打开一个编辑器写一个标签注解,编辑器的用法与Linux编辑器操作一致:

提交标签到远程仓库

git push --tags

查看所有标签

git tag

更新本地仓库

git fetch 是 Git 中用于从远程仓库下载最新代码到本地仓库的命令,但并不会自动合并代码到本地分支。

git fetch <remote>

其中,remote 是远程仓库的名称,比如 origin

执行 git fetch 命令后,Git 会将远程仓库中的最新代码下载到本地仓库中,但是并不会自动合并到当前分支中。如果想要将最新代码合并到本地分支中,需要使用 git merge 命令或者 git rebase 命令。

记录一个坑

Git账号问题

Git账号密码也可能保存在Windows凭据管理器中。如果保存在凭据管理器,那么无论在Git中怎么修改账号密码也是无济于事的。