以前自己写项目的时候,使用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
先写代码,再创建分支。还是先创建分支然后在写代码都行,都可以同构分支提交。
提交的分支,它包含该分支提交的commit描述,并且也包括其他以前的文件。
我们如果想要合并该分支到主分支,我们还是得提交commit,但是提交的描述是子分支的提交描述。
先提交子分支,在合并子分支。这个顺序不能弄反,要不然还得合并。
当我们以前合并完分之后,再次修改该分支,我们还需要继续提交代码,然后进行合并分支。不然,他是不会再master分支展示修改后的代码的。。
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]
解决以下错误
执行以下命令在提交
git config --global http.sslVerify "false"
执行下面语句,然后在推送
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中切换分支。
左下角的位置
git代码写错分支
在git add 之前,我们不管在哪个分支都可以写代码,只要在git add 之前切换到正确的分支就行。如果在git add后,在切换分支会出现警告。
代码未提交(执行git add后, git commit前)时
// 先在错误的分支
git stash
git checkout 正确的分支
git stash pop
如果代码提交了,我们依旧执行上面的操作。
所以需要执行下面的这些操作。
git checkout 不该提交代码提交了代码的分支
git reset HEAD~1 (最近一次提交放回暂存区, 并取消此次提交)
git stash (把暂存的文件提交到git的暂存栈) 只有执行了这一步,才会删除以前分支的代码。
git checkout 该提交代码的分支
git stash pop
但是这样并不会删除git仓库中的不该提交改代码分支已经提交的代码。所以需要执行这个命令
1.
// 到刚刚出错的分支
2.
git push origin 错误分支
git commit执行后,就表示已经不会在提示有文件未提交了。如果没有commit,那么这里将会有提示。
TortoiseGit对比两个分支变更
为啥在.gitignore中添加了忽略文件后,文件依旧被提交
这是因为git已经追踪了该文件。如果是新创建的文件,然后在.gitignore中添加后,它将没有被git追踪,所以就不会被提交。
但是想要已经追踪的文件生效,那么我们就需要先清除全部追踪文件,然后在操作。
.gitignore // 去缓存 添加 提交
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
fatal: the remote end hung up unexpectedly
执行
git config --local http.postBuffer 524288000再提交。
ERROR invalid commit message format
直接忽略这个提示
git commit -a -m '提交语' --no-verify。
以后遇到问题再补充。