git笔记

gitlab   gitee   github

1、根底操作

1.1、常用命令

git常识大全

提交代码 git status -sb git add . git commit -m "fix" git push origin dev_20190510001查问状态git status查看日志 git log --stat git reflog --date=iso建设分支 git status -sb git checkout -B dev_20190510001 git push git push --set-upstream origin dev_20190510001
展现文件  ls删除文件  git rm test2.txt 撤销操作  git checkout -- test.txt增加文件到缓存: git add test.txt    单个文件 git add .           当前目录全副文件提交(蕴含正文)到本地仓库:  git commit -m '第一次版本提交' 上传文件到近程仓库: git push origin [本地分支名]:[远端分支名]   当然如果你的本地分支名和远端分支名是一样的,那么就只须要git push origin [分支名称]就能够了。     git push 复原最近版本文件 git fetch git reset --hard origin/master   //复原到近程仓库,删除git add和commit的文件 git pull   拉取 从近程拉取最新版本到本地,并主动合并 mergegit fetch  获取 从近程获取最新版本到本地,不会主动合并 merge,须要手动合并git merge  合并 应用fetch 能够在merge之前能够看清楚更新状况,再决定是否合并。git merge --abort  停止合并git 一个分支齐全笼罩另一个分支 ,如下:dev_20210729笼罩develop$ git checkout develop$ git reset --hard dev_20210729$ git push origin develop --force不容许推送  You are not allowed to force push code to a protected branch on this project"Settings" -> "Repository" -> scroll down to "Protected branches".
git回滚之前的版本  http://www.cnblogs.com/yu-hailong/p/10681905.htmlgit log   查问日历记录git reset --hard 5fa86ae3758e7e2a86825452977da40f34b6dd58   回滚到之前的版本git push origin HEAD --force   强制提交还原本地文件 git reset -hard  git reset —soft + 版本号  回退到某个版本,只回退了commit的信息,不会扭转曾经批改过的代码。  git reset --soft HEAD^   git reset —hard + 版本号     git reset --hard orgin  彻底回退到某个版本,本地的代码也会扭转上一个版本内容。 #本地仓库回退到某个版本    git reflog --date=iso git reset -–hard bae168    #本地仓库回退到上一次提交   git reset –-hard   git reset --hard HEAD 回退到以后版本的前一个版本 git reset --hard HEAD^ 回退到以后版本的上上个版本 git reset --hard HEAD^^ 回退到以后版本之前的100个版本 git reset --hard HEAD~100  抛弃本地提交,强制回到线上最新版本 git fetch --all git reset --hard origin/你须要下拉的分支(默认master)  git fetch 

1.2、配置

vi /etc/ssh/sshd_config查看版本: git --version查看配置: git config --list设置配置: git config --global pack.windowMemory 1024m git config --global pack.packsizelimit 1g  git config --global http.postBuffer 1g删除配置: git config --global --unset pack.deltacachesize 

1.3、分支

https://edu.aliyun.com/jiaocheng/1834?spm=5176.11182473.menu.7.k6ksTN创立分支命令(复制以后分支下文件): git branch (branchname) 提交分支到仓库命令: git push origin (branchname)切换分支命令: git checkout (branchname) 列出分支根本命令: git branch -a删除分支命令: git branch -d (branchname) 创立新分支并立刻切换到该分支下 git checkout -b newtest  有同名分支会提醒谬误  强制创立新分支,并且会笼罩原来存在的同名分支 git checkout -B new_branch设置本地分支关联近程分支 git push --set-upstream origin   合并分支: git checkout master git merge test   // test分支合并到master分支 git push origin master 查看分支      git branch -a删除本地分支  git branch -D branch-name删除近程分支  git push origin --delete branch-name          查看以后配置有哪些近程仓库 git remote -v 彻底删除文件--会删除对应提交记录(蕴含失常文件的提交历史)git filter-branch --force --index-filter 'git \rm --cached --ignore-unmatch test彻底删除.txt' \--prune-empty --tag-name-filter cat -- --allgit push --all --force 
批改分支名称 https://www.jianshu.com/p/cc740394faf5a. 重命名近程分支对应的本地分支git branch -m oldName newNameb. 删除近程分支git push --delete origin oldNamec. 上传新命名的本地分支git push origin newNamed.把批改后的本地分支与近程分支关联git branch --set-upstream-to origin/newName

2、高级操作

2.1、查看文件状态及日志

 git status 命令用于查看我的项目的以后状态。git status -s  查看详情 git diff   git diff --stat执行 git diff 来查看执行 git status 的后果的详细信息。git diff 命令显示已写入缓存与已批改但尚未写入缓存的改变的区别。git diff 有两个次要的利用场景。 尚未缓存的改变:git diff  查看已缓存的改变: git diff --cached  查看已缓存的与未缓存的所有改变:git diff HEAD  显示摘要而非整个 diff:git diff --stat退出git diff  : q查看全副分支的曾经commit然而没有push的: git log --branches --not --remotes  git cherry -v   只能查看未传送提交的形容/阐明 git log master ^origin/master  则能够查看未传送提交的详细信息 查看全副分支的全副的最近的commit: git log --branches --not --remotes --simplify-by-decoration --decorate --online查看日志 git log git log --oneline -3    以后分支的最近三次提交记录  git log --stat     https://www.cnblogs.com/fancyop/p/Git_Log.html 用来显示每次提交的上面列出所有被批改过的文件、有多少文件被批改了以及被批改过的文件的哪些行被移除或是增加了。 在每次提交的最初还有一个总结。  git reflog              所有分支的记录 git reflog --date=iso 

