git常用命令

简介

git是一个版本管理工具,共有四个分区:工作区暂存区本地仓库(本地版本库)远程仓库(远程版本库)

官方文档

分区

  1. 工作区(Workspace)

    工作区(Workspace)即本地代码所在的目录,同时也是存放 .git/ (本地仓库)的目录。

  2. 暂存区(Index/Stage)

    暂存区(Index/Stage)是工作区和本地仓库的缓存空间,里面记录着即将提交给本地仓库(版本库)的文件修改信息,.git/ 目录里的index文件就是暂存区。

  3. 本地仓库(Repository)

    本地仓库(Repository)也称本地库或版本库,存放了本地的所有版本(commit提交记录),本地仓库的文件都在 .git/ 目录中。

  4. 远程仓库(Remote)

    远程仓库(Remote)在网络上,GitHub、Gitee和GitLab都能创建远程仓库,和本地仓库一样,远程仓库存放的也是不同的代码版本,只是这些版本可以来自多个本地仓库。

工作流程

请添加图片描述

常用命令

git clone

当我们有一个新项目,需要从远端拉取到本地开发时,就需要使用git clone命令。

$ git clone <版本库的网址>

如上图该命令将远程仓库代码拉取到本地仓库,会在本地生成一个与远程版本库同名的目录,如果要修改目录名称,可以指定目录名。

$ git clone <版本库的网址> <本地目录名>

如果需要拉取指定分支代码可以指定分支:

$ git clone -b <分支名> <版本库的网址>

git remote

查看远程主机名

$ git remote

使用-v选项,可以查看远程主机的网址。

$ git remote -v

git fetch

当远端有更新,我们需要拉取远端所有分支代码,但又不想更新本地分支时,就需要使用git fetch命令。

$ git fetch <远程主机名>

该命令将代码拉取到本地仓库,本地主机上要用"远程主机名/分支名"的形式读取,并不会对本地开发代码产生影响。

如果要取回指定分支的更新,可以指定第二个参数。

$ git fetch <远程主机名> <分支名>

git pull

当我们需要拉取远端某个分支的更新,并与本地指定分支进行合并,就需要使用git pull命令。他的完整写法如下:

$ git pull <远程主机名> <远程分支名>:<本地分支名>

该命令将取回远程主机远程分支,与本地分支合并,保存到工作区。

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

$ git pull <远程主机名> <远程分支名>

如果远端删除的分支本地也需要删除,可以将git pull命令加上参数-p.

$ git pull -p

git add

git add命令将文件添加到暂存区。

添加一个或多个文件:

$ git add [file1] [file2] ...

添加指定目录到暂存区,包括子目录:

$ git add [dir]

添加当前目录下的所有文件到暂存区:

$ git add .

git status

git status命令用于查看上次提交之后是否有对文件进行再次修改。

$ git status

git commit

git commit命令会将暂存区文件添加到本地仓库:

$ git commit -m [message]

如果想提交暂存区指定文件到本地仓库,可以执行如下命令:

$ git commit [file1] [file2] ... -m [message]

如果觉得使用git add提交太复杂,可以增加-a参数,跳过这一步,仅对修改和删除的文件有效,新增的文件还是需要使用git add

$ git commit -a

例如:

$ git commit -am 直接提交

git push

当我们要把本地仓库的代码推到远程仓库时,需要使用git push命令,他的完整格式如下:

$ git push <远程主机名> <本地分支名>:<远程分支名>

当本地分支与远端分支同名时,冒号后面可以省略:

$ git push <远程主机名> <本地分支名>

如果需要强制推送可以增加-f参数,例如:

$ git push -f origin test

git log

git log命令用于查看历史提交记录,输入q退出

$ git log

增加--oneline参数将展示简洁版

$ git log --oneline

git relog

git relog命令用于查看每一次命令,包括被回退的记录,输入q退出

$ git relog

git reset

当我们发现commit有错误,要回退代码到指定版本时,需要使用git reset命令,此命令也可以达到合并多个commit的目的。

$ git reset [--soft | --mixed | --hard] [HEAD]
参数说明
  1. git reset --soft

    仅仅移动当前 Head 指针,不会改变工作区暂存区的内容。

    即回退后修改内容还在,为已经add状态,也可以达到合并多个commit的目的。

  2. git reset --mixed

    此为默认方式,等同于git reset。仅仅移动 HEAD 指针,改变暂存区内容,但不会改变工作区内容。

    即回退后修改内容还在,为还未add状态,也可以达到合并多个commit的目的。

  3. git reset --hard

    当前 HEAD 指针、工作区暂存区内容全部改变。

    即回退后修改内容不在工作区暂存区记录全被删除。

HEAD说明
  • HEAD 表示当前版本
  • HEAD^ 上一个版本
  • HEAD^^ 上上一个版本
  • HEAD^^^ 上上上一个版本
  • 以此类推…

也可以用~数字表示

  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD~2 上上一个版本
  • HEAD~3 上上上一个版本
  • 以此类推…

也可以使用git log命令查看commitId,直接指定commitId

撤销回退

当我们发现回退错了节点,git log命令已经查看不到指定节点后的记录了,这时需要使用git relog命令查看commitId,再使用git reset命令回退到指定commitId

git revert

当我们需要撤销中间某一次提交,而不是撤销指定节点后的所有提交时,需要使用git revert命令。

