0%

Git汇总

自己总结的思维导图Git

git基本命令

最近打算搞个web应用,练习一下新的技术栈,所以在github建了个私库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clone https://github.com/coding-by-feng/keep-yourself.git
## 查看当前分支有哪些修改
vi README.md
git status
## 提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
git add README.md
## 提交 执行之后需要写入备注
git commit -m "remark"
## 再次执行git status 提示无文件要提交
## git push 推送本地文件到github
## 回到过去
git log
git reset --hard XXXXX(当前版本指针)
## git reflog找回被重置冲刷掉之前的log,防止错误重置。
## 建立里程碑
## 在github new Releases.

git pull和git fetch

git pull
如果需要取回origin主机的erp01分支与本地的master分支合并,则写为:

1
git pull origin erp01:master

上面这句命令的意思相当于取回origin/erp01分支的代码在与当前的分支合并。
如果本地分支和远程分支之间建立了一种追踪的关系,那么我们git pull的时候就可以省略远程的分支名:

1
git pull origing

上面命令表明本地分支自动与队对应的origin主机追踪分支进行合并。
git 允许手动建立追踪关系:

1
git branch --set-upstream master origin/erp01

git fetch

1
git fetch <远程主机名>(origin)<分支名>

如果想要取回特定分支的更新就可以指定分支名;
所取回的更新,在本地主机上要用“远程主机名/分支名”进行读取。比如origin主机的erp01,就要用origin/erp01读取。
接下来可以用git branch -r命令查看远程分支,如果用到 -a选项,则表明查看所有的分支;
如果你需要合并分支,就可以用merge或rebase:

1
2
3
$ git merge origin/erp01
#或
$ git rebase origin/erp01

git pull和git fetch区别
这两个命令的主要区别在与:git pull是拉下更新后就自动合并本地分支,而git fetch是先吧更新拉下来,在用merge或rebase进行合并。

标签管理

1
2
3
4
5
git tag(查看标签)
git tag name(创建标签)
git tag -a name -m "remark"(指定备注创建标签)
git tag -d name(删除标签)
git push origin name(发布标签)

分支管理

https://www.jianshu.com/p/2e162b544878

1
2
3
4
5
6
git branch test1
git branch (查看分支)
git checkout test1 (切换分支)
git checkout master
git merge master(合并分支)
git branch -d test1(删除分支)

强制更新本地和强制提交覆盖

https://www.cnblogs.com/boundless-sky/p/10842700.html

git commit回撤

Git Reset 三种模式

Problem Solution

git仓库迁移(从github上拉下来的代码修改后push到自己的仓库)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
rm -rf .git        //删除.git

git init

git add .

git commit -m "desc"

git remote add origin https://github.com/xxxxxxx

git push -u origin master
————————————————
版权声明:本文为CSDN博主「LynnWonderLu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lynnwonder6/article/details/91892563

解决版本冲突

删除本地缓存(改变目录或文件成未track状态)

1
2
# 目录的所有子目录和文件
git rm --cached *

The following paths are ignored by one of your .gitignore files:

git add 时如果报错:

1
2
3
The following paths are ignored by one of your .gitignore files:
kiwi-common/kiwi-common-api/src/main/resources
Use -f if you really want to add them.

可以强制加入版本控制:

1
git add -f  xxx.文件

或者在.gitignore删除对应的非版本控制配置

github项目不记录贡献度,格子不绿

https://www.jianshu.com/p/408efb964213

Push failed Invocation failed Server returned invalid Response. java.lang.RuntimeException: Invocation failed Server returned invalid Response. at

JetBrains系列软件git提交失败,解决方案:
https://zhuanlan.zhihu.com/p/136365170

解决git pull/push每次都需要输入密码问题

https://blog.csdn.net/m0_37633370/article/details/90439113

解决hexo tag或者categories大小写不区分的问题

  • 打开.git目录下的config文件并修改ignorecase = true 为 ignorecase = false
  • 将.deploy_git文件夹下面的内容删掉
    • git rm -rf *
    • git commit -m ‘clean all file’
    • git push
  • 重新编译push
    • cd ..
    • hexo clean
    • hexo g -d

如果方法失效可以将tag随便改个名字重复上面步骤,然后改回来再重复一遍即可。

解决代码冲突

Your local changes would be overwritten by merge. Commit, stash or revert them to proceed.

Idea分支切换local changes存放在shelf

切换分支时选择SmartCheckout,本地的changes会被put到Shelf的Uncommitted changes里面,等下次分支checkout回来时,再将其Unshelve回来

LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

因为自己开了V2rayX的代理,将http和https请求代理到8001端口,所以需要添加一下配置:

1
2
git config --global http.proxy http://127.0.0.1:8001
git config --global https.proxy http://127.0.0.1:8001

There is no tracking information for the current branch

stackoverflow的解决方案