git提交项目到github

Git操作步骤

1
初始化->绑定远程仓库->拉取最新版本(merge)->提交到暂存区->push到远程仓库

初始化:git init

提前创建好和远程分支名同名的分支(需要在第③步之前完成该操作)

绑定远程仓库:git remote add 名称 地址

拉取最新版本(merge):git pull --rebase 名称 分支

注意:合并是将相同分支名的分支进行合并的

git pull <远程主机名> <远程分支名>:<本地分支名>

git pull 默认是git fetchgit merge结合

可以加上如下参数--rebase

git pull --rebase <远程主机名,可以是别名> <远程分支名>:<本地分支名>的结合方式是git fetchgit rebase结合

提交到暂存区:git add . git commit -m "备注"

push到远程仓库:git push -u 名称 分支

分支需要本地和远程的分支名一样(即远程有与本地同名的分支)

使用了-u选项,Git会将本地分支与指定的远程分支进行关联,在以后的推送或拉取操作中,只需运行git pushgit pull,Git就会知道你要推送或拉取哪个分支

git log命令

git log查看commit的历史,最近的更新排在上面

git log 分支名查看指定分支名的提交历史记录

git log --graph绘制一个ASCII图像来展示提交历史的分支结构(重点使用

git tag命令

  1. 确保通过了git addgit commit提交到了本地仓库

  2. 使用git log在提交历史中找到响应的commit。复制该commit的哈希值

  3. 使用git tag命令创建新的标签(轻量标签),并将其与指定的commit关联

    轻量标签:

    git tag <tag_name> <commit_hash>

    <tag_name> 替换为您要为 commit 创建的标签名称,<commit_hash> 替换为相应 commit 的哈希值。

    附注标签:

    git tag -a <tag_name> <commit_hash> -m "<tag_message>"

    <tag_name> 替换为标签名称,<commit_hash> 替换为相应 commit 的哈希值,<tag_message> 替换为标签的消息或说明。

  4. 可以使用 git tag 命令检查已创建的标签列表
    git tag

  5. 将本地的标签推送至远程仓库

    git push origin <tag_name>

    或者下面命令,推送所有标签至远程仓库

    git push origin --tags

git rebase 和git merge比较

git rebase 目标分支:变基,从当前的分之和目标分支的最近公共祖先结点开始,将当前的分支新产生的结点依次与该公共结点合并,并在所有结点都合并完成之后,将当前分支指向最新的合并之后的结点;(最终效果:合成一条分支

git merge 目标分支:将当前分支最新结点与目标分支最新结点合并,并将当前结点指针指向合并之后的、新产生的结点

理解完上面两条命令后,重新看一下最上面的git pull命令的使用格式

注:在解决冲突的时候,用 merge 只需要解决一次冲突即可,简单粗暴,而用 rebase 的时候 ,需要一次又一次的解决冲突。

git pull

git pull <远程主机名> <远程分支名>:<本地分支名>

  • git pull 默认是git fetchgit merge结合

  • 可以加上如下参数--rebasegit pull --rebase <远程主机名,可以是别名> <远程分支名>:<本地分支名>的结合方式是git fetchgit rebase结合

  • 尝试将远程仓库的修改合并到本地仓库,但是本地仓库的文件也被修改过了,则git pull会失败(显示为error: local changes to the following files would be overwritten by merge:

解决方法:将本地的修改的文件git commit到本地仓库,再使用git pull拉取(默认是git fetchgit merge结合) 。接着只需要打开修改的文件,手动将修改的地方进行修改。修改完,最好再将修改后的结果推送至远程仓库

  • 在使用git pull成功后可能会发生冲突,发生冲突后,Git能够自动合并您的修改和远程仓库的修改,它会尝试合并并生成一个合并提交。在这种情况下,Git会跳转到让您编写合并提交的备注信息的界面。但是,如果自动合并失败(即有冲突,提示未conflict),则不会自动跳转,而是报错,然后需要自己手动编辑文件,修改冲突,然后git add,再git commit,再git push到远程仓库

git add 之后git reset HEAD

git reset HEAD <file>:取消 Git 中已经添加add但尚未提交commit的内容

  • <file> 是要取消添加的文件名或路径

git reset HEAD .:取消添加所有文件

git revert和git reset回退

git revert <commit>

  • <commit> 是您希望回退到的目标版本的提交哈希值或引用
  • 创建一个新的提交,用于撤销指定版本之后的所有更改。这意味着撤销操作本身会成为 Git 历史的一部分,可以追溯到撤销具体哪些更改。

git reset <commit>

  • <commit> 是您希望回退到的目标版本的提交哈希值或引用
  • 命令会修改 Git 历史,将当前分支的 HEAD 指针移动到目标版本。这意味着目标版本之后的所有提交将被丢弃,它们将不再存在于 Git 历史中。
  • 潜在影响他人协作

更多命令见我OneNote笔记

Contents
  1. 1. Git操作步骤
  2. 2. git log命令
  3. 3. git tag命令
  4. 4. git rebase 和git merge比较
  5. 5. git pull
  6. 6. git add 之后git reset HEAD
  7. 7. git revert和git reset回退
|