第一次用GitHub,上传代码网上看各种教程用git用半天,有点无语,明明github现在创建默认是main分支,那些人非要用master,我之前也什么没弄懂这个分支,稀里糊涂就复制粘贴了,怎么解决冲突也不说,我自己一堆骚操作瞎搞半天,遂作此文档记录学习
开头像怎么下载,设置ssh这些我就不讲了,自己看其他教程去
本文不适合纯新人看,适合新但没那么新的人看!!!纯新人还是去找那些图文并茂的文章看吧
一、使用git上传代码的步骤
假设我要上传的是main
分支,github新建仓库默认是main
分支
0、如果你的文件夹是git clone
下来的,跳过下面的1、2步,因为这些已经有了
1、git init
初始化
2、git remote add origin <https>
添加远程仓库的地址,如果后面push
的时候报错:fatal: unable to access 'https://github.com/...'
,可以选择git remote set-url origin <ssh>
3、git add .
或者 git add <filename>
将文件放入暂存区
4、git commit -m "消息内容"
将暂存区文件提交到本地git仓库
5、git branch
查看现在分支,如果现在是master
分支,你要上传到main
分支的话,则执行git branch -M main
6、git push origin main
把本地仓库上传到远程仓库,如果是远程仓库里面没文件的话(你创建仓库时点了创建README.md
,这个就算文件了)要使用 git push -u origin main
,中间多一个-u
7、如果你在本地创建了一个新仓库,并尝试将其与一个已有的远程仓库合并,会报错:fatal: refusing to merge unrelated histories
,表示 Git 认为你本地的历史与远程的历史没有共同的祖先,这时候使用git pull origin main --allow-unrelated-histories
拉取远程更改并允许不相关的历史合并,再选择推送git push origin main
即可
8、如果乱整一些操作之后git push
,报错Updates were rejected because the remote contains work that you do not have locally
,这个错误表明远程仓库的main
分支包含了你本地没有的更新;或者Updates were rejected because the tip of your current branch is behind
,这个错误表明你的本地main
分支落后于远程main
分支——执行git pull origin main
将远程仓库的更改拉取到本地,然后再git commit
9、如果在上述过程中出现了you have unmerged files
出现了冲突,则git status
查看并解决冲突,然后git add <conflicted-file>
标记冲突已解决
二、解决冲突
1、删除冲突的文件的步骤
有冲突?干脆直接删了好了()
1、删除文件 rm -rf <filename>
2、标记删除 git add <filename>
3、提交更改 git commit -m "Remove conflicting file"
4、推送更改 git push origin main
三、删除github上的文件
1、git pull origin main
将文件全部拉下来,这里是main
分支,想操作master
分支要改一下
2、dir
查看目录
3、git rm -r --cached <filepath>
删除指定路径的文件
4、git commit -m "删除了..."
提交删除操作说明
5、git push -u origin main
提交更新
四、git学习
在工作目录添加、修改文件
git add .
将文件放入暂存区(.
代表所有文件)
git commit -m "消息内容"
将暂存区的文件提交到git仓库(-m
代表提交信息)
git status
查看文件状态
untracked
未跟踪:通过git add
变成staged
状态
unmodify
已入库,但未修改
去处:1.
modified
已修改
2. 通过git rm
变成untracked
状态
modified
已修改
去处:1. 通过
git add
变成staged
状态
2. 通过git checkout
变成unmodify
状态
staged
已暂存
去处:1. 通过
git commit
提交到库中,重新变为unmodify
状态
2. 通过git reset HEAD filname
取消暂存,变为modified
状态
commited
已提交
忽略文件.gitignore
*.txt
会忽略所有 .txt
文件
!lib.txt
会确保 lib.txt
文件不被忽略
build/
会忽略 build
目录及其所有内容
/temp
会忽略项目根目录下的 temp
文件或目录