如何将代码从win上传到GitHub

本文全面解析GitHub使用技巧,涵盖代码上传、分支管理、大文件处理、版本控制及常见问题解决,助您高效掌握GitHub核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)What is GitHub ? 

        GitHub 是一款免费的代码管理服务器,将自己的比较有价值的代码上传到GitHub是一个很不错的选择。但是,GitHub是一家美国公司,已经被微软收购了,所以目前使用GitHub还容易受到美国政府的政策所影响。例如,前两条伊朗就因为被美国拉黑,而无法继续使用GitHub,导致所有程序员的账户被封。

  • 检查本地是否有 Git SSH key
git ~/.ssh
ls

如下图所示:

然后执行 cat is_rsa.pub 即可看到ssh key

 

2) How to upload your code to GitHub ?

       https://www.cnblogs.com/mr-wuxiansheng/p/6974170.html

参考以上链接即可完成代码的上传。需要说明的是,使用windows下的shell工具比较容易些。也就是所谓的“Git Bash”,简单易用。

(1)git remote add origin git@github.com:978924688/Bootloader    //添加GitHub的远程仓库origin的地址

       注意:如果添加错了,可以使用 git remote rm origin 来删除重新添加

如果查看当前的remote地址,使用命令 git remote -v

(2)cd xxx   //进入到本地代码的文件夹下面(例如:cd /c/Users/LiuMing/Desktop/temp/

(3)git clone https://github.com/978924688/Bootloader.git   //将GitHub下项目名为Bootloader的文件克隆过来

(4)git add .  //将该文件夹下的所有文件都添加到本地代码仓库

(5)git commit -m xxx      // 备注上要上传的信息,然后上传到本地代码仓库

(6)git push -u origin master   //将本地代码上传到 GitHub 代码仓库

     【注意:如果执行第6条失败后,可以将 -u改为-f,此时会讲代码仓库的原有资源覆盖】

By the way: 要学会多用 git status 命令来查看代码的状态。

        以上操作中可能要求输入用户名和密码的操作,按要求输入即可!

其实,这些具体的操作命令,GitHub上面都有写的,而且写的很清楚,如下截图所示:

 

3. 代码如何上传到Git的branch分支?

 

3.1 创建分支

git branch brachName   //创建分支

git branch  //查看本地所有分支
git branch -a  //查看本地和远程的所有分支
git branch -m <oldbranch> <newbranch> //重命名本地分支
git branch -r //查看远程所有分支
git branch -d <branchname> //删除本地分支

git push origin --delete <BranchName> //删除远程仓库分支


3.2 切换分支

git checkout brachName


3.3 添加远程分支地址

git remote add origin https://github.com/978924688/brachName.git


3.4 将分支上传

git push origin brachName

有时,git push可能会冲突,如果强制上传,可以使用:

git push -f origin brachName

3.5 如何克隆branch上的代码

当1个仓库有3个分支时,但是克隆的remote地址只有1个,如何下来某一个分支的代码呢?方法如下:

就是在git clone后面加上 '-b' 参数,然后跟branch的分支名。

git clone -b branchName https://github.com/978924688/xxxx.git

 

4. GitHub 插件推荐

October

        octotree 可以说是我用过最好的 GitHub 插件了,因此我把它放在首位,给大家推荐一下。

平时你在使用 GitHub 浏览项目代码的时候,有没有总觉得不太方便,因为每次点击一个项目文件后,整个项目文件列表就会被隐藏,想查看其它文件只能回退后再次进入。

        octotree 就很好的解决了这个问题,它在 GitHub 页面的左侧上方添加了一个按钮,点击后会展开一个菜单,显示当前项目的整个文件夹结构。你可以浏览或下载单个源文件。

GitHub:ovity/octotree

插件推荐参考自:https://zhuanlan.zhihu.com/p/55722104

 

5. GitHub上传大文件

GitHub官方限制单次上传的文件最大不超过100M,当你想传比较大的项目,例如Linux的平台代码时,

就无法上传成功,这时就需要用到 Git LFS。

关于Git LFS的具体使用方法,链接如下:

https://git-lfs.github.com/

 

6. 工作区和暂存区

    6.1 工作区 (Working Directory)

    代码中我们直接操作代码的那个目录,就是我们的工作区;

    6.2 版本库 (Repository)

    工作区里面有一个隐藏的目录,就是 .git 目录,这个就是Git版本库 

Git版本库里面存了很多东西,其中最重要的就是称为 stage (或者叫 index)的暂存区,还有Git为我们创建的第一个默认分支
master,以及指向master的指针 HEAD

    其图示如下:

 

 

 

 