在这里插入图片描述

如上图,如果我们想仅撤销commit_2这次提交,不影响commit_3commit_4,需要先查到commitId,然后进行撤销:

$ git revert commit_hash_2

然后进行提交,将生成一条新的commit,之前的记录还在。

当有多个commit需要撤销,连续的时候使用命令:

$ git revert -n commit_id_start..commit_id_end

不连续的时候使用:

$ git revert -n commit_id_1
$ git revert -n commit_id_3

如果要撤销的commit是一次merge commitmerge commit包含了两个 parent commit,此时需要增加-m参数,否则会报错。
在这里插入图片描述
如上图,我们当前在dev1分支,如果我们想仅撤销commit_3这次提交,他就是一次merge commit,需要执行如下命令:

$ git revert commit_id_3 -m 1

参数1的意思是保留主分支,即保留dev1分支

git branch

查看本地已存在分支

$ git branch

查看远程分支

$ git branch -r

查看所有分支(包括本地和远程分支)

$ git branch -a

创建本地分支,不会切换分支

$ git branch <分支名>

如果想创建之后切换分支需要使用:

$ git checkout -b <分支名>

分支重命名,如果新分支名已存在,需要使用-M会强制重命名,正常情况使用-m即可

$ git branch -m <旧分支名> <新分支名>

删除本地分支,使用-D会强制删除,正常情况使用-d即可

$ git branch -d <分支名>

删除远程分支时需要加上参数-r

$ git branch -d -r <分支名>

git checkout

切换本地分支

$ git checkout <分支名>

创建并切换本地分支

$ git checkout -b <分支名> 

放弃所有工作区修改

$ git checkout .

放弃所有工作区和暂存区修改

$ git checkout -f

git merge

当我们需要合并其他分支所有代码到当前分支时,需要使用git merge命令

$ git merge <分支名> 

merge commit 会包含两个commitId

git cherry-pick

git merge可以合并所有代码,但是如果我们仅需要合并其中部分提交,这时可以采用git cherry-pick命令

$ git cherry-pick <commitId>

如果commitId参数填的是分支名,则会将指定分支的最近一次提交,转移到当前分支。

例如有dev1和dev2两个分支:

    a - b - c - d   dev1
         \
           e - f - g dev2

现在dev1分支想合并f这次提交,需要切换分支到dev1分支,然后执行:

$ git cherry-pick f

合并后变成:

    a - b - c - d - f   dev1
         \
           e - f - g dev2

如果要一次合并多个commit,可以使用:

$ git cherry-pick <commitId_1> <commitId_2> ...

也可以是连续的commit:

$ git cherry-pick <commitId_start>..<commitId_end>

此命令不包含commitId_start,如果要包含,可以使用:

$ git cherry-pick <commitId_start> ..<commitId_end>
代码冲突

当过程中遇到代码冲突,git cherry-pick会停下来,让用户决定之后的操作。

  1. --continue

用户解决代码冲突后,第一步将修改的文件重新加入暂存区(git add .),第二步使用下面的命令,让 Cherry pick 过程继续执行。

$ git cherry-pick --continue
  1. --abort

发生代码冲突后,放弃合并,回到操作前的样子。

  1. --quit

发生代码冲突后,退出 Cherry pick,但是不回到操作前的样子。

git rebase

如果我们想要合并多次commit,让提交记录看起来很整洁,git rebase是一个很好的选择,但是如果是多人协作开发的项目,一定要谨慎使用,很可能会导致提交记录的丢失。

$ git rebase -i [HEAD]
HEAD说明
  • HEAD~0 表示当前版本
  • HEAD~1 上一个版本
  • HEAD~2 上上一个版本
  • HEAD~3 上上上一个版本
  • 以此类推…

也可以使用git log命令查看commitId,直接指定commitId

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python Git常用命令大全: Git是现代化的版本控制系统,常被用于软件开发,协作和管理。它允许在开发过程中创建和管理不同的版本,跟踪文件的更改,以及支持团队合作。Python则是一种广泛应用于开发Web应用程序以及数据科学和人工智能领域的高级编程语言。在使用Git时,Python的代码可以与Git进行集成。这里是Python Git常用命令的大全: 1. git init:初始化一个新的 Git 仓库。 2. git clone:从现有的 Git 仓库克隆项目,可以是本地仓库或远端仓库。 3. git add:将文件添加到 Git 仓库中。git add . 可以添加所有更改。 4. git commit:将所有已添加的文件提交到本地 Git 仓库中。 5. git status:查看当前工作目录中 Git 仓库的状态。 6. git log:查看提交记录。 7. git push:将本地 Git 仓库的更改推送到远端仓库。 8. git pull:将远端 Git 仓库的更改拉到本地仓库。 9. git branch:创建新的分支。 10. git checkout:切换分支。 11. git merge:将一个分支的更改合并到另一个分支。 12. git revert:撤销一个提交。 13. git rebase:将一个分支的修改合并到当前分支。 14. git config:配置 Git。 15. git remote:管理远端仓库。 这是Python Git常用命令的大部分命令,但这并不是全部。在使用Git和Python时,这些命令应该是最为重要的。无论是在个人项目中还是团队合作中,这些命令会让你更加高效地使用Git,并保护你的代码免遭不可挽回地灾难。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值