目录

■基础

■扩展 (重要)

■★★★===git Hub 时的命令行操作 (登录git【命令行】)

・★★===他命令  // Git

・★★===查看多个版本之间修改的代码

・★===去掉以及保存的密码

・Git 工作的 三个区域

・Git Reset 三种模式

・Git Reset Eclipse 中的操作

・Git Merge

・merge 时 【スカッシュ(squash)】选项---简介

・merge 时 【スカッシュ(squash)】选项---具体操作

・merge 时 【フォワード オプション】选项---三种设置

   ①【O】・--ff(默认)// Fast-forward // git merge

   ②【M】--no-ff // non-Fast-forward // git merge

   ③【N】--ff-only Fast-forward 模式:

・Git Merage 注意点

・Git Merge Eclipse中的操做

・Git Merge操作 (英文解释 含 图片说明)


■基础

■前言1
Git是一个分布式的版本控制系统,它最早是在Linux上开发的,被用来管理Linux核心的源代码,
与集中式的版本控制系统(CVS,SVN)不同的是,
每一个使用者,都可以通过克隆的方式,在本地建立版本仓库。(克隆共有仓库到本地)
再对本地库进行操作(commit)时,不需要网络连接。
通过PUSH方式,反映到共有仓库中。

■前言2
之前一直使用Eclipse操作git,今天有一个需求,要修改已经PUSH的分支(Branch)的名字。
为了方便,于是命令行操作。

■基本命令
git add # 将工作区的修改提交到暂存区
git commit # 将暂存区的修改提交到当前分支
git reset # 回退到某一个版本
git pull # 从远程更新代码
git push # 将本地代码更新到远程分支上
git reflog # 查看历史命令
git status # 查看当前仓库的状态
git log # 查看提交历史
git revert # 回退某个修改

■以上命令的具体使用

(如果命令行不识别,自己在窗口把git的bin等(运行的时候说一个dll找不到,所在目录也加到Path中了)加到环境变量的Pash里面,然后到git仓库的目录下面,执行下面命令。)
git branch // 查看本地分支 (OK)
git branch -r // 查看远程分支 (OK)

git reflog show --date=iso branch_name // 查看分支创建时间(可以查看远程分支的创建时间) (OK)

git checkout master // 本地进入master分支
git checkout -b frommaster // 以master为源创建分支frommaster

git checkout develop // 本地进入develop分支
git checkout -b fromdevelop // 以develop为源创建本地分支fromdevelop
git push origin fromdevelop // 将本地fromdevelop分支作为远程fromdevelop分支

git commit –m “提交代码时的注释”

git checkout master // 合并分支 to Master step1
git merge newBranchName // 合并分支 to Master step2

git reset --hard <commit-id> // 撤消上一次commit的内容

■修改Branch名字(操作失败!)
git checkout oldBranchName // 本地进入oldBranchName 分支
git bran

