git操作


git 操作

common
git init // (在github新建远程仓库,将一个文件使用此命令初始化,然后按照提示操作。)

git add .

git commit -m 

git push // (若从远程上来下来,并切换了分支,那么可直接git push 就能将本地最新代码push到远程对应的这个分支上去)

git checkout  // 分支名 (已在远程对应的分支上,可使用此命令切换到其他远程分支)

git checkout -b // 分支名 (创建本地分支)

git checkout -- package-lock.json // 只回退  package-lock.json 到之前的版本

git checkout  commit 号  // 回退到指定提交版本(全部文件都回退)

// 如此,不用get reset — hard 也能回退到指定版本 , 也可以回退指定的文件,不影响其他文件

git branch -a // (查看所有分支,本地and远程)

git branch // (查看本地分支)

git push --set-upstream origin 本地分支名 // (将本地分支推到远程仓库,使远程仓库下有该分支名)

git pull origin develop // (拉取对应远程分支的代码)

git reset --hard commmit代码 // (回退到指定版本)

git commit --no-verify -m // 跳过校验提交

git merge // (用于将分支代码合并至主分支)

/** 先将自己的分支 add . commit  push 完毕, 再切换到master分支 ,
 &
 * 使用 git merge 你的分支 命令将自己分支上的代码合并至主分支 。
 & 
 * 最后psuh 主分支代码
 */ 
git stash
// 使用原因

1. 合并代码
   
   当本地已经做出了一些修改,但有其他同学已经提交了最新的代码,此时我们需要拉一下最新的代码,
   
   但本地已经有修改了,直接pull 会提示让你先commit , 
       
   而这时commit 之后确实就能pull了,但等到后面我们在要提交的时候 (因为pull的原因本地代码变化了) 又要commit 一次,
   
   但因为拉代码再多增加一次commit并不可取。
   
   ***这时就可以使用 git stash 将当前代码保存至堆栈,然后就能直接pull了, 
   
   pull了之后再 git stash pop 将刚才保存的代码从堆栈弹出,
   
   再根据提示解决一下冲突,最后再提交就好了

  ********* 使用场景

2. 当前分支增加了最新内容但未commit ,且需要切换到其他分支

   当前分支未commit ,是不能切分支的,使用 git stash 后,就能切了。
   
3. 本该在dev 分支开发,但在master分支开发了

   使用 git stash 将当前内容保存至堆栈,再切到dev 分支将内容弹出。
   
   

git stash // 将当前未提交更改保存至堆栈中,后续用于恢复

git stash save  "save message" //   作用同git stash ,但可以添加一些注释

git stash list // 查看当前stash中的内容

git stash pop // 弹出 stash 中的第一个 ,***使用需要注意,确保stash 中只有一个内容!

git stash apply // 将堆栈内容应用到当前工作目录,但不同与git stash pop 的是,它不会将内容从堆栈删除。

  该命令使用于多个分支的情况。
  
git stash drop + 名称  // 从堆栈移除某个指定的stash

git stash clear // 移除堆栈中的所有内容

git stash show // 查看堆栈中最新个保存的stash 和当前目录的差异

   git stash show stash@{1}查看指定的stash和当前目录差异。
   
git stash branch // 从最新的stash 创建分支
git rebase
用途: 合并代码, 还有其他用途,以后再说

步骤: 
    
git fetch origin master // 将远程分支上的最新代码拉下来 pull是拉下来直接合并

// 最新的代码拉下来 直接使用 git rebase 会提示需要 先commit 

git commit -m ...

// 执行完此命令 按照提示解决冲突 
// 多次commit的 情况可能传入和当前的代码 都并不是 自己刚刚最新的代码
// 不要怕,先合并,后面还会有一次commit的冲突解决
// 一般这里是选择 incomming ,但也需要酌情选择 (需要慎重)
git rebase origin master

// 执行了此命令如果还有冲突,就继续解决冲突 (一般多次commit会有这样的情况)
git reabse continue

// 当以上步骤确定没有冲突以后,直接push, 不需要再commit了
git push 

// 最后:git rebase 不可滥用!
–amend
--amend 修改commit 记录


// 两次提交记录

git ciomit --amend -m '[dh-6925]xxxxxx'

------------------------------------------------------

// 因此提交记录

// 使用的原因是在提交后发现有一个小地方忘记了,不想因为这个再commit一次,于是修改之前的commit , 并全部当作一次提交

git commit --amend -a // 就是到a为止,后面没有了,前提是之前有过commit的情况下

执行以上命令后会出现很多行# // 这是linlux 命令

: wq 回车 // 这样就回到了命令行,此时已经将心修改的和以前的群不合为一次commit 了

最后 push 发现是一次commit

注意: 

   一定得是 git commit --amend -a 才会是一次提交,
   
   git ciomit --amend -m '[dh-6925]xxxxxx' 也能修改,但提交到代码仓库是两次!!
 

文章作者: KarlFranz
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 reprint policy. If reproduced, please indicate source KarlFranz !
评论
  目录