7. 代码版本管理

 

  7.1 pull repuest

    执行pull request 后会创建一个临时分支,你可以添加需要给你review的人,每个review人都通过后这个分支才会被Merge到真正的主线master里。
 

  7.2 创建版本

      创建版本只需2个步骤:

  •          git add xxx
  •          git commit -m "xxx"

 

 7.3 版本回退

    7.3.1 回退修改

    如果修改了 a.cpp文件,并执行了git add a.cpp到staged区,想取消这个暂存的修改,则有2种方法: 

  git restore --staged a.cpp

  或者执行:

git reset HEAD a.cpp
git checkout -- a.cpp

  如果只是修改了Working directory的内容,而没有git add,现在想回退修改,则如下操作:

git restore a.cpp
  •  场景1:当时改乱了你的工作区,想丢弃工作区的修改时,使用如下命令即可:
git checkout -- filename
  • 场景2:当你改乱了工作区的内容,而且还用git add 将其添加到了暂存区,想丢弃修改,需要分2步操作:

   第1步: git reset HEAD fileName     //此时暂存区内容被回退
   第2步: git checkout -- fileName      // 工作区内容被回退

 

 

  7.3.2 回退版本

  • 查询历史对应不同版本的ID ,用于回退使用

        注意这里没有使用 git log 命令,因为Git log会打印特别多无用信息

      

       使用git reflog命令查看所有的历史版本,获取你git的某个历史版本的id

       假设查到历史版本的id是2a20c9dc5c47499b5e52dece98b624de7b2ee818

  • 恢复到历史版本

git reset --hard 2a20c9dc5c47499b5e52dece98b624de7b2ee818
  • HEAD用法

Git里面的HEAD命令表示当前最新的版本ID

上一个版本则表示为 HEAD^

上100个版本则表示为 HEAD ~100

例如,回退到上一个版本:

git reset --hard HEAD^

 

  • 把代码推送到远程服务器

git push -f -u origin master
  • 重新更新就可以了

    git pull

     

8. 对比不同

 8.1  git diff 用法

    8.1.1 对比工作区与版本库的某文件找不同

 如果某码农修改了Working directory的Calcutator.cpp,想对比一下自己工作区的Calcutator.cpp与版本库里有何不同,

执行如下:

git diff HEAD -- a.cpp

  其中HEAD表示版本库里指向最新版本的指针
直接结果如下图所示:


 

    8.1.2 对比版本库的当前版本与上一个版本找不同

git diff HEAD HEAD^ -- Calculator.cpp

执行如下:

这时,'-'号代表a位置,即表示HEAD的变化。上图说明了HEAD版本比HEAD^版本多了一行红色标记部分。

 

9. 代码Merge

9.1 git fetch详解

git fetch是指从remote代码仓库中的HEAD代码拉取一份放到本地名为 FETCH_HEAD的branch下面。

例如remote的代码有其他人提交过,因此需要合并,这时,先使用git fetch将远程的代码拉取到本地,

如下操作:

git fetch origin master

执行git fetch之后,远程仓库的代码就被拉取到了FETCH_HEAD的branch下面,
注意,这时我们通过git branch命令是看不到该分支的,只能通过git branch然后敲Tab键才能看到。

切换到 FETCH_HEAD分支下查看远程的代码

git checkout FETCH_HEAD

如果代码检测无误后,便可以进行合并分支了。

先切换回原master分支,然后使用 git merge 进行合并代码

git checkout master
git merge FETCH_HEAD   //将远程的代码合并到本地
git push               //再将本地代码推送到远程服务器

9.2 git pull

git pull 是一个很危险的命令,它不会给你检查本地和远程代码的机会,直接拉取下来远程代码之后进行与本地自动合并。

git pull = git fetch + git merge

合并之后,再执行git push 便可以推送到远程服务器

合并服务器代码出现Conflict时:

例如:执行 git pull 之后,出现如下 CONLICT :

上图中看到,Conflict出现在 APP/peripheral_main.c中,直接用 vscode 打开此文件,如下所示:

非常的方便快捷。解决了手动Merge的烦恼!

 

10. Git 常见错误处理

(1)git push 时提示: error: src refspec master does not match any

    该问题的解决方法参考自:https://stackoverflow.com/questions/21264738/error-src-refspec-master-does-not-match-any

解决方法1:

git push origin HEAD:branchName

 

 

 

 

 

 

 

 

 

 

 

至此操作已全部完成,如果觉得有帮助的小伙伴,麻烦点个赞!谢谢!

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值