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' 也能修改,但提交到代码仓库是两次!!