本文记录了一些常用 Git 命令行操作的具体使用方式

git clone

  • git clone REPOSITORY_URL

    拉取仓库,并使用仓库名作为本地文件名

  • git clone REPOSITORY_URL FOLDER

    拉取仓库,并使用 FOLDER 作为本地文件名

git fetch

  • git fetch origin

    更新所有远程分支

  • git fetch origin BRACH

    更新指定远程分支

git pull

  • git pull origin

    相当于 fetch + merge 对应的上游分支

  • git pull origin BRACH

    拉取指定分支到当前分支

  • git pull origin --rebase master

    让本地分支重新基于远端的 master 分支

git push

  • git push origin

    把分支推到远端对应的上游分支

  • git push origin BRANCH

    把分支推到远端对应的分支

  • git push --set-upstream origin BRANCH

    把分支推到远端对应的分支,并将其设为上游分支(一般第一次提交自己的开发分支需要用到)

  • git push -f origin

    把分支强推到远端对应的上游分支(会覆盖远端分支,需要慎用)

  • git push origin -d BRANCH

    删除远程分支

git branch

  • git branch

    列出本地所有分支

  • git branch -a

    列出本地和远程分支

  • git branch -m NEW_BRANCH

    更新当前分支名

  • git branch -d BRANCH

    删除已合并的分支

  • git branch -D BRANCH

    强制删除分支(即使未合并)

git checkout

  • git checkout BRANCH

    切到对应分支

  • git checkout -b NEW_BRANCH

    创建新分支

  • git checkout -b NEW_BRANCH BRANCH

    基于 BRANCH 创建新分支

  • git checkout SHA-1

    切换到某个提交,也可以用 HEAD~N(N 为 1, 2, 3…)切到上 N 个提交

  • git checkout SHA-1 /PATH/TO/FILE

    把文件还原到相应的提交版本

  • git checkout —-theirs /PATH/TO/FILE

    有冲突时使用对方的文件版本

  • git checkout --ours /PATH/TO/FILE

    有冲突时使用自己的文件版本

  • git checkout -

    切换到之前的分支,适合在两个分支频繁切换时使用

git add

  • git add .

    把所有增加/修改/删除的文件标识为要提交

  • git add /PATH/TO/FILE

    只把单一文件标识为要提交,当有其他不需要提交的文件被修改时可使用

git commit

  • git commit

    git add 标识的文件进行提交

  • git commit -a

    把修改/删除的文件进行提交(如果有新增的文件,需要使用 git add 添加)

  • git commit -am "MESSAGE"

    把修改/删除的文件进行提交并指定注释(适用于临时或简单注释内容)

  • git commit --amend

    更新上一次提交,可以加上 -a 或在之前运行 git add 追加更新文件

  • git commit --amend --reset-author

    默认的更新提交是不改变作者的,如果需要改变可以明确配置

git cherry-pick

  • git cherry-pick SHA-1

    把某个提交应用到当前分支

git status

  • git status

    查看目前状态

git diff

  • git diff

    当前所有修改到的,没被标识为要提交的文件的更新内容

  • git diff --cache

    当前所有修改到的,并被标识为要提交的文件的更新内容

  • git diff /PATH/TO/FILE

    指定文件的更新内容,同样可以用 --cache 区分

git log

  • git log

    详细显示所有记录

  • git log -n 10

    显示最近 10 条记录

  • git log --oneline

    简要显示所有记录

  • git log --oneline master ^BRANCH | wc -l

    可以计算 BRANCH 和 master 分支相差多少个提交

git stash

  • git stash

    暂存修改/删除,或已标识为要 commit 的新增的文件

  • git stash -u

    暂存修改/删除/新增的文件,即新增文件可以不用 git add

  • git stash pop

    把暂存的文件重新放出来

git revert

  • git revert SHA-1

    通过形成一个新提交取消某个提交

  • git revert SHA-1 -m 1

    如果是合并节点,需要指定要取消提交对应的父节点

    例如合并是把 BRANCH_2 合并到 BRANCH_1,那么要在 BRANCH_1 取消这次合并,就应该指定 m 为 1(大多数情况都是这样)

git reset

  • git reset

    取消对要 commit 的文件的标识(相当于 git add 的撤销)

  • git reset --hard

    取消修改/删除或已标识为要 commit 的新增的文件的更新

  • git reset SHA-1

    取消从 SHA-1 之后的所有提交,但是保留提交文件的更新

    如果只想取消上一次提交,SHA-1 可以设为 HEAD^

  • git reset --hard SHA-1

    取消从 SHA-1 之后的所有提交,而且不保留提交文件的更新

git rebase

  • git rebase BRANCH

    让当前分支重新基于 BRANCH

  • git rebase -i SHA-1

    更新 SHA-1 以后的提交,可以 pick/pedit/edrop/dsquash/s 相应提交

    如果第一个提交使用 p,后面的提交使用 s,可以把多个提交合并成一个提交

git merge

  • git merge BRANCH

    把 BRANCH 合并到当前分支,尽量不形成合并节点

  • git merge --no-ff BRANCH

    把 BRANCH 合并到当前分支,并确保形成合并节点

  • git merge --squash BRANCH

    把 BRANCH 和当前分支的变更作为标识为要提交的内容,需要运行 git commit 完成只有一个提交的合并

