git命令大全

 一些具体使用场景

1. 创建本地分支

// 1 创建dev分支
git branch dev

// 2 创建 dev 并且切换到 dev分支上
git checkout -b dev

2. 创建远程分支,(一般在本地创建分支,提交到远程)

git push -u origin dev  其实是 git push --set-upstream origin dev 的简写

git checkout -b dev        // 本地创建新的 dev 分支,并且切换到dev分支
git push -u origin dev     // 将本地分支 dev 推送到git仓库中

3. 提交代码的步骤

git status                // 查看本地修改状态
git add .                 // 将修改全部提交到本地(暂存区)
                          // 也可以单个文件提交 eg: git add src/pages/about.vue
git commit -m "message"   // 将暂存区代码注释并提交到(本地仓库)
git pull                  // 拉取git仓库最新改动,如果有冲突合并冲突,没有则继续下一步
git push                  // 将代码推送到到git仓库
                          // 或指明将代码推送到git的那个分支
                          eg: git push origin master   推到远程的master分支 

4. 合并分支,在dev分支开发完后,想要合并到master上发布

git checkout master        // 切换到aster分支
git pull origin master     // 拉取git仓库的改动(这步可省略: 防止git仓库有别人改动过)
git merge dev              // 将dev分支的代码合并到本分支(注意我现在在master分支上)
git push                   // 将合并过的代码推送到git仓库

5. 放弃本地所有修改

📢 注意: 但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。

git checkout .     // 放弃本地所有修改(内容修改与文件删除)

6. 缓存本地变更

因为在git管理中,如果本地有改动未提交时是无法切换分支的,如果特殊情况下 需要切换分支,可以使用以下

1.缓存本地变更

git stash

2.切换分支

git checkout dev_B

3.提取本地变更

git stash apply

以下是详细的命令解析

1. git branch相关

1.1 不带参数:列出本地所有的分支,当前分支的前面用"*"标记

git branch

1.2 查看远程所有的分支

git branch -r

1.3 查看所有分支列表,包括本地和远程

git branch -a

1.4 创建名为dev的本地分支,创建分支时需要是最新的环境,创建分支但依然停留在当前分支

git branch dev

1.5 删除本地名为dev的分支,如果在分支中有一些未merge的提交,会删除失败,可以用下面的强制删除

git branch -d dev

1.6 强制删除本地名为dev的分支

git branch -D dev

1.7 查看本地分支 对应的远程分支

git branch -vv

1.8 给分支重命名

git branch -m oldName newName

2. git checkout 相关

2.1 放弃单个文件的修改

git checkout filename

2.2 放弃当前目录下的所有修改

git checkout .

2.3 将本地分支切换到 dev

git checkout dev

2.4 如果分支存在 则只切换分支,若不存在则创建并切换到dev分支

git checkout -b dev

2.5 以远程refactor分支为基础创建本地的新分支changeNav

(1.创建一个本地的新分支changeNav,2.拉取远程的refactor分支给本地的changeNav)

git checkout -b changeNav origin/refactor

3. Git add相关

3.1 将某个文件添加到git的暂存区,这个命令是单独添加某个文件

git add [文件路径]

3.2 将本次所有 文件的修改,文件的新建,添加到暂存区。(保存新的添加和修改,注意不包括删除 )

git add .

3.3 (不常用)将本次所有 文件的修改、文件的删除,添加到暂存区。(保存修改和删除文件,但是不包括新建文件)

git add -u .

3.4 (不常用)将文件的修改,文件的删除,文件的新建,添加到暂存区。(保存所有修改)

git add -A .

4. Git commit相关

git commit 主要是将git暂存区里的改动给提交到本地的版本库。每次使用git commit 命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里.

4.1 将git暂存区里的改动提交到本地版本库,message 是本次提交的标注信息

 git commit -m "message"

4.2 将本次修改了 未添加在暂存区的文件 和 已提交到暂存区的文件,合并提交到本地版本库

相当分别执行了(git add . )和(git commit -m "message"),相当于是这两条的的合并写法

git commit -a -m "massage"

4.3 (不常用)追加提交

如果我们不小心提交了一版我们不满意的代码,并且给它推送到服务器了,在代码没被merge之前我们希望再修改一版满意的,而如果我们不想在服务器上abondon,那么我们怎么做呢?

git commit --amend 也叫追加提交,它可以在不增加一个新的commit-id的情况下将新修改的代码追加到前一次的commit-id中

git commit --amend

