git clone->git commit->git push流程介绍

本文详细介绍了如何在GitHub上创建新的仓库,并通过实例演示了如何从GitHub克隆仓库到本地、添加新文件、配置用户信息、提交更改及推送至远程仓库的全过程。

首先到github上面创建一个仓(或者下载其他人创建的也行)。
github新增仓库地址:https://github.com/new
新增仓库默认为空的,复制仓库链接后执行git clone [url]下载到本地
在这里插入图片描述

[root@优快云 /home/Sudley/github]#git clone https://github.com/Sudley/git_learning.git
Cloning into 'git_learning'...
warning: You appear to have cloned an empty repository.
[root@优快云 /home/Sudley/github]#ls
git_learning
[root@优快云 /home/Sudley/github]#cd git_learning/
[root@优快云 /home/Sudley/github/git_learning]#ls
[root@优快云 /home/Sudley/github/git_learning]#

将github仓库clone到本地,A表示仓库节点
在这里插入图片描述
本地仓库新增bs.html文件

[root@优快云 /home/Sudley/github/git_learning]#vi bs.html
[root@优快云 /home/Sudley/github/git_learning]#git status  #查看仓库状态,可以看到新增文件是未跟踪状态
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       bs.html
nothing added to commit but untracked files present (use "git add" to track)
[root@优快云 /home/Sudley/github/git_learning]#git add bs.html
[root@优快云 /home/Sudley/github/git_learning]#git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)  #若不想提交此新文件可以使用git rm --cached bs.html移除上面add操作的效果
#
#       new file:   bs.html
#
[root@优快云 /home/Sudley/github/git_learning]#git commit -m "add bs.html"

*** Please tell me who you are.

Run

  git config --global user.email "you@example.com"
  git config --global user.name "Your Name"

#to set your account's default identity.
Omit --global to set the identity only in this repository.

fatal: unable to auto-detect email address (got 'root@bogon.(none)')
[root@优快云 /home/Sudley/github/git_learning]#git config --global user.name ******
[root@优快云 /home/Sudley/github/git_learning]#git config --global user.email ******@**.com
[root@优快云 /home/Sudley/github/git_learning]#git commit -m "add bs.html"
[master (root-commit) 67ffb78] add bs.html
 1 file changed, 30 insertions(+)
 create mode 100644 bs.html

[root@优快云 /home/Sudley/github/git_learning]#git status
# On branch main
# Your branch is ahead of 'origin/main' by 1 commit.   #提示本地分支比远程分支多一个commit
#   (use "git push" to publish your local commits)
#
nothing to commit, working directory clean
[root@优快云 /home/Sudley/github/git_learning]#

此时远程仓和本地仓的节点状态如下,本地的比远程仓多一个节点
在这里插入图片描述
git push将本地仓修改推送到远程仓

[root@优快云 /home/Sudley/github/git_learning]#git push
Counting objects: 4, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 757 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/Sudley/git_learning.git
   9df625b..cd78fde  main -> main
[root@优快云 /home/Sudley/github/git_learning]#git status
# On branch main
nothing to commit, working directory clean
[root@优快云 /home/Sudley/github/git_learning]#

在这里插入图片描述
此时查看github上面发现bs.html已添加成功
在这里插入图片描述

Tips:新增文件时需要先git add后再commit,如果是修改原文件且一次性提交所有修改则可以使用git commit -am命令替代git add xx和git commit -m。