git update-index

  • git update-index --assume-unchanged /PATH/TO/FILE

    当某个文件被临时修改,但不想提交,也不适合放到 .gitignore,可以用此命令让 git 不将其识别为已修改

    如果这个文件是新增的,就不能用这个命令了,不过可以把文件路径加到 .git/info/exclude

  • git update-index --no-assume-unchanged /PATH/TO/FILE

    恢复以上文件的修改识别

常用 Git 命令行操作的更多相关文章

  1. windows下使用TortoiseGit代替Git命令行操作

    windows下使用TortoiseGit代替Git命令行操作 大家在使用svn的时候,都非常喜欢使用小乌龟,也就是TortoiseSVN:那么git也有小乌龟版本,即TortoiseGit. 1.安 ...

  2. 3.Git 命令行操作

    1.Git 命令行操作(本地库操作): 1.1. 创建本地库(本地库初始化): 第一步:首先在D盘建了个名为git空文件夹,命令行中cd到这个文件夹: 第二步:通过git init命令把这个目录变成G ...

  3. git 命令行操作(之前整理在有道的笔记)

    1. 常用命令 切换分支 git checkout [branch_name] 检出分支 git clone [git_URL] 更新分支 git pull origin [branch_name] ...

  4. GIT → 05:Git命令行操作

    5.1 打开命令行窗口 安装Git后,在资源管理器的空白处,单击鼠标右键打开窗口,点击 Git Bash Here ,打开Git命令行窗口,在窗口中可直接使用Linux命令操作: 5.2 初始化Git ...

  5. git 命令行操作

    Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目 这里说一下在命令行对git进行操作 git init [在本地初始化一个git库] //当你的git服务器里面已经有文 ...

  6. git命令行操作

    从本地上传代码到仓库(假设已经建好仓库): 1.初始化: git init 2.将所有文件加入缓存区: git add * 3.提交当前工作空间的修改内容: git commit -m 'commit ...

  7. [Git] 1、常用Git命令行总结(一)

    一.GIT CLONE最常用的有如下几个 1.最简单直接的命令:git clone xxx.git 2.如果想clone到指定目录:git clone xxx.git “指定目录” 3.clone时创 ...

  8. git命令行操作详解

    目录 1.常用操作 1.1 新建代码库 1.2 配置 1.3 remote管理 1.4 添加和撤销操作 1.5 代码提交 1.6 分支操作 1.7 查看信息 1.8 pull操作 1.9 push操作 ...

  9. Git命令行操作(三)

    1. 本地库初始化 进入指定目录,如:D:\gitSpace\OA 右键-->Git Bash Here,执行命令: git init 效果如下: #查看.git目录 ls -la # 进入.g ...

  10. 3. git命令行操作之远程库操作

    3.1 基本操作 注册GitHub账号 在本地创建一个本地库并初始化 登录到gitHub创建一个远程库 注意:windows的凭据管理器中会保存github登录信息.如果要切换登录者,先删除相应凭据 ...

随机推荐

  1. PHP全栈开发(五):PHP学习(1.基础语法)

    PHP脚本在服务器上执行,然后将纯HTML的结果返回给浏览器. 听上去很厉害的样子,所以说PHP是服务器端的语言啦.HTML才是前端啦. PHP文件的默认文件扩展名是".php" ...

  2. POJ3237 Tree (树链剖分)

    通过打懒标记实现区间取反,和线段树基本操作都差不多. 本题还是一道边权化为点权的问题. 200行巨长代码: 1 #include<cstdio> 2 #include<cstring ...

  3. 洛谷P2627 [USACO11OPEN]Mowing the Lawn G (单调队列优化DP)

    一道单调队列优化DP的入门题. f[i]表示到第i头牛时获得的最大效率. 状态转移方程:f[i]=max(f[j-1]-sum[j])+sum[i] ,i-k<=j<=i.j的意义表示断点 ...

  4. 洛谷P2863 [USACO06JAN]The Cow Prom S (tarjan)

    题目简述:一个有向图,求出这个图点数>1的强连通分量的个数. 那么就是tarjan求强联通分量的模板了. 记得要用一个数组标记节点是否在栈中. 1 #include<bits/stdc++ ...

  5. 微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍

    微服务架构学习与思考(10):微服务网关和开源 API 网关01-以 Nginx 为基础的 API 网关详细介绍 一.为什么会有 API Gateway 网关 随着微服务架构的流行,很多公司把原有的单 ...

  6. KNN算法之集美大学

     在本篇文章中,我即将以在集美大学收集到的一些数据集为基础,使用KNN算法进行一系列的操作 一.KNN算法 首先,什么是KNN算法呢,这得用到老祖宗说的一句话"近朱者赤近墨者黑", ...

  7. Codeforces Round #820 (Div. 3) A-G

    比赛链接 A 题解 知识点:模拟 时间复杂度 \(O(1)\) 空间复杂度 \(O(1)\) 代码 #include <bits/stdc++.h> #define ll long lon ...

  8. SQL server 操作相关

    1.更改列的顺序后进行保存. 在SQL Server Management Studio中, "工具"--"选项"--"Designers" ...

  9. Java读取txt文件、excel文件的方法

    Java读取txt文件.excel文件的方法 1.读取txt文件 public static String getFileContent(String filePath,String charset) ...

  10. EBI、DDD及其演变架构史

    一.引子 聊架构总离不开"领域驱动架构",大多能聊到DDD(Domain-Driven Design),实际上早期思想EBI架构 1992年就诞生了.核心价值点在于:关注核心业务领 ...