Git 常用命令

本文详细介绍了Git的基本操作,包括从现有仓库拉取项目、新建项目推送到Git仓库、项目开发中的常用操作,以及分支管理和标签管理。特别强调了分支管理规范,如如何在远程分支基础上新建分支、如何进行分支合并,以及bug分支的使用。此外,还提供了撤销和删除操作的指导,以及日志格式化的命令。
摘要由CSDN通过智能技术生成

Git操作规范

一、 从现有仓库拉取项目

第一种情况,只有主分支的仓库

  1. 第1步,本地新建文件夹,并初始化git

    git init

  2. 第2步,克隆指定仓库项目到新建文件夹

    git clone [url]

第二种情况,多分支项目仓库,项目中常见

如何从远程仓库分支拉取代码?

git init # 初始化本地仓库
git remote add origin [仓库地址] # 添加远程仓库地址映射
git fetch origin dev # 从远程仓库拉取分支
git branch -b dev origin/dev # 新建本地分支并于远程分支绑定
git pull origin dev # 从远程分支拉取代码

二、 本地新建项目推送到Git仓库

  1. 本地新建项目文件夹,初始化git

    git init

  2. 添加本地仓库与远程仓库关联

    git remote add origin [url]

  3. 创建.gitignore文件,配置忽略版本控制的文件夹或者文件

    touch .gitignore

  4. 把新增内容加入版本控制

    git add .gitignore 指定文件名

    git add . 添加所有文件,会自动忽略.gitignore过滤内容

  5. 在本地仓库提交并添加注释

    git commit -m "编写注释"

    如果要提交全部内容,可合并第4、5步操作,使用如下命令一次性操作:

    git commit -a -m "编写注释"

  6. 推送至远程仓库

    git push

  7. 如果有远程分支的情况下

    7.1 创建并选取本地分支,commit以后进行操作即可

    git checkout -b dev # git checkout命令加上-b参数表示创建并切换
    git branch dev # 命令会列出所有分支,当前分支前面会标一个*号。
    git push origin dev # 提交到分支
    

三、 项目开发中常用操作

提交(commit)

git commit -m "编写注释"

更新及冲突解决

  1. 建议使用rebase模式

    git pull --rebase

    git rebase --coutinue

    git rebase --skip

    该模式下,遇到需要解决冲突的文件,会罗列出来,然后我们手动去解决这些文件冲突或者忽略或者跳过。如果手动解决了冲突,需要把解决冲突的文件提交,然后使用git rebase --coutinue命令继续更新操作。

推送到远程仓库

git push

四、 分支管理

分支管理规范参考博客:https://www.cnblogs.com/spec-dog/p/11043371.html

[分支创建以及合并原理]https://www.cnblogs.com/billmiao/p/9872176.html

4.1 问题一

技术主管让你去某个git分支上新建一个分支去做你的项目,那么如何在原远程分支的基础上新建自己的分支呢?

分支常见命令
git branch  # 查看分支
git branch  <name>  # 创建指定名称分支
git checkout <name> 或者 git switch <name> # 切换分支
git branch -b <name> 或者 git switch -c <name> # 创建并且切换到该分支
git merge <name> # 合并指定分支到当前分支
git branch -d <name> # 删除指定名称分支

解决方法

按照以下命令敲即可

  • git branch newBranch //新建本地分支
  • git checkout newBranch //本地切换到自己的分支
  • git pull origin xxxxBranch //从远程目标分支copy代码
  • git push origin newBranch //将本地新建的分支同步到服务器
  • git branch --set-upstream-to=origin/newbranch newbranch //本地分支和远程分支建立追踪

到此为止,就完成了需求。

4.2 问题二

如何进行分支合并?

  1. 功能分支并入到主分支
$ git checkout master # 选择到主分支
Switched to branch 'master'
$ git merge feature # 指定功能分支 feature 合并到主分支
Fast-forward
  1. 主分支更新,功能分支开发中更新
# 不会看到合并信息
$ git rebase --onto master # 通过rebase获取主分支更新
$ git checkout master # 切换到主分支
Switched to branch 'master' 
$ git merge feature # 合并feature到主分支
Fast-forward