<think> 我们正在讨论Git操作的正确流程。用户提供了几个可能的流程选项,并询问哪个是正确的,或者是否有其他流程。我们需要结合Git的基本使用场景和最佳实践来回答。 首先,让我们回顾一下Git的基本操作: - init: 初始化一个新的Git仓库(通常在项目开始时执行一次) - pull: 从远程仓库获取变更并合并到当前分支(通常在开始工作前执行,以获取最新代码) - add: 将工作区的变更添加到暂存区 - commit: 将暂存区的变更提交到本地仓库 - checkout: 切换分支或恢复工作区文件 - push: 将本地分支的提交推送到远程仓库 在团队协作中,通常的工作流程如下: 1. 初始化(init)或克隆(clone)仓库:如果是新项目,则初始化;如果是已有项目,通常使用clone(它包含了init和pull的操作)。 2. 在开始工作前,确保当前分支是最新的:使用pull拉取远程仓库的最新变更。 3. 创建一个新分支(可选,但推荐):使用checkout -b 新分支名,这样可以在独立的分支上开发,而不影响主分支。 4. 进行代码修改。 5. 将修改的文件添加到暂存区:add。 6. 提交更改到本地仓库:commit。 7. 如果需要,可以多次重复步骤4-6。 8. 在推送之前,再次拉取远程仓库的变更(如果有必要,特别是多人协作时):先切换回主分支(如main)pull,然后切回自己的分支合并主分支的变更(或者使用pull,如果设置了上游分支),以避免冲突。 9. 推送本地分支到远程仓库:push(如果是第一次推送,需要设置上游分支)。 如果是在已有的分支上工作(比如主分支,但不推荐直接在主分支上开发),流程可以简化为: pull -> add -> commit -> pull(再次拉取以避免冲突) -> push 但是,直接在主分支上开发并推送是不推荐的做法,因为这样容易导致主分支不稳定。推荐使用特性分支工作流。 因此,针对用户提供的两个流程流程1: init->pull->add->commit->checkout->push - 这个流程中,在commit之后突然checkout(切换分支),然后push,这可能会导致推送的不是当前分支。而且,在init之后,通常需要关联远程仓库(使用remote add)才能pull,但用户没有提到。 流程2: init->commit->pull->checkout->add->commit->push - 这个流程中,在init之后直接commit,然后pull,这可能会因为本地有提交而需要合并,但此时还没有关联远程仓库,pull会失败。而且顺序混乱。 更常见的正确流程应该是: 场景1:新项目初始化并推送到远程仓库(第一次推送): 1. git init 2. 添加文件,然后git add . 3. git commit -m "initial commit" 4. git remote add origin <远程仓库URL> 5. git push -u origin master/main 场景2:在已有项目上工作(已有远程仓库): 1. git clone <远程仓库URL> (这代替了init和pull,因为clone会初始化并拉取代码) 2. git checkout -b feature-branch (创建并切换到新分支) 3. 修改代码 4. git add . 5. git commit -m "message" 6. git checkout main (切换回主分支) 7. git pull (更新主分支) 8. git checkout feature-branch 9. git rebase main (或git merge main) // 将主分支的最新变更整合到当前分支 10. git push origin feature-branch 或者,在步骤6-9也可以这样:在推送前,先拉取远程主分支的最新代码,然后在特性分支上合并主分支,解决冲突后再推送。 因此,用户提供的两个流程都不完全正确。我们需要给出一个标准流程。 注意:用户提到的是操作流程,并没有具体场景,但结合之前的对话历史,用户似乎对分支管理和推送流程有疑问。 我们总结一个标准的日常开发流程(已有远程仓库,非首次): 1. 拉取远程最新代码(确保当前在要开发的分支上,比如主分支): git checkout main # 确保在主分支 git pull # 获取最新 2. 创建并切换到新分支(推荐): git checkout -b feature-branch 3. 开发:修改、添加文件 ... coding ... 4. 将修改添加到暂存区: git add <file> 或 git add . 5. 提交到本地仓库: git commit -m "commit message" 6. (可选)重复3-5步直到功能完成 7. 推送前,再次拉取主分支最新代码(因为在此期间可能有别人提交): git checkout main git pull 8. 切回特性分支,合并主分支(或rebase): git checkout feature-branch git merge main # 或 git rebase main 9. 解决可能出现的冲突 10. 推送到远程仓库(如果远程没有该分支,需要设置上游): git push -u origin feature-branch # 第一次推送需要-u,之后可以直接git push 11. 在代码托管平台(如GitHub)上发起Pull Request(或Merge Request),等待代码审查和合并。 因此,对于用户的问题,我们回答:上述两个流程都不完全正确。正确的流程应该是基于分支的工作流,推荐使用clone(代替init和pull)、创建分支、add、commit、合并主分支最新代码、push。 另外,如果用户是在主分支上直接开发(不推荐),那么流程可以是: git checkout main git pull ...修改... git add . git commit -m "..." git pull (再次拉取,避免在提交期间有新的提交) git push 但是,由于有之前的对话,我们强调分支管理的重要性,所以推荐使用特性分支。 根据用户提供的引用,我们可以参考: 引用[1]提到了git commit -m和git commit --amend,这是提交操作的细节。 引用[2]介绍git checkout的多种用法,包括切换分支和撤销修改。 引用[3]展示了在commit之后的状态,以及pull/push等操作。 引用[4]讲述了撤销操作,如amend。 因此,在回答中,我们可以引用这些内容来支持我们的流程说明。 现在,我们按照要求组织回答。 </think> ### Git操作的标准流程与最佳实践 🌟 Git操作的正确流程取决于具体场景,以下是不同情况的标准操作序列: #### 一、全新项目初始化流程(本地创建) ```mermaid graph LR A[git init] --> B[创建文件] B --> C[git add .] C --> D[git commit -m '初始提交'] D --> E[git remote add origin URL] E --> F[git push -u origin main] ``` **说明**: 1. `git init`初始化空仓库 2. 工作区修改后`git add`暂存变更[^1] 3. `git commit`创建本地提交(此时尚未关联远程仓库)[^1] 4. 关联远程仓库后首次推送需`-u`参数建立追踪 #### 二、协作开发标准流程(推荐分支策略) ```mermaid graph TB A[git clone URL] --> B[git checkout -b feat] B --> C[修改代码] C --> D[git add .] D --> E[git commit -m '说明'] E --> F[git pull origin main] F --> G[解决冲突] G --> H[git push origin feat] ``` **关键步骤解析**: 1. `clone`替代`init`:直接获取远程仓库(含完整历史)[^3] 2. `checkout -b`:创建特性分支隔离开发[^2] 3. `pull before push`:推送前先拉取最新代码避免冲突[^4] 4. `push`到特性分支而非主分支 #### 三、紧急修复流程(hotfix分支) $$ \text{main} \xrightarrow{\text{checkout -b hotfix}} \text{hotfix} \xrightarrow{\text{commit}} \text{远程仓库} $$ ```bash git fetch origin git checkout -b hotfix main # 基于main创建修复分支 # 紧急修改代码... git add . git commit -m '修复XXX漏洞' # 引用[1]的提交规范 git push origin hotfix # 推送到远程hotfix分支 ``` #### 四、用户提供流程的问题分析 | 用户流程 | 主要问题 | |---------|---------| | `init->pull->add->commit->checkout->push` | pull需先关联远程仓库(缺失`remote add`)<br>checkout在commit后导致分支切换混乱 | | `init->commit->pull->checkout->add->commit->push` | 初始commit后pull会触发合并冲突<br>add/commit顺序颠倒 | > **最佳实践原则**: > 1. 新项目用`clone`替代`init`+`pull`组合[^3] > 2. 先创建分支再开发(`checkout -b`在add之前)[^2] > 3. 每次push前执行`pull`更新本地代码[^4] > 4. 特性分支推送需通过PR合并到主分支
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值