1. 创建一个 GitHub 仓库
- 登录到 GitHub。
- 点击右上角的 “+” 按钮,然后选择 “New repository”。
- 填写仓库名称和描述,选择是否公开,最后点击 “Create repository”。
2. 在本地初始化 Git 仓库(如果尚未初始化)
在你的工程目录中打开终端,执行:
git config --global user.name "zhiqianzheng"
git config --global user.email "774065267@qq.com"
git init
git add .
3. 添加远程仓库
将你刚创建的 GitHub 仓库添加为远程仓库,执行:
git remote add origin https://github.com/你的用户名/仓库名.git
将 你的用户名
和 仓库名
替换为实际信息。
git remote -v #确认仓库是否设置好,如果没有设置好,用这条命令设置:
git remote set-url origin git@github.com:zhiqianzheng/CDKJ_wifi_new.git
要将远程的 main
分支清空并重新推送本地的 master
分支内容,可以按照以下步骤操作
4. 增删改查
当你想把本地的分之推送到远端仓库main仓库的时候,如果
如果你还没有提交过文件,可以使用以下命令:
git add .
git commit -m "Initial commit"
git status
git diff HEAD "文件名" #查看某个文件在上一次commmit之后修改了哪些地方
git checkout – file #舍弃对文件修改,让该文件恢复到上次提交时候的状态
git reset HEAD "文件名"
git reset HEAD <file> 可以用来取消暂存(unstage)一个文件。其实就相当于撤销 git add <file>这个操作
git branch -a查看所有分支
git branch "分支名" #切换到某个现有本地分支
git checkout -b dev #创建并切换到dev分支(等价于git branch dev 加 git checkout dev)
git merge #git合并分支
当我们新建分支并做完工作之后,想要把分支提交至master,只需要切换到master仓库,并执行git merge 分支名就可以了。如我们在分支中新建了一个f.c和test.c的文件,然后在使用git checkout master切换到主分支master,再使用git merge dev将其合并
git reset --hard 50a327e4190eb90f17f1abfa836e3aa969355f23 #切换到指定的某次提交版本
git reflog查看所有提交过的log和哈希值,git reset --hard
+哈希值,可以回到任意一个历史提交的版本
git push origin --delete ”远程分支名“ #删除远程某个分支
git branch -D “本地分支名” #删除本地分支
5. 克隆与推送
git clone “云端仓库地址” #从云端仓库拉代码在,clone时默认是把当前地址里面的所有分支全部clone下来,但是只有master会显示
git push -u origin master #推送本地git仓库到github云端仓库,
第一次使用push的时候加上-u,以后可不加
如果你使用的是主分支以外的分支,替换 master
为对应的分支名称。
6. 输入凭据
如果在推送的时候提示这种失败
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
这个错误提示表示你没有使用 SSH 密钥进行身份验证。你需要生成 SSH 密钥并将其添加到 GitHub 账户。请按照以下步骤操作:
1.生成 SSH 密钥: ssh-keygen -t rsa -b 4096 -C "774065267@qq.com" 按照提示操作,通常直接按回车即可使用默认路径。
2.添加 SSH 密钥到
ssh-agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa
3.检查是否已经生成了 SSH 密钥:ls ~/.ssh,如果没有 .ssh/id_rsa
或 .ssh/id_ed25519
,需要生成 SSH 密钥:
如果已经成功生成了秘钥,则把秘钥复制下来,cat ~/.ssh/id_rsa.pub #将结果复制下来
4.将公钥添加到 GitHub:
- 登录 GitHub。
- 进入 Settings > SSH and GPG keys。
- 点击 New SSH key,将复制的公钥粘贴进去,给它起个名字,点击 Add SSH key
5.确保ssh 和github网站是否连接正常6.再次推送:git push -u origin master:main
git checkout --orphan temp_branch # 创建一个新分支
-
git commit --allow-empty -m "Clearing main branch"
git push origin temp_branch:main --force # 强制推送到远程的 main
git checkout master # 切换回 master -
按照提示操作,通常直接按回车即可使用默认路径。
-
添加 SSH 密钥到 ssh-agent:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
-
复制公钥:
cat ~/.ssh/id_rsa.pub
将输出的内容复制。
-
将公钥添加到 GitHub:
- 登录 GitHub。
- 进入 Settings > SSH and GPG keys。
- 点击 New SSH key,将复制的公钥粘贴进去,给它起个名字,点击 Add SSH key。
-
再次推送: 现在再次尝试执行推送命令:
git push -u origin master:main
如果系统提示输入用户名和密码,输入你的 GitHub 用户名和密码(或访问令牌)。
完成后,你的工程应该就会出现在 GitHub 的仓库中。
1. 使用个人访问令牌(PAT)
-
创建个人访问令牌:
- 登录到你的 GitHub 账户。
- 转到 Settings > Developer settings > Personal access tokens > Tokens (classic)。
- 点击 Generate new token,选择所需的权限(例如 repo 权限),然后生成令牌。
-
在推送时使用令牌:
- 当你被提示输入用户名时,输入你的 GitHub 用户名。
- 当你被提示输入密码时,输入你生成的个人访问令牌。
推送成功后:
将本地zzq_wifi_app_develop推送到云端,云端分支同名
将本地master分之推到远端的main分支
其他:
如何查看本地仓库是否和远端仓库内容完全一致:
执行git pull,如果提示 Already up to date.
通常表明内容相同,但为了更进一步确认,可以使用以下方法:
1.执行git status,如果输出中包含 Your branch is up to date with 'origin/main'.
,则确认本地和远程分支完全一致。
2.执行git diff origin/main,如果没有输出,则说明本地和远程的文件内容完全一致。
3.git log --oneline
--------------------------------------------------------------------------------------------------------------------------------
我在最新的一次提交的时候,少提交了一个文件bak_RemoteCli,我现在想把这个文件也提交上去,但是我不想单独再生成一条提交条目,我想把对这个文件的提交融合到The way of recording attribute package data is optimized这条提交里,该怎么办:
要将漏掉的文件 bak_RemoteCli
提交到最新的提交记录中,而不生成新的提交记录,可以通过以下步骤操作,这被称为 "amend"(修改提交),具体步骤如下
1. 暂存漏掉的文件将漏掉的文件 bak_RemoteCli
添加到暂存区 git add bak_RemoteCli
2.运行git status,确认它已被暂存,你应该看到 bak_RemoteCli
文件在 Changes to be committed
部分
3,运行以下命令git commit --amend,将新添加的文件融合到上一次提交中,进入提交信息编辑界面时,会显示你之前的提交信息:The way of recording attribute package data is optimized,你可以修改提交信息,也可以直接:wq保存退出,保持提交信息不变
4,由于 git commit --amend
修改了提交记录的哈希值,你需要强制推送到远程仓库,git push origin main --force
5,推送后,执行git status,如果正确,你会看到最新的提交记录仍然是The way of recording attribute package data is optimized,但这条提交记录已经包含了 bak_RemoteCli
文件
6,执行git show确认 bak_RemoteCli
文件已经包含在最新的提交中
注意事项
-
避免多人协作冲突:
- 如果你和其他人共享这个分支,
--force
推送可能覆盖其他人的提交,确保没有其他人基于你的最新提交进行开发。
- 如果你和其他人共享这个分支,
-
仅修改最后一次提交:
git commit --amend
只能修改上一次提交。如果需要修改更早的提交,需要用git rebase
。
-
小心强制推送:使用
--force
推送之前,确保你的代码已经同步了远程分支。
---------------------------------------------------------------------------------------------------------------------------------