2.2、stash暂存

git stash:       备份以后的工作区的内容,从最近的一次提交中读取相干内容,让工作区保障和上次提交的内容统一。同时,将以后的工作区内容保留到Git栈中。git stash pop:   从Git栈中读取最近一次保留的内容,复原工作区的相干内容。因为可能存在多个Stash的内容,所以用栈来治理,pop会从最近的一个stash中读取内容并复原。git stash list:  显示Git栈内的所有备份,能够利用这个列表来决定从那个中央复原。git stash clear: 清空Git栈。此时应用gitg等图形化工具会发现,原来stash的哪些节点都隐没了。git stash apply  复原暂存之后不删除暂存git stash pop   复原暂存之后删除暂存git stash drop   从Git栈删除最旧的一个暂存

2.3、批改正文信息

git应用amend选项提供了最初一次commit的反悔。然而对于历史提交呢,就必须应用rebase了。 git rebase -i HEAD~3 示意要批改以后版本的倒数第三次状态。 这个命令进去之后,会进去三行东东: pick:******* pick:******* pick:******* 如果你要批改哪个,就把那行的pick改成edit,而后退出。 这时通过git log你能够发现,git的最初一次提交曾经变成你选的那个了,这时再应用: git commit --amend 来对commit进行批改。     :wq 批改完了之后,要回来对不对? 应用git rebase --continue git rebase --abortOK,所有都搞定了。   https://xiewenbo.iteye.com/blog/1285693
复原已删除分支https://blog.csdn.net/changerzhuo_319/article/details/81133533    git reflog --date=isogit checkout -b reback_remove_branch ddd94a4

2.4、撤销

git commit之后如何撤销
git log  查问提交记录如果在git commit之后,须要撤回commit个别有以下三种形式1.git reset --soft 版本号 git reset --soft HEAD^  //回到上一个版本git reset --soft 9478618f5b73885e3b5dd0ff946ae557b86c7560不删除工作区改变的代码,撤销commit,不撤销git add .2.git reset --mixed 版本号 git reset --mixed HEAD^  //回到上一个版本git reset --mixed 9478618f5b73885e3b5dd0ff946ae557b86c7560不删除工作区改变的代码,撤销commit,撤销git add .3.git reset --hard 版本号 git reset --hard HEAD^  //回到上一个版本git reset --hard 9478618f5b73885e3b5dd0ff946ae557b86c7560删除工作区的代码,撤销commit,撤销git add . 回到上一次commit的状态参考 https://blog.csdn.net/weixin_44843859/article/details/111385032

git revert 撤销版本
git revert -n 9478618f5b73885e3b5dd0ff946ae557b86c7560https://blog.csdn.net/yxlshk/article/details/79944535https://segmentfault.com/a/1190000012897697

3、问题

3.1、github增加ssh公钥

 ## github增加ssh公钥  git clone关上 git bashssh-keygen -t rsacat ~/.ssh/id_rsa.pub增加到 https://github.com/settings/keys   顺次点击"Setting -> SSH Keys"->"New SSH key"ssh -T git@github.comgit clone git@github.com:scott180/MyNotes.git

3.2、提交及更新失败

用git pull来更新代码的时候,遇到了上面的问题:error: Your local changes to the following files would be overwritten by merge:      xxx/xxx/xxx.php  Please, commit your changes or stash them before you can merge.  Abortinghttps://www.cnblogs.com/xd502djj/p/6973477.html解决办法:   办法1、暂存本地文件,下载最新代码。复原本地批改的代码,批改抵触的文件,提交代码。      git stash           //暂存git pull            //下载最新代码git stash pop        //复原暂存文件git status                      //查问状态git add xxx/xxx/Test.java       //提交文件   不能应用全副提交:(git add .)git commit -m "fix"             //正文git push                        //提交文件办法2、 放弃本地批改文件,下载最新代码git reset --hardgit pull
GIT拉取代码的时候提醒AUTHENTICATION FAILED FOR []解决办法:输出 git config --global credential.helper store  而后 git pull  输出账号密码或者革除明码git config --system --unset credential.helper
在git(小乌龟)向github近程推送(push)文件是会报一个异样 no supported authentication methods avaiable         https://blog.csdn.net/Maxiao1204/article/details/81476618解决办法:因为git(小乌龟)和Git的抵触咱们须要把乌龟git设置改过如下。找到TortoiseGit--》Settings--》Network将SSH client指向 D:\git\usr\bin\ssh.exe (我的Git工具装置在d盘)这里更改ssh 门路的时候,要把下面的“应用代理服务器” 勾打上,点击利用,再确定