Git常用命令

Git常用命令

初始化本地仓库

git init

配置本地用户名&邮箱

git config user.name andremao

git config user.email andremao@126.com

Note:

  • 这个配置仅当前项目有效,且优先级高于全局配置
  • 推荐使用本地配置,因为实际开发中可能存在多个项目并且账号不同的情况

配置全局用户名&邮箱

git config --global user.name andremao

git config --global user.email andremao@126.com

Note: 这个配置所有项目有效,且优先级低于本地配置

查看远程配置

git remote -v

添加远程仓库

git remote add 远程仓库别名 远程仓库地址

Note: 远程仓库名一般约定俗成叫origin

删除远程仓库

git remote remove 远程仓库名

添加至缓存区

git add .

查看状态

git status

提交至本地仓库

git commit -m "提交注释",用于提交缓存区中的文件

git commit -am "提交注释",用于提交已追踪的文件(包括缓存区中的)

git commit --amend -m "修改的提交注释",用户修改上一次提交的注释

推送至远程仓库

git push -u origin master,第一次加-u选项将当前分支与远程仓库分支进行映射

git push,之后可以省略远程仓库名和分支名了

git push --force,强制推送(不安全)

git push --force-with-lease,强制推送(安全,当本地版本和远程版本不一致时,推送不会成功)

拉取

git pull

git pull origin xxx

移出缓存区

git reset path/to/xxx.file,重置某个文件(以最后一次提交状态为准),保留文件

git reset,重置当前命令行工作目录下的所有文件(以最后一次提交状态为准),保留文件

回退至某个提交版本

git reset commitId,保留文件

git reset --hard commitId,不保留文件

git reset origin/master,回退到远程仓库origin的master分支,保留文件

git reset --hard origin/master,回退到远程仓库origin的master分支,不保留文件

撤销未添加至缓存区的更改

git checkout path/to/xxx.file,撤销单个文件

git checkout .,撤销当前命令行工作目录所有文件

Note: 不能撤回未追踪的文件,未追踪意思就是从来没有提交过的文件

使用 git rebase 解决分叉

场景1:本地与远端同一分支提交历史不一致

现有 2 - 5 个版本,同事A修改了一些文件,提交了一个 6 版本,而在 push 时,发现 push rejected 了,原因是同事B在此之前也提交了一个版本,并推送到远程仓库了,目前同事A的本地仓库已经落后远程仓库的版本了,需要先执行 git pull --rebase ,如果没冲突,就可以直接push了,如果有冲突,需要先解决完冲突,然后git add .,再执行git rebase --continue(之前的 rebase 其实只完成了一半,由于出现冲突而终止)即可。

场景2:不同分支之间的合并

master 分支上现有 2 - 5 个版本,老板临时要求开发一个新功能,故基于 master 新创建了一个分支 feature,新功能开发完后,提交版本 6,切换到 master 分支上,拉取最新的代码,合并 feature 分支,结果失败了,原因是 master 分支已经有别人提交了新的版本,并且和 feature 分支中的文件有冲突,这时候,打开冲突的文件,解决,然后 add、commit,再查看 log,发现分叉了,如果不想看到分叉,可以使用 git rebase,具体步骤如下:

  • git reset --hard head^,回退到上一个版本
  • git checkout feature,切换到 feature 分支
  • git rebase master,以 master 为基础,将 feature 分支上的修改增加到 master 分支上,并生成新的版本,这里还是会失败,因为还是会有冲突,需要找到冲突的文件,解决
  • git add .,添加到缓存区
  • git rebase --continue,继续完成之前的 rebase 操作,之前的 rebase 其实只完成了一半,由于出现冲突而终止,现在冲突解决,需要继续完成
  • git log --oneline --graph,再来查看历史,这时候就是一条完美的直线
  • git checkout master,切换到 master 分支
  • git merge freture,合并 feature 分支
  • git log --oneline --graph,再来查看历史,也是一条完美的直线,到此分叉问题已解决

查看分支

git branch,查看本地分支

git branch -a,查看所有分支,包括远程仓库

查看分支与远程分支的映射状态

git branch -vv

