git简单总结

194 阅读6分钟

以前自己写项目的时候,使用git也就是克隆项目,创建分支,合并分支,然后推动项目什么的。但是目前在公司实习,需要多人协作开放一个项目,所以就需要考虑很多,需要学习一些git的其他操作。

我们开始项目的时候需要先创建git仓库,然后将仓库克隆下来,然后在开始写代码。

创建子分支?

git checkout -b 子分支名

将子分支合并到主分支上

//切换到主分支上
git checkout master
//合并分支
git merge 子分支名

如何将子分支推送到远程仓库中呢?

//切换到子分支
git checkout 子分支名
git branch //查看当前处于哪个分支
git push -u origin 子分支名称  //表示将本地的子分支提交到远程仓库中,且分支名字与子分支同名
//然后再将合并后的代码,push到远程仓库
git push

上传已存在的项目

git init
​
git add .
​
git commit -m "提交的描述"
​
git remote add origin 地址
​
// 这里需要注意一下,当本地仓库和远程仓库关联错误,那么需要执行这句命令取消关联,然后再次和正确的仓库关联。
git remote remove origin
git remote add origin 正确的地址
​
git push -u origin master

总体创建项目流程

//在github中创建见一个远程仓库
//在本地克隆仓库
git clone 地址
//创建项目架构
//将文件添加到暂缓区
git add .
//查看文件状态
git status
//将文件提交到本地
git commit -m "文件介绍"
//将文件提交到远程仓库
git push -u origin master
​
//接下来写是业务代码
//创建分支
git checkout -b 分支名
//......该分支业务完成
//提交子分支代码到远程仓库
git checkout 子分支
//查看处于哪个分支
git branch
//将该分支写的代码放入缓存区
git add .
//将该分支提交到本地
git commit -m '...分支完成'
//提交该分支到远程仓库
git push -u origin 子分支名称
​
// 下面一部分的代码一定不能和上面调换
//将分支合并到主分支
git checkout master
git merge 子分支名称
//将合并后的master分支提交到本地
git commit -m "...完成"
//提交更新后的主分支
git push

img

知乎大佬分享

先写代码,再创建分支。还是先创建分支然后在写代码都行,都可以同构分支提交。

提交的分支,它包含该分支提交的commit描述,并且也包括其他以前的文件。

我们如果想要合并该分支到主分支,我们还是得提交commit,但是提交的描述是子分支的提交描述。

先提交子分支,在合并子分支。这个顺序不能弄反,要不然还得合并。

当我们以前合并完分之后,再次修改该分支,我们还需要继续提交代码,然后进行合并分支。不然,他是不会再master分支展示修改后的代码的。。

image.png

git clone 与 git pull的区别

  • git clone:是在本地没有版本库的时候,从远程服务器克隆整个版本库到本地,是一个本地从无到有的过程。
  • git pull:在本地有版本库的情况下,从远程库获取最新commit 数据(如果有的话),并merge(合并)到本地。

如何解决上传github项目出现白色剪头不能打开的文件夹

因为这个仓库下写了三个项目(前,后,管理系统),直接在这三个项目的文件夹操作git命令,导致github这个文件夹上显示白色箭头并且不能打开。

原来是因为这个文件夹里面有.git隐藏文件,github就将他视为一个子系统模块了。

解决办法就是:

1、删除文件夹里面的.git文件夹

2、执行git rm --cached [文件夹名]

3、执行git add [文件夹名]

4、执行git commit -m "msg"

5、执行git push origin [branch_name]

解决以下错误

image.png 执行以下命令在提交

git config --global http.sslVerify "false"

image.png 执行下面语句,然后在推送

git remote rm origin

出现这个错误:error: RPC failed; HTTP 403 curl 22 The requested URL returned error: 403。他表示的是你没有可写权限。可以让仓库拥有者,给你开权限。

git clone 默认只克隆master分支,希望克隆其他分支

查看本地和远程仓库的所有分支

git branch -a

查看远程所有分支

git branch -r

如果想要拉取其他分支,可以这样。

如果想要将远程分支与本地分支联系起来,则执行(以feature分支为例)

git checkout -b feature origin/feature

或者使用-t参数,它默认会在本地建立一个和远程分支名字一样的分支

git checkout -t origin/feature

或者直接在vscode中切换分支。

左下角的位置 image.png

git代码写错分支

在git add 之前,我们不管在哪个分支都可以写代码,只要在git add 之前切换到正确的分支就行。如果在git add后,在切换分支会出现警告。 image.png

代码未提交(执行git add后, git commit前)时

// 先在错误的分支

git stash

git checkout 正确的分支

git stash pop

如果代码提交了,我们依旧执行上面的操作。 image.png 所以需要执行下面的这些操作。

git  checkout 不该提交代码提交了代码的分支

git reset HEAD~1  (最近一次提交放回暂存区, 并取消此次提交)

git stash  (把暂存的文件提交到git的暂存栈) 只有执行了这一步,才会删除以前分支的代码。

git checkout 该提交代码的分支

git stash pop

但是这样并不会删除git仓库中的不该提交改代码分支已经提交的代码。所以需要执行这个命令

1. 
// 到刚刚出错的分支
2. 
git push origin 错误分支

git commit执行后,就表示已经不会在提示有文件未提交了。如果没有commit,那么这里将会有提示。 image.png

TortoiseGit对比两个分支变更

image.png

为啥在.gitignore中添加了忽略文件后,文件依旧被提交

这是因为git已经追踪了该文件。如果是新创建的文件,然后在.gitignore中添加后,它将没有被git追踪,所以就不会被提交。

但是想要已经追踪的文件生效,那么我们就需要先清除全部追踪文件,然后在操作。

    .gitignore // 去缓存 添加 提交 
    git rm -r --cached . 
    git add . 
    git commit -m 'update .gitignore'

fatal: the remote end hung up unexpectedly

image.png 执行git config --local http.postBuffer 524288000再提交。

ERROR invalid commit message format

image.png 直接忽略这个提示git commit -a -m '提交语' --no-verify

以后遇到问题再补充。