那么追加提交分两种情况,一是当前最后一次提交是想追加的那版,二是最近一版不是我们想追加的那版

  • 假如现在版本库里最近的一版正是我们想要追加进去的那版,此时是最简单的,直接修改工作区代码,然后git add,之后就可以直接进行git push到服务器,中间不需要进行其他的操作如git pull等
  • 如果现在版本库里最近的一版不是我们想要追加进去的那版,那么此时我们需要将版本库里的版本回退到我们想要追加的那一版,想要将版本回退到我们想要的哪一版有好几种方法
  1. 第一种即是我们从服务器上选取我们需要的版本,直接进行挑拣,在服务器的提交管理页面上右上方一般会有一个Download按钮,点击会弹出一个下拉框,选择其中的cherry-pick,复制命令

    然后在我们版本仓库对应的目录下运行这个命令,执行完后,使用git log -1 命令,可以查看到现在版本库里最近的一版变成了我们刚才挑拣的这版,此时再在工作区直接修改代码

    改完之后进行git add,再执行本git commit --amend命令,之后git push.
     
  2. 使用gitk或其他的图形界面化工具,在终端输入 gitk,回车,会弹出gitk的图形界面,在界面的左侧部分陈列着版本库中的一条条commit-id,此时选中我们需要的那一版,右键点击之后会弹出一个

    选择菜单,如果是在master  分支上,那么其中会有一项是 Reset master branch to here,点击这项,会弹出一个名为confirm reset的确认box,选择reset type 中的hard项,再点击OK

    关闭gitk图形界面,回到终端,运行git log -1命令,发现现在版本库里最近的一次提交已经是我们希望的那一版了,此时再在工作区直接修改代码,改完之后进行git add

    再执行本git commit --amend命令,之后git push
     
  3. 如果我们知道我们需要的版本与现在最近的版本中间隔着 n 个提交,那么我们可以直接使用git reset --hard HEAD~n命令,关于git reset 命令有详解,此时这个命令执行完后

    运行git log -1 命令我们会发现现在版本库里最近的一版就是我们需要的那版,此时再在工作区直接修改代码,改完之后进行git add,再执行本git commit --amend命令,之后git push.
     
  4. 如果我们不知道我们需要的版本与现在最近的版本中间隔着 n 个提交,那么我们可以使用git log来查看版本库中的commit-id,找到我们需要的commit-id后,在终端中执行git reset --hard commit-id

    时这个命令执行完后,运行git log -1 命令我们会发现现在版本库里最近的一版就是我们需要的那版,此时再在工作区直接修改代码,改完之后进行git add,再执行本git commit --amend命令,之后git push.
     

5. Git push相关

5.1 如果当前只有一个远程分支,可以用嘴省略的写法,可以使用git branch -r ,查看远程的分支名

git push

5.2 将本地提交推送到远程 master分支上, origin是主机名

git push origin master

5.3 (不常用)如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master

git push origin :refs/for/master 

5.4 (不常用)当遇到这种情况就是不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要 -all 选项

git push --all origin

5.5 (不常用)本次提交会强制覆盖掉远程master分支

git push的时候需要本地先git pull更新到跟服务器版本一致,如果本地版本库比远程服务器上的低,那么一般会提示你git pull更新,如果一定要提交,那么可以使用这个命令强制覆盖。

git push --force origin master

5.6 (非常不常用)git push 的时候不会推送分支,如果一定要推送标签的话那么可以使用这个命令

git push origin --tags

6. Git merge相关

6.1 在当前分支BranchA合并dev分支,dev是你想合并到BranchA的分支,用这个命令前需把当前分支先切换到BranchA

git merge dev

6.2 -m是加上合并时的描述性语句,如果出现冲突,那么先解决冲突,再将文件git add,git commit,之后再merge

git merge -m "message" dev

7. git rebase

不常用)使用git rebase改变分支依赖,假设有以下分支

        

而且feature-2不依赖于feature-1中的任何变化,就可以用rebase让它基于master。

git checkout feature-2

git rebase master

git rebase对所有涉及的commit("pick")执行默认操作,它只是将历史记录回滚到最后一个公共父节点,并重新生成两个分支的commit。git就会变成历史现在看起来像这样:

        

8. Git diff相关

8.1 对比工作区(未 git add)和暂存区(git add 之后)的代码改动

git diff

8.2 比较单个文件,工作区与暂存区的 改动

git diff filepath

eg: git diff src/components/online/CoursesContainer.vue

8.3 (不常用)对比暂存区(git add 之后)和版本库(git commit 之后)

git diff --cached filename

8.4 (不常用)对比工作区(未 git add)和版本库(git commit 之后)

git diff HEAD filename

8.5 (不常用)比较工作区(未 git add)与指定的 commit -id 的差异

 git diff commit-id  filename

8.6 (不常用)比较暂存区(git add 之后)与指定 commit-id 的差异

git diff --cached commit-id  filename

8.7 (不常用)比较两个 commit -id 的差异

git diff commit-id commit-id

9. git clone相关

9.1 克隆(拷贝)一个 Git 仓库到本地,本地创建的目录名称会与Git 仓库同名,remoteUrl是远程仓库地址

git clone remoteUrl

eg:git clone https://github.com/OneyJiang/resume.git

9.2 克隆(拷贝)一个 Git 仓库到本地,重新定义本地目录名称为loaclName,当然你可以叫其他名字,我只是举例子

git clone remoteUrl loaclName

9.3 克隆(拷贝)一个指定分支到本地,本地目录名称与分支同名,branchName为要克隆的分支名

 git clone -b branchName remoteUrl

9.4 克隆(拷贝)仓库 remoteUrl 中一个指定分支 branchName 到本地,重新定义本地目录名称为 localName

git clone -b branchName remoteUrl localName

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值