如果你有使用github和gitee两个仓库,要重新配置ssh key,解决冲突那么请先看这个文章◀点击
- github就是一个网上仓库(分布式版本控制系统),当你下载了gitbash后该怎么使用一些常用命令呢?
这里我做了一些直白的记录,浅显易懂直观即看即用,这些命令是让你在工作上成为一位git用户,
在平时使用命令中一堆操作上不再苦恼~
当然你想深入了解,欢迎去到廖雪峰Git系统网站学习▶穿梭机
-
仓库添加文件 ↓
开始的时候,当你在clone下项目后,新建或修改了文件需要添加线上时:( git pull 执行拉取最新代码-保证代码最新)
git add . // 添加所有文件
git commit -m '填写本次信息' // 提交备注
git push // 推送远程
-
仓库新建分支 ↓
当你想在项目中创建一个目录(分支):可以把修改的代码再添加文件到该目录下
git branch testName // 分支-名字
git checkout testName // 切换到分支
or
git checkout -b testName // 创建并切换到的分支下
-
推送分支 ↓
以下执行把 -创建的目录(分支)-推送到远程线上
git push origin testName // 把本地分支提交到远程仓库
or
git push origin testName:testName // 分支的推送到远程-本地分支:(推送到)远程仓库上
-
合并你的代码 ↓
回到主分支 / 以及-把分支代码-合并到主分支项目上
git checkout master // 切换分支
git merge testName // 合并分支
git push // 推送远程
-
暂存代码^将当前工作区的修改暂存起来 ↓
有时候修改了代码,又要更新代码(pull)然后又不被覆盖怎么办呢?
git stash // 先把本地代码保存起来
git pull // 再更新
那保存怎么取出来了呢?
git stash pop // 取出刚才的保存
然后去解决你的本地冲突就行了
-
撤销先前commit ↓
在git push之前, git commit的内容后悔了怎么办呢?
或者你想回退到之前某个版本的代码,恢复到本地后可以选择覆盖和不覆盖当前的修改
假如你现在是这种情况,C是你的HEAD,(F)是你当前文件的状态。
(F)
A-B-C
↑
master
你想要除掉C,并且再也不想见到它。那么你这么做:
git reset --hard HEAD~1
执行完后的结果就是:
(F)
A-B
↑
master
现在B是HEAD了。因为你使用了--hard,所以你的文件被重置到B的状态了。
当你要撤销提交,但是保留你更改的代码信息,然后做一些修改,再提交一遍。下面看看状态的情况:
(F)
A-B-C
↑
master
那种情况下不用使用--hard:
git reset HEAD~1
来看下HEAD的下标:
(F)
A-B-C
↑
master
在正常情况下,HEAD都是指向最近一次提交的一个指针。当你使用 git reset HEAD~1 命令时,你告诉Git将HEAD指针往前回退一次,到上一个 commit 上。但是(除非你使用--hard参数)你仍然没有改变文件。那么 git status 会告诉你之前提交到 C 的修改变化还会存在。之前手码的都没有丢失。
所以想要最轻微的改动,撤销你的提交的同时还保留着你的文件和索引:
git reset --soft HEAD~1
-
reset恢复删除的文件
$ ls
A文件/ B文件/ C文件/ D文件/
先删除一个文件作为试验,查看操作状态会有deleted的文件,可以看到列表中已经剩下的三个文件
$ git rm A文件
rm 'static_files/abbr_data'
$ git status // '接着查看最新状态'
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# deleted: A文件
$ ls
B文件/ C文件/ D文件/
最后通过reset把删除的文件文件给恢复就好啦
$ git reset HEAD A文件
Unstaged changes after reset:
M /A文件
-
本地撤销后悔了,恢复某一次的提交 ↓
- 执行git reflog查看显示日志,所有HEAD的历史: git reflog
git reflog
// 以下为记录信息
002abcdgrhfkhdg HEAD@{0}: commit: 第二次提交
001abcdgrhfkhdg HEAD@{1}: commit: 第一次提交
2.找到想要恢复的SHA,执行以下恢复ok了:
git reset --hard 002abcdgrhfkhdg
-
回退线上某一次提交记录
1.点开commit提交,找到想要回退的一次commit id信息
commit 003abcde123fghijk <复制
2.重置到你某一次commit的版本号
git reset --hard 003abcde123fghijk
3.以master分支为例,强制覆盖线上仓库的分支,此操作只适合个人的项目*慎重做个备份(可以修改为你当前的分支)
git push -f -u origin master
-
提交错了分支该怎么办?↓
首先当然是先回滚你的提交并保留最新的更改,然后把修改的放入暂存区,在切换到你需要推送的分支进行提交,修改内容再提出来
假设你提交到了branch-1的情况下
git reset HEAD~1
...
git stash
...
git checkout branch-2
...
git stash pop
紧接着做你想做的事情就好了,比如这里再进行提交信息:
git add
...
git commit -m "okok"
...
git push branch-2
但是你的branch-1分支多了一次不需要的提交,想要弄回来原模原样的记录:
git checkout branch-1
...
git push origin branch-1 -f