理论知识
1. repository(仓库):版本库,一个目录里面的所有文件可以被git管理起来,且每个文件的修改,删除,添加,git都能跟踪,用来还原某一时刻最满意的代码(自己的理解)。
2. commit(提交):将代码从暂存区提交到仓库(如下图右半部分:工作区(workspace)->暂存区(Index)->仓库(Repository))先使用git add .(所有文件用点,单个文件用文件名)将代码从工作区(workspace)存到暂存区(Index),在使用git commit将代码从暂存区(Index)提交到仓库(Repository)。
3. branch(分支):多人同时开发,其作用能使代码互不干扰,且后期可合并成一个master分支。
workspace(工作区)
Index(暂存区)
Repository(仓库)
理论之后,如何实战!
1.首先创建github账号
XXX
过程省略
创建好github账号,之后需要使用此账号就得需要key,因此这时候创建key!
2.创建SSH KEY
ssh-keygen -t rsa -C "your_email@example.com"
id_rsa.pub是公钥,可以放在github网站上!
(1)在github的网站上,选择个人头像,再点击settings
(2)选择SSH and GPG keys -> New SSH Key
(3)添加title与SSH Key
(4)验证是否成功,在git bash输入,并且输入yes!
ssh -T git@github.com
创建好key之后,就是上传代码。
3.上传代码(有些乱,后面整理)
(1)添加远程仓,选择 + -> New repository
注意其中的README file、gitignore、license等根据你想要的方式都选上!
需要代码:
# create a new repository on the command line
touch README
git init
git add .
git commit -m "first commit"
git branch -M main
git remote add origin https://XXX
git push -u origin main
# push an existing repository from the command line
git remote add origin https://XXX
git push -u origin main
# remote
git remote -v # 检查远程仓配置
git remote rm origin # 删除本地配置
git remote add origin XXXX # 设置相关地址
# git作为分布式控制系统,需要填写用户名和邮箱作为标识
git config --global user.name "YOUR NAME" # 你的github登录名字
git config --global user.email "YOUR EMAIL" # 你的github登录邮箱
git init # 将当前目录作为git仓库,初始化
git add <filename>or<.> # 将文件从工作区添加到暂存区,.代表所有文件,<filename>代表一个文件文件名
git stash # 暂存区,修改代码,不想提交,可以先放到暂存区
git stash pop # 回滚暂存区存储的代码
git commit -m "XXX"("first commit") # 提交版本
git commit -a -m "XXX" # 修改了很多文件,但不想每一个都add,想commit自动来提交本地修改,使用 -a
git clone ssh://XXXX # 从服务器克隆一个库
git push ssh://XXX # 将修改之后的代码推送至服务器
git pull http://XXX # 将当前分支自动与唯一一个追踪分支进行合并
git rm file # 删除文件
git branch XXX # 建立一个新分支XXX (主分支为master)
git branch -a # 查看所有分支
git branch -d XXX # 删除本地分支XXX
git push origin --delete XXX # 删除git服务器上的XXX分支
git checkout XXX # 更改分支
git checkout. # 回滚至上一次提交的版本
git merge XXX # 合并分支
git status # 查看提交状态
git log # 查看历史记录
git reset --hard HEAD^(填写相应的版本号) # 将当前版本退回到上一个版本
git reset --hard origin/$brach # 放弃修改,回归修改前的版本,场景:合并分支到master,合并后发现没有权限,这时代码已经修改,push时都会报错。让有权限的人合并,我这里的合并已经不需要了,使用这个命令放弃之前的合并。)
git reflog # 获取所有版本的版本号
4.可能出现的问题
(1) rejected
error: failed to push some refs to 'XXX'
hint:XXXXXX
hint:XXXXXX
hint:XXXXXX
hint:XXXXXX
说明本地仓和远程仓版本不一致! 解决:可以通过git pull 先将本地仓与远程仓更新一致,可以使用git fetch,看情况选择合并,或者将本地库修改过文件备份,git pull后再重新修改,之后git push。
或者直接git push -f强制上传。
git pull --rebase origin main
git push -u origin main
(2) remote rejected
error: failed to push some refs to 'XXX'
解决:打开电脑 C,找到 known_hosts 文件,然后清空这样代码就可以正常提交了
(3) remote: error: GH001: Large files detected. You may want to try Git Large File Storage - XXX
说明你的文件大于100M。
解决:缩小你的文件,之后再继续code。
(4) fatal: Authentication failed for 'XXX'
解决:
git config --global http.sslVerify "false"
之后再执行:
git push -u origin main
(5) remote: Invalid username or password
解决:
a.点击账号头像
b.点击Settings
c.点击Developer settings
d.选择Personal access tokens 与 Generate new token
之后会产生一个新的token,如下图打马赛克的部分,复制即可使用
(6) github.com port 443 after 21092 ms: Timed out
解决:取消代理
git config --global --unset https.proxy
git config --global --unset http.proxy
4.上传代码流程
1)利用github创建好仓库repositories
2)在打开命令窗口,输入
git config --global user.name "YOUR NAME" # 你的github登录名字
git config --global user.email "YOUR EMAIL" # 你的github登录邮箱
3)把你仓库之前的代码克隆下来
git clone https://github.com/xxxx/xxx.git
4)进入克隆代码的项目中并且修改或者添加代码,重新初始化
git init
git add .
5)提交代码
git commit -m "XXX"(first commit or update)
6)把修改后的代码传到远端
git push https://github.com/xxxx/xxx.git
成功!