共计 5981 个字符,预计需要花费 15 分钟才能阅读完成。
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 拉取 从近程拉取最新版本到本地,并主动合并 merge
git 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.html
git 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 -- --all
git push --all --force
批改分支名称 https://www.jianshu.com/p/cc740394faf5
a. 重命名近程分支对应的本地分支
git branch -m oldName newName
b. 删除近程分支
git push --delete origin oldName
c. 上传新命名的本地分支
git push origin newName
d. 把批改后的本地分支与近程分支关联
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 --abort
OK,所有都搞定了。https://xiewenbo.iteye.com/blog/1285693
复原已删除分支
https://blog.csdn.net/changerzhuo_319/article/details/81133533
git reflog --date=iso
git 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 9478618f5b73885e3b5dd0ff946ae557b86c7560
https://blog.csdn.net/yxlshk/article/details/79944535
https://segmentfault.com/a/1190000012897697
3、问题
3.1、github 增加 ssh 公钥
## github 增加 ssh 公钥 git clone
关上 git bash
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub
增加到 https://github.com/settings/keys 顺次点击 "Setting -> SSH Keys"->"New SSH key"
ssh -T git@github.com
git 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.
Aborting
https://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 --hard
git 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 门路的时候,要把下面的“应用代理服务器”勾打上,点击利用,再确定
正文完