GIT命令行的一些基本操作

目录

■基础

■扩展 (重要)

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

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

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

■命令行查看,创建,切换,删除Branch  ★★★【超级常用】★★★

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

​编辑

・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操作 (英文解释 含 图片说明)

■git stash

■diff 两个Branch

注释版

简洁版


====

■基础

■前言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 branch

git 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

===

■命令行查看,创建,切换,删除Branch  ★★★【超级常用】★★★

基于Master创建Branch

$ git checkout -b test007
Switched to a new branch 'test007'

========================

根据远程分支,创建本地分支

git checkout -b test007 origin/test007 

========================

查看当前分支   * 代表当前所在的分支

 git branch
  master
* test007

========================

查看远程分支

git branch -r

========================

切换当前使用的分支

git checkout master

Switched to branch 'master'
M       package-lock.json
M       package.json
Your branch is up to date with 'origin/master'.

========================

删除本地分支

git branch -d test007
Deleted branch test007(was FFA23).

========================

获取最新代码(从远程更新代码)

     注意!!!
        使用之前,如果修改过Git密码,要从【凭据管理】中,删除上次保存的密码

         今天使用时,没有删除,执行pull命令,直接把自己的Github账号锁住了

git pull

========================

登录
git pull // 输入这个命令后(其他命令应该也行),会让你输入用户名,密码
========================

切换到你的分支,并确认
git checkout branch_name // 切换到你要合并的分支,并拉取最新的代码
git status  // 查看当前在
========================
 查看提交记录
git log -2 查看最近2次的提交历史记录
========================
回退命令:
git reset --hard HEAD^ 回退到上个版本
git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
git reset --hard commitID 退到/进到,指定commit的哈希码(这次提交之前或之后的提交都会回滚)

     注意!!!
        这种方式的回滚,那个版本之后,所有提交过的代码的履历,都会丢失!!!

               都会丢失!!!   都会丢失!!!    都会丢失!!!

        使用之前一定要三思而后行!

========================
回退之后的push:

之后执行[git push]时,
会出现:git push 出现non-fast-forward的错误
      出现non-fast-forward的错误,证明您的本地库跟远程库的提交记录不一致
      因为我们回退了,所以,肯定是不一致的!
所以我们要这么[git push -f]来强制push

   操作之后,使用 git log -2 命令查看,可以看到,已经切到对应的版本了

      在gitHub上,也可以看到效果
========================

git push -f 之后,其它人的操作:

目前想到的办法是,删掉git工程,重新从Git上下载

(如果不重新下载,会有箭头显示)

========================

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

 ---

---

・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 stash

git add .
git stash

stash  英[stæʃ]  藏匿; 隐藏; 存放; 贮藏; // git 

在开发过程中我们需要经常切换分支,例如正在某一个分支下做需求时候,在该需求还未完成时就需要在另外一个分支下进行问题的修改,如果直接checkout切换分支会有冲突,会导致切换不成功,但是又不想将当前的做的修改复原,于是想到将当前的改动暂时保存下来,然后切换到另外一个分支去修改问题,当问题修改完成了之后将分支切换回来,然后再将之前保存的改动释放即可继续对需求进行开发了。
git 中stash的实用方法_git stash_码龙-的博客-CSDN博客

----

■diff 两个Branch

注释版

@echo off

rem set path=C:sxz\Program Files\TortoiseGit\bin;%path%

set projectDir="C:\dev\MyJava001\"

set /P "outPutFileName=Your out put file name: "

set outputFile=%cd%\%outPutFileName:/=_%.txt

rem rojectDir disk
c:
cd %projectDir%
rem dir /b
echo %outputFile%

rem origin bigin is ok too.
rem git diff --output %outputFile% --name-status master test/test_202406_10
git diff --output %outputFile% --name-status origin/master origin/test/test_202406_10

pause;





简洁版

@echo off

set projectDir="C:\dev\MyJava001\"

set /P "outPutFileName=Your out put file name: "

set outputFile=%cd%\%outPutFileName:/=_%.txt

rem rojectDir disk
c:
cd %projectDir%

git diff --output %outputFile% --name-status origin/master origin/test/test_202406_10

pause;





===

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值