重命名本地分支 (OK)
git push origin :oldBranchName //删除远程分支(NG)
(git push --delete origin oldBranchName // 删除远程分支 方法2) (NG)
git push origin newBranchName //PUSH本地分支 (NG,命令行看,是成功了,远程仓库中能看到(git branch -r),但是实际是失败了!别人PULL不下来。看了远程仓库git下面的文件,有文件被改动,但是各个分支的目录下面,没有本次新建的分支)
(git push origin newBranchName :newBranchName // PUSH本地分支 方法2)
git branch -vv // 查看本地分支和远程分支的跟踪关系
git branch --set-upstream-to=origin/remote_branch  your_branch //新建分支后,与线上分支进行跟踪关联

■注意事项
备份git仓库的时候,
不要复制备份,会造成有的文件夹的日期改变。
直接把操作之前的git仓库压缩成zip文件,进行备份。

■扩展 (重要)

■★★★===git Hub 时的命令行操作 (登录git【命令行】)

可以尝试在 【Git Bash】的命名行下面执行

以下命令都好用

pwd
cd
ls// 打开之后的默认目录是 /c/Users/yourUserName// 跳转到对应的 工程目录 (有「.git]文件夹)git branchgit branch -r// 获取最新代码
git pull//执行此命令后,会提示你输入用户名和密码
UserName for 'http://XXXXXXXX':
Password for 'http://XXXXXXXX':
// 如果已经是最新代码,则会显示下面的信息
Already up-to-date.

===

・★★===他命令  // Git

git reset --soft回退版本git commit // 提交到本地仓库git push // 提交到远程仓库git branch // 查看分支git log // 查看提交记录
git log -2 查看最近2次的提交历史记录git status  // 查看当前在git checkout branch_name // 切换到你要合并的分支,并拉取最新的代码
git checkout -b feature556 // 从master创建新的分支  // 参数b 创建新的分支更多回退命令:
git reset --hard HEAD^ 回退到上个版本git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前git reset --hard commit_id 退到/进到,指定commit的哈希码(这次提交之前或之后的提交都会回滚)

・★★===查看多个版本之间修改的代码

git pull 显示密码错误(去控制面板的凭据管理器中找到windows凭据,将git的密码更新一下)
①git config --list  // 确认设置是否正确
②去控制面板的凭据管理器中找到windows凭据,将git的密码更新一下git diff --name-only commitID_001 commitID_002

・★===去掉以及保存的密码

---

---

・Git 工作的 三个区域

1.Working
Working Tree 当前的工作区域2.Stage
(先把代码添加到这里,然后提交)
Index/Stage 暂存区域,和git stash命令暂存的地方不一样。
使用git add xx,就可以将xx添加近Stage里面3.Repository
Repository 提交的历史,即使用git commit提交后的结果

---

・Git Reset 三种模式

①git reset --soft
②git reset --mixed
③git reset --hard

git reset --hard

git reset --hard HEAD^ 回退到上个版本
git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard commit_id 退到/进到,指定commit的哈希码(这次提交之前或之后的提交都会回滚)
---
git reset 的三种模式的使用场景_雕牌咸鱼的博客-CSDN博客_git reset 三种模式
---
今天使用使用git merge 代码,报错了,merge失败,
使用git的Reset功能恢复(选择第一个)没有成功。 (工程文件夹右侧,显示 【マージ済み (merge完了)】branchm名)
选择第三个成功。
---

・Git Reset Eclipse 中的操作

有的时候,需要选择Head,才能达到我们想要恢复的效果。(黄色标记部分)

・Git Merge

・merge 时 【スカッシュ(squash)】选项---简介

(多个commit记录合并成一个提交记录)

// 目前的工作中,因为要保留所有履历,一般不会采用此选项

  git merge コマンドを実行するときに、
  --squash オプションを指定すると、
  ブランチ先でのすべてのコミットを1つにまとめて、
  現在チェックアウトしているブランチにステージングすることができます。

ブランチでの変更をマージする(直接マージ、スカッシュマージ、チェリーピック) | まくまくGitノート

squash  英 [skwɒʃ]  美 [skwɔʃ]   スカッシュ

n. 壁球;果汁饮料;南瓜属植物;拥挤

v. 把…压扁;受挤压;挤入;镇压;使沉默

・merge 时 【スカッシュ(squash)】选项---具体操作

1. git checkout master 
   切换至 master分支 
2. git merge origin/develop --squash
3. git commit -m "问题修改--测试ok"  // 履历中,只保留这一条履历

・merge 时 【フォワード オプション】选项---三种设置

git merge オプションの --ff, --no-ff, --ff-only の違い - yu8mada

--ff(默认), --no-ff, --ff-only

git merge --ff/--no-ff/--ff-only 三种选项参数的区别 - 小二十七 - 博客园

   ①【O】・--ff(默认)// Fast-forward // git merge

Fast-forward 是指 Master 合并 Feature 时候发现 Master 当前节点一直和 Feature 的根节点相同,
没有发生改变,那么 Master 快速移动头指针到 Feature 的位置,
所以 Fast-forward 并不会发生真正的合并,【只(only)】通过移动指针(pointer)造成合并的假象,
这也体现 git 设计的巧妙之处。
(如果不匹配则执行 --no-ff(non-Fast-forward) 合并模式)

----

通俗解释 8.Git merge之 Fast Forward和 No Fast Forward(--no-ff方式)解析_扛麻袋的少年的博客-CSDN博客

Fast Forward意为"快进模式"。主要使用在多分支合并的情况下。即:当前分支合并另一个分支的时候,如果合并的过程中没有Conflict冲突的时候,则会通过直接移动两个分支的指针,来达到合并的过程,这个过程就叫做Fast Forward。

----

   ②【M】--no-ff // non-Fast-forward // git merge

当合并的分支跟 master 不存在共同祖先节点的时候,这时候在 merge 的时候 git 默认无法使用 Fast-forward 模式,
git自己【Merge代码】

   ③【N】--ff-only Fast-forward 模式:

只会按照 Fast-forward 模式进行合并,如果【不符合】条件(并非当前分支的直接后代),则会拒绝合并请求并且推出

①②③三种模式 英文
https://blog.csdn.net/xiaozaq/article/details/82862916

・Git Merage 注意点

当出现rejected – non-fast-forward时,
不要选最下面的Force overwirte branch in remote if exists and have deverged,否则本地仓库会覆盖远程仓库,造成覆盖别人代码的严重后果
・rejected  英 [rɪˈdʒɛkt; ˈriːdʒɛkt] // adj. 被拒的;不合格的 // git merge

・Git Merge Eclipse中的操做

Eclipse中的Git使用之Branch创建,Merge_sun0322-CSDN博客

一般按照如下方式选择(黄色标记部分)

・Git Merge操作 (英文解释 含 图片说明)

git merge和git merge --no-ff的区别_如果我年少有为不自卑-CSDN博客

--ff
When the merge resolves as a fast-forward, only update the branch pointer, without creating a merge commit. This is the default behavior.

--no-ff
Create a merge commit even when the merge resolves as a fast-forward. This is the default behaviour when merging an annotated (and possibly signed) tag.

--squash
--no-squash
Produce the working tree and index state as if a real merge happened (except for the merge information), but do not actually make a commit, move the HEAD, or record $GIT_DIR/MERGE_HEAD (to cause the next git commit command to create a merge commit). This allows you to create a single commit on top of the current branch whose effect is the same as merging another branch (or more in case of an octopus).

With --no-squash perform the merge and commit the result. This option can be used to override --squash.

---

GIT命令行的一些基本操作相关推荐

  1. 如何用git命令行上传本地代码到github

    如何用git命令行上传本地代码到github 2016年09月19日 16:10:36 阅读数:9337 注意:安装的前提条件是配置好git的相关环境或者安装好git.exe,此处不再重点提及 上传的 ...

  2. [MySQL]命令行工具和基本操作

    [MySQL]命令行工具和基本操作 一 MySQL命令行工具  (查看帮助 ---help,或 -?) 1)MySQL MySQL是一个简单的SQL外壳(有GNU readline功能).它支持交互式 ...

  3. git命令行完全解读

    BY 张建成(prettyEcho@github) 除非另行注明,页面上所有内容采用知识共享-署名(CC BY 2.5 AU)协议共享 原文地址deep.js , 欢迎 评论 和 star ?? 欢迎 ...

  4. 关于使用 git 命令行来和“码云”账号上的项目互通过程的基础步骤

    前提:已经有码云账号,电脑已经安装了git工具. (1)在码云账号上登陆自己的账号,创建一个新的项目. (2)在自己的本地磁盘下随便创建一个文件夹(例如起名为:mayun),用来存放从码云上拉下来的项 ...

  5. 【重要】使用Git命令行上传到GitHub上

    [本人GitHub账号:] 用户名:chenhongshuang 密码:shuangshuang6300 邮箱:2452420371@qq.com 进入GitHub账号后 1·新建项目文件名称例dem ...

  6. 如何使用git命令行上传项目到github

    参考文献: 如何使用git命令行上传项目到github 感谢楼主分享!

  7. Git命令行介绍和使用说明(持续更新)

    Git命令行介绍和使用说明(持续更新) Git命令行介绍和使用说明(持续更新) 文档名称 Git命令行介绍和使用说明会 创建时间 2012/8/23 修改时间 2012/8/23 创建人 Baifx ...

  8. linux tig不支持中文,tig — 让 git 命令行可视化

    tig 是一款优化 git 命令行的工具,使 git 命令行更加的便捷人性化 .如果用习惯了,会上瘾. image 基础 安装 在 Mac 上最简单的方式是使用 Homebrew: brew inst ...

  9. gitBash快速清屏,git命令行操作,快速清屏,清屏

    ## ** gitBash快速清屏,git命令行操作,快速清屏,清屏 ** 快捷键 点赞去啊!!!!!!!!!!!!!

最新文章

  1. UML 建模大佬养成记(Java版)
  2. jquery Syntax error, unrecognized expression:的解决方法
  3. 一个浏览器插件,测试xpath的工具
  4. 计算机网络是如何通信的【一】
  5. svm预测结果为同一个值_实战:用SVM算法进行乳腺癌预测
  6. 工作不能混日子,给自己留言
  7. 智能会议系统(25)---linphone代码分析
  8. 指针使用前应先初始化
  9. 串讲-解释篇:作用域,作用域链,执行环境,变量对象,活动对象,闭包
  10. 【CCCC】L2-010 排座位 (25分),,并查集+二维矩阵判定关系
  11. 我买了个阿里云服务器并在上面部署了一个项目
  12. 15个Java的报表工具简介
  13. iOS底层探索之多线程(十一)—GCD源码分析(调度组)
  14. 树形动规_(访问艺术馆)
  15. python webkit内核_GitHub - yunate/wke: 基于Webkit精简的纯C接口的浏览器内核,可用于桌面UI、浏览器。...
  16. 关于axure 8在发布的时候显示:Unable to connect to Axure Share.的问题
  17. IVL和SVL的区别
  18. 计算10光年是多少米java_1光年是多少米,9.46×10^15米(最快的火箭需飞108000年)...
  19. finalshell链接不上虚拟机提示一直登录或链接不上怎么办
  20. EtherCAT 之邮箱

热门文章

  1. python中label怎么绑定变量_Kivy将标签文本绑定到变量(仅限Python)
  2. Ruby设计模式透析之 —— 适配器(Adapter)
  3. Android开机自动启动程序设置
  4. 11.history命令历史
  5. 企业IT部门主管告诉你,DevOps给我们带来了这些变化
  6. 直播疑难杂症排查(1)— 播放失败
  7. 新Linux木马发现:每30秒截图并用麦克风录音
  8. oracle12C 创建用户学习
  9. 2016网易有道内推笔试题
  10. linux vi 中s 替换方法