git提交代码的基本操作及避坑指南

基本使用

1.初始化一个本地仓库(第一次提交需要初始化):

git init

2.将README.md文件添加到缓存(第一次需要添加该文件)

git add README.md

3.将文件添加到缓存(.代表所有文件)

git add .

4.提交缓存中的代码至本地仓库

git commit -m "本次提交的相关描述"

5.关联远程仓库(第一次需要关联,后期只需要直接提交)

git remote add origin 远程仓库地址

6.提交 本地仓库 的代码至 远程仓库master分支 下

git push -u origin master

细节

  1. 因为git是分布式版本控制系统,所以需要填写用户名和邮箱作为标识,可以设置全局的,也可以对某个仓库指定不同的用户名和邮箱。

    局部设置:

    git config user.name 你的用户名
    git config user.email 你的邮箱
    

    全局设置:

    git config --global user.name 你的用户名
    git config --global user.email 你的邮箱
    

    查看配置:

    git config --list
    
  2. 每次提交代码前最好先拉取一下服务器的代码,用以更新本地代码,避免覆盖他人的代码。(默认拉取master分支的代码)

    git pull
    

    拉取dev分支的代码:

    git pull origin dev
    
  3. 拉取代码后,查看当前项目中有哪些文件被修改过(vscode的项目后面对应的字母)

    git status
    
    • Untracked: 未跟踪,此文件在文件夹中,但并没有加入到git库,不参与版本控制。通过git add 状态变为Staged
    • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
    • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
    • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
  4. 将状态改变的代码提交至缓存

    提交全部修改过的文件

    git add .
    

    提交指定文件

    git add 文件名称
    

    提交指定路径下的所有 被修改过的被跟踪代码文件

    git add -u 路径
    

    提交指定路径下的所有 被修改过的未被跟踪代码文件

    git add -A 路径
    

报错

  1. 在第一次提交时(git push -u origin master),我报了如下错误

    To ***提交地址***
     ! [rejected]        master -> master (fetch first)
    error: failed to push some refs to '提交的地址'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    

    原因:因为第一次提交时没有将README.md文件提交到缓存区,而GitHub上的README.md文件又不在本地代码目录结构中,导致项目目录冲突,所以可以先拉取合并一下远程仓库上的代码再进行提交。

    拉取代码:

    git pull --rebase origin master
    
  2. 拉取项目时如下错误

    $ git pull --rebase origin master
    error: cannot pull with rebase: You have unstaged changes.
    error: please commit or stash them.
    

    原因:因为本地有更改的代码没有提交,可以提交或者暂存后在拉取代码。

    解决方式:

    提交:

    git add .
    git commit -m "提交描述"
    

    暂存:

    git stash
    
  3. 关联至远程仓库时(git remote add origin 远程仓库)报如下错误

    error: remote origin already exists.
    

    原因:远程源已经存在。

    解决方式:先查看是否是我们需要的远程仓库,如果是,直接push即可;如果不是,则删除现有的远程仓库,然后再重新关联新的远程仓库即可。

    查看远程仓库的信息:

    git remote -v
    

    删除远程仓库:

    git remote rm origin
    

补充知识

Linus 发现在命令行下选择要提交的修改,是一件很麻烦的事情,所以,Linus 就在 commit 之前,发明了一个暂存区的概念,可以随意的把各种修改的文件放进去,这样就可以用多个指令精确的挑选出我们需要提交的所有修改,然后再一次性的(原子性的)提交到版本库,问题就完美的解决了 。
参考链接:

https://blog.csdn.net/s_y_w123/article/details/112465793

参考链接(上传本地代码至GitHub):

https://zhuanlan.zhihu.com/p/193140870

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值