git log 以后如何返回主界面 ??
(直接按q)清理屏幕
clear
对于新建文件,需要使用git add 命令加入到暂存区进行跟踪,而对于已经存在的文件,只做修改,可以直接git commit,
它包含了git add 操作
----------------------------------------------------------------------------------------------------------
git常规操作
1.重命名
git mv home.html demo2.html
(注意:home.html为改动之前的文件,demo2.html是改动以后的文件。中间空格)
2 移动文件到文件夹并重命名
git mv home.html home/index.html
移动home.html打home文件夹并且更改名称为index.html
(注意:home.html为原文件,home为需移动到的文件夹。index.html为最后更改的名称)
3 查看某个文件的历次提交信息
查看home文件夹下demo.html页面的历次提交信息
git log -p home/demo.html
git log --graph --pretty=format:"%h %s" (以更加简洁的方式只展示hash和内容)
git log和git reflog的区别:
如果我们远程有三次记录,分别是a,b,c,因为某些原因需要回归到b,此时通过git log得到的记录只有b,a,而如果某一天我们需要再次更新到c,
此时通过git reflog就可以保留之前的记录,此时就能看到c的记录
4 误操作。希望回到上次的状态
git checkout --home/index.html
(还原home文件夹下的inde.html页面的上一次修改,只回到上一次的提交状态)
注意:1 checkout后面一定要加 --
2 checkout -- 操作只针对还没有git add 的文件,如果已经git add了,则无法实现
回撤。也就是已经git add了的文件。如果再通过git checkout -- xx.filename 则在编辑器中
无法实现还原
可以通过git reset HEAD home/home.html(先从暂存区撤销对文件的追踪)
再执行 git checkout --home/home.html 即可还原
注意:git reset HEAD只能让暂存区保存恢复到之前的状态,但是工作区的内容是不会回到之前的状态的,所以需要手动通过 git checkout -- filename(git checkout .则是针对所有修改的文件);
当然:有一个简单地办法。git reset --hard HEAD (添加--hard,则可以实现工作区。暂存区内容同步,避免手动再执行git checkout 的操作)
5 版本回退
回退一个版本 git reset --hard HEAD^
回退二个版本 git reset --hard HEAD^^
^表示回退到第几个版本,一个^代表一个版本
回退到某个版本
(1) git log ---- 获取某个版本的id值
(2)git reset --hard HEAD e3f2123c3
只把某个文件退回到某个版本
(1) git log ---- 获取某个版本的id值
(2) git checkout e3f2123c3 --home/index.html (把home文件夹下的index.html回退到e3f2123c3版本,其他不变)
6 查看当前git配置信息:
比如git仓库地址,开发者信息等
git config --local --list 即可查看
7 本地新建一个分支并和远程分支相关联
git checkout -b test remotes/origin/test
(注:如果远程存在某个分支,本地想要跟踪该分支,可以直接通过git checkout originbranchname
比如:git checkout dev 它表示本地新建了一个dev分支并且和远程相关联
——————————————————————————————————-————
分支管理
新建一个分支 git branch dev
查看分支 git branch
切换分支 git checkout dev (切换到dev分支 )
删除分支 git branch -d dev (删除dev分支,注意。如果本身在dev分支上,无法删除当前的分支,也就是dev )
git branch -D dev (强制删除dev分支。如果我们执行了git add 和git commit操作。是无法删除当前分支的。如果要强制删除,则使用 git branch -D dev命令)
创建分支并且切换到当前分支 git checkout -b dev (创建一个dev分支并且切换到dev上)
删除远程分支 git push origin --delete dev (删除远程分支dev)
合并分支:
需求:dev合并到master分支
步骤(1)切换到master分支 git checkout master (确保成功切换可以通过git branch查看)
(2) git merge dev (在主分支上合并dev分支)
——————————————————————————————————————
关于标签
比如我们想给你某次重大改进做一个便签
(1)git tag v1.0 (给当前提交的版本添加一个v1.0的标签),
(2)然后我们可以通过git tag查看标签是否新建成功
如果我们想给某一次的提交添加标签。我们可以先找到其版本号然后再git tag v.001( v.0001为自定义的标签名称)
如果我们想删除某个标签。则可以执行 git tag -d v.001(v.001 为要删除的某个标签)
做了修改我们想把标签推送到远程仓库,则可以执行 git push origin (默认主机) v1.0 (把 v1.0的标签推送到远程仓库origin )
_______________________________________________________________________________________________
8 本地新建分支并且同步远程分支
比如本地新建一个pre分支,同步提交代码到远程pre分支注:此时远程并无pre分支
操作步骤:
(1)git branch pre (本地新建一个分支pre,此时远程无pre分支)
(2) git add .
(3) git commit -m "xxx"
(4) git push origin pre (此时本地pre分支内容添加到了远程pre分支同时远程pre新建了一个pre分支)
9 本地分支和远程关联
以pre分支为例
(1)先git pull
(2)git branch -a 查看远程分支的名称
(比如远程分支形如:
remotes/origin/dev
remotes/origin/master
remote/origin/test
remote/origin/pre
)
(3) git branch --set-upstream-to=remotes/origim/pre(此处名称为以上远程分支名称)
.gitignore
常见配置说明
.txt 忽略所有.txt文件
!a.txt 除了a.txt,其他.txt文件都被忽略
/nodemodules 忽略nodemodules文件夹
/nodemodules /index.js 只忽略/nodemodules /index.js 下index.js文件
------------------------------------------------------------------------------------------------------------------------
1 分支合并错了怎么办?
案例:
现在有四个分支 a,dev,prev,master,a更改了内容提交到了远程分支origin/a。正常流程应该是切换到dev分支,然后把a分支合并过来。结果不小心merge的是prev分支。解决办法就是:
(1)在dev分支上执行 git reflog,找到dev分支最近的一次提交。得到hash版本号。如下图:
(2) 找到版本号以后执行git reset --hard 61dd638(版本号)
(3)再执行git pull 拉取远程dev分支的代码、这时候dev分支的内容就摒弃了合并的代码回到干净的状态
(4)再在dev分支上merge a分支执行正常操作即可
2 合并分支以后,还未提交。发现合并以后改动太多,一团糟,不想合并了。回到默认状态咋么处理?
比如我们有个开发分支a,开发完以后合并到dev分支。合并以后发现一团糟。想让dev恢复到未合并之前的状态。如何处理?
直接 git reset --hard HEAD
3 如果某次commit以后发现有个小的点要改动或者遗漏了某个文件又不想在commit一次,可以通过git commit --amend --no-edit来实现。如下
第一次修改 执行git add . git commit -m"修改了文件"
此时发现有代码有问题。执行如下操作。
(1) 修改好文件
(2)执行 git add .
(3) git commit --amend-no-edit
(4)git push (统一提交)
注意。git commit --amend只针对commit有效。如果第一次修改已经git push到远程仓库则git commit --amend无效
4 更改了gitlab/gitte/github的密码。导致push时报错,无权限如何处理?
remote: [session-ac41b0ad] sean@qq.com: Incorrect username or password (access token)
fatal: Authentication failed for 'https://gitee.com/xxx/shopmall.git/'
解决办法:在windows中搜索凭证,选择凭证管理器。选择windwos凭据,找到对应的远程仓库比如github、gitte、gitlab,然后点击编辑。输入最新的密码确定即可。再次push,成功
5 如果a分支开发到一半结果要去更改其他的分支内容如何处理?
(1) 把内容通过git add .或者git commit 提交 (git stash只针对工作区和暂存区有效)
(2)git stash (这步操作会把更改和新增的内容存到内存中)
(3) 其他分支修改好以后通过git checkout a切换到a分支
(4)通过git stash pop (或者git stash apply)就可以把之前修改的内容重新赋值到a分支上。也可以通过这种方式把stash暂存的内容通过git stash pop(apply)应用到其他分支上。
5 关于大小写更改git不会跟踪问题
git默认不会对某个单词大小写的更改进行对比,如果我们更改的文件刚好是大小写。这时候需要通过这个命令
git config core.ignorecase true -g 来进行设置
还有一种场景切换分支出现错误:The following untracked working tree files would be overwritten by checkout也可以尝试用这个命令来解决