常用git指令

git reflog 查看所有分支的所有操作记录

git reflog 可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)

git add 添加 多余文件

这样的错误是由于, 有的时候 可能

git add . (空格+ 点) 表示当前目录所有文件,不小心就会提交其他文件

git add 如果添加了错误的文件的话

撤销git add 多添加文件

git status 先看一下add 中的文件
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了

删除commit message

git reset --soft HEAD^ 仅仅是撤回commit操作,您写的代码仍然保留。
git–hard^ 本地修改也没了

git branch -d branch_name 删除本地分支
git branch -D branch_name 强行删除本地分支
git push remote_name --delete branch_name 删除远程分支

看某个提交的修改内容
git show sha1

看某个提交的commit message
git log sha1

一 本地分支

创建本地分支,然后切换到dev分支

$ git checkout -b dev
git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev
然后,用git branch命令查看当前分支:

$ git branch
* dev
  master
 添加文件 "Readme.txt", 提交到本地dev分支

$ git add Readme.txt 
$ git commit -m "branch dev test"
dev分支的工作完成,切换回master分支:

$ git checkout master
把dev分支的工作内容合并到master分支上:

$ git merge dev
git merge命令用于合并指定分支到当前分支。合并后,再查看Readme.txt的内容,和dev分支的最新提交是完全一致的。

Fast-forward信息代表:“快进模式”,直接把master指向dev的当前提交,合并速度快。

并非每次代码合并都能实现Fast-forward。

合并完成后,删除dev分支:

$ git branch -d dev
删除后,查看branch,就只有master分支了:

$ git branch
* master
创建、合并和删除分支非常快,鼓励你使用分支来完成某个短期任务,合并后再删掉,比起直接在master上工作过程更安全。

二 远程分支

删除远程分支

 git push origin --delete Chapater6 
查看远程分支 

git branch -r
 拉取远程分支并创建本地分支

git checkout -b 本地分支名x origin/远程分支名x
这样远程仓库中也就创建了一个test分支

git checkout -b test
 
git push origin test
 查看所有分支

git branch -a
注:remote/origin/[name]表示的是远程分支
清除本地更改

// 清楚所有更改
git checkout . && git clean -xdf
// 清除某一个文件的更改
git checkout -- file

git 对比两个分支差异

1. 显示出branch1和branch2中差异的部分
git diff branch1 branch2 --stat

2. 显示指定文件的详细差异
git diff branch1 branch2 具体文件路径

3. 显示出所有有差异的文件的详细差异
git diff branch1 branch2

4. 查看branch1分支有,而branch2中没有的log
git log branch1 ^branch2

5. 查看branch2中比branch1中多提交了哪些内容
git log branch1 .. branch2
注意,列出来的是两个点后边(此处即dev)多提交的内容。

6. 不知道谁提交的多谁提交的少,单纯想知道有是吗不一样
git log branch1...branch2

7. 在上述情况下,在显示出没个提交是在哪个分支上
git log --lefg-right branch1...branch2
注意 commit 后面的箭头,根据我们在 –left-right branch1…branch2 的顺序,左箭头 < 表示是 branch1 的,右箭头 > 表示是branch2的。

git diff a b与git diff b a的区别

git diff a b是基于a来看b有什么变化

git diff用的时间也挺久了,不过一直没有注意过git diff a b,和git diff b a有什么区别,用的也是稀里糊涂的,不就是比较a和b的不同么?两种比较方式会有什么不一样呢?

我们的a文件,内容如下:

1
2

b文件的内容为:

1
3

执行git diff a b,结果为:

diff --git a/a b/b
index 1191247..2b2f2e1 100644
--- a/a
+++ b/b
@@ -1,2 +1,2 @@
 1
-2
+3

如果是git diff b a,则结果为:

diff --git a/b b/a
index 2b2f2e1..1191247 100644
--- a/b
+++ b/a
@@ -1,2 +1,2 @@
 1
-3
+2

git fetch

fetch Download objects and refs from another repositor
拿来   从另一个存储库获取下载对象和参考
git fetch 并没更改本地仓库的代码,只是拉取了远程 commit 数据,将远程仓库的 commit id 更新为latest。
具体的行为你可以尝试看看.git文件夹:./git/refs 里面有三个文件夹:
heads、remotes、tags。heads 和 remotes 分别记录的就是本地和远程不同仓库的最新 commit id

fetch 改变的是 remotes 里面相应分支的 commit id
git fetch xxx -b name
新建将最新切换到xxx,并新建名字为name的新branch

将本地代码打成patch文件

git commit --amend
git format-patch -1 //不将修改提交到远程服务器上,在根目录下生成patch文件

// 应用patch
git am xxx.patch // 将补丁,提交并在本地创建一个commit.
git apply xxx.patch // 仅对本地文件打补丁,不创建commit.
// 如果git am有问题,可以尝试git apply,再做修改.

git clean

git clean -f //f 强制删除

↑删除当前目录下所有没有track过的文件

创建并切换到新分支

git checkout -b panda
git branch可以看到已经在panda分支上

刪除本地分支

$ git branch -d dev
$ git branch -D dev //强制删除

刪除远程分支

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/branch1
  remotes/origin/master
  
$ git push origin --delete branch1
To git@github.com:frogfans/Demo.git
 - [deleted]         branch1

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

本地分支推送到远程分支

应用场景
有时候我们开发需要开一个分支,这样可以有效的并行开发.
开分支有两种方式:
一种是在远程开好分支,本地直接拉下来;
一种是本地开好分支,推送到远程.
1、远程先开好分支然后拉到本地

git checkout -b feature-branch origin/feature-branch    //检出远程的feature-branch分支到本地

2、本地先开好分支然后推送到远程

$  git checkout -b newbranch    //创建并切换到分支newbranch
$  git push origin newbranch:newbranch    //推送本地的newbranch(冒号前面的)分支到远程origin的newbranch(冒号后面的)分支(没有会自动创建)

删除当前目录下所有没有track过的文件

不会删除.gitignore文件里面指定的文件夹和文件, 不管这些文件有没有被track过

git clean -f <path>

git add之前,放弃刚刚做的修改

在git add之前我们发现有错误,想要放弃刚刚做的修改,回到修改前的状态

git checkout -- main.cpp

git push 前,branch版本落后

Updates were rejected because the tip of your current branch is behind

解决办法:可以强制推送到远程分支。远程branch落后的commit将被删除

git push -u origin xxxx -f 

也有不删除远程commit的解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值