创建分支

git branch xxx

git checkout -b xxx,创建并切换

切换分支

git checkout xxx

合并分支

git merge xxx

删除分支

git branch -d xxx,普通删除

git branch -D xxx,强制删除

Node:

  • 不能删除当前分支
  • 未被合并的分支只能使用强制删除

标签管理

git tag,查看标签列表

git tag name,创建标签

git tag name xxxx,指定版本id创建标签

git tag -a name -m "comment",指定提交信息创建标签

git tag -d name,删除标签,git push origin :name,同步删除远程仓库的标签

git push origin --delete tag name,同时删除本地和远程的标签

git push origin name,推送标签至远程仓库

git push origin --tags,一次性推送全部尚未推送到远程的本地标签

工作树

假设有个本地仓库目录:fe35,命令行所在目录也在:fe35

git worktree add ../fe35-wts/fe35-master master,添加一个工作树,会单纯的将master分支的代码检出到../fe35-wts/fe35-master文件夹中,然后就可以用VSCode新开个窗口打开这个文件夹进行开发,不影响其他分支

git worktree add ../fe35_wt_node_master -b node_master master,添加一个工作树,基于master创建一个新分支node_master,并作为工作树分支

git worktree list,查看工作树列表

git worktree prune,修剪工作树,可以将工作树文件夹直接删掉后再执行该命令,就可以同步git worktree list信息

查看日志

git log

git log --oneline,单行显示,信息简洁点

git log --graph,图形打印显示,可以显示分叉线路

git reflog,可以查看到已经被删除的 commit 记录

Note:

  • 如果记录过多,可能屏幕显示不满,可以按上下方向键移动,或按q键退出
  • --oneline--graph 可以一起使用

恢复误删的版本

比如提交了 1 - 5 个版本,不小心将 2 - 5 版本删除了,然后又提交了一个 6 版本,现在想要恢复被删除的 2 - 5 版本,用git reflog & git cherry-pick xxxxx,就可以轻松搞定

先使用 git reflog 查看被删除的版本id,然后使用 git reset --hard xxxx 回退到删除前的版本,那么就有 1 - 5 版本了,再使用 git cherry-pick xxxx 连接第 6 版本,那么就有最新的代码了

公钥私钥

ssh-keygen -t rsa -C andremao@126.com,生成

ssh -T git@gitee.com,检查配对状态

多公钥私钥配置

有时候我们需要连接不同的远程仓库,这个时候你可能需要在自己的电脑中配置多个公钥私钥文件

生成公钥私钥文件

执行命令:ssh-keygen -t rsa -C your@email.com
不出意外,你会看到:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/andremao/.ssh/id_rsa): 

这时,你重新命名公钥私钥文件名,如输入:xxx_id_rsa,然后一路回车
不出意外,你会看到:

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/andremao/.ssh/id_rsa): xxx_id_rsa(在这一步重命名)
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in xxx_id_rsa.
Your public key has been saved in xxx_id_rsa.pub.
The key fingerprint is:
SHA256:cjF13HwtC7y5TE48eZZBKke22cqjhscVDBsnU6BO6rA your@email.com
The key's randomart image is:
+---[RSA 2048]----+
|          B=*+. .|
|         o %+== o|
|        = o.B=.* |
|       + o +Oo=  |
|    . o S  ===   |
|     + o o o+.   |
|    E . . =      |
|         o       |
|                 |
+----[SHA256]-----+

并且,在用户根目录的.ssh文件夹下,会多出两个文件:

  • xxx_id_rsa
  • xxx_id_rsa.pub
配置

使用sudo ssh-add ~/.ssh/github_rsa(推荐)

or

在用户根目录的.ssh文件夹下,添加一个config文件
编辑config文件,如下:

# xxx
Host your.remote.host.com
    HostName your.remote.host.com
    IdentityFile ~/.ssh/xxx_id_rsa

# gitee
Host gitee.com
    HostName gitee.com
    IdentityFile ~/.ssh/gitee_id_rsa

# 配置文件参数
# Host Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
# HostName 要登录主机的主机名
# IdentityFile 对应的私钥文件
  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值