# 可以看到历史合并信息 主要区别在于 --on--ff上 使用 git log 查看历史合并信息
$ git rebase --onto master
$ git checkout master
Switched to branch 'master'
$ git merge --no-ff feature
Non fast-forward
  1. 功能分支开发完毕,并入生产分支,在开发完毕后并入主分支
$ git checkout -b dev # 切换到开发分支
Switched to a new branch 'dev'
$ git merge feature # 合并功能分支到开发分支
Fast-forward
$ git checkout master # 切换到主分支
Switched to branch 'master' 
$ git merge dev # 合并开发分支到主分支
Fast-forward
  1. 保留脏代码
    $ git rebase --onto 'base' from 'start' # 建立新的分支,将脏代码放在新的分支上,需要的时候将更新出来 通过form

解决方法

参考博客《如何规范的合并分支》https://www.cnblogs.com/zzzz76/p/9350547.html

4.3 bug分支的使用
$ git stash  # 保存当前工作以后进行一下操作
# 1. 当前任务未结束,需要处理bug时
# 1.1 git status 查看是否有文件有问题或者冲突存在
# 1.2 需要确定bug所在分支 
# 1.3 切换到问题分支,创建新的bug分支

$ git checkout master # 问题分支
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)

$ git checkout -b issue-101 # 从问题分支上创建新的bug分支
Switched to a new branch 'issue-101'

$ git add readme.txt  #提交修改文件
$ git commit -m "fix bug 101"
[issue-101 4c805e2] fix bug 101
 1 file changed, 1 insertion(+), 1 deletion(-)

# 1.4 处理完成bug以后需要切回到问题分支
# 1.5 合并bug分支到问题分支
# 1.6 删除bug 分支



$ git switch master # 切换回问题分支
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 6 commits.
  (use "git push" to publish your local commits)

$ git merge --no-ff -m "merged bug fix 101" issue-101 # 带log的方式 提交修复记录以及制定bug分支合并到问题分支
Merge made by the 'recursive' strategy.
 readme.txt | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

# 1.7 切换回工作分支
$ git switch dev
Switched to branch 'dev'

$ git status
On branch dev
nothing to commit, working tree clean
# 1.8 还原之前工作
$ git stash list # 查看临时分区
$git stash pop # 恢复同时删除临时区域(stash) == git stash apply + git stash drop

# 同时恢复其他分支上的bug
$ git branch
* dev
  master
$ git cherry-pick 4c805e2 # 这个是4c805e2 提交修改文件以后git返回的
[master 1d4b803] fix bug 101
 1 file changed, 1 insertion(+), 1 deletion(-)

[原文地址]https://www.liaoxuefeng.com/wiki/896043488029600/900388704535136

五、 标签管理

# 1. 创建标签
    # 1.1 简单创建标签
    git tag [标签名称]
    # 1.2 创建带说明的tag标签
     git tag -a v0.1 -m "说明内容" commitid
 
# 2. 查看创建的所有标签 
git tag

# 3. 对已提交的数据补打标签
$ git log --pretty=oneline --abbrev-commit # 查出所有需要commit 记录

$ git tag v0.9 f52c633 # 找到对应提交记录的 commitid 'f52c633'

# 注意,标签不是按时间顺序列出,而是按字母排序的。
# 4. 查看标签信息:

$ git show <tagName>

# 5. 删除标签
    # 5.1 删除本地标签
    $ git tag -d tagNme
    # 5.2 删除远程标签 需要删除本地标签,再推送到远程仓库
    $ git tag -d v0.9 

# 6. 标签默认本地存储,推送到远程仓库
    # 6.1 推送单个
    $ git push origin tagName
    # 6.2 推送全部
    $ git push origin --tags
    $ git push origin :refs/tags/tagName

六、撤销以及删除

  1. 撤销操作

    git checkout -- [file]

    没有 git commit 之前,但是已经添加到版本库

    git reset HEAD [file]

    回到第一步,再进行撤回

  2. 删除

    2.1 删除并提交到版本库,将版本库中的文件同步删除

    git rm file ; git commit -m "file"

    2.2 误删,没有提交到版本库的

    git checkout -- test.txt

    // 命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

七、日志格式化命令

# 格式化日志,效果比较好
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值