git使用总结

在工作中常用的操作

1. 初始化与拉取

  • git init: 在某一文件夹下执行此命令,就会创建.git目录,git仓库也就创建好了
  • git clone 拉取远程仓库代码,默认同名拉取,如果需要重命名,可以使用git clone [url] [new_name]

2. 基本的快照

  • 基本流程:
    1. git add:可以添加多个文件,文件路径后面叠加即可git add [file_path…],不一定要git add . (此操作会递归的将当前文件夹下所有文件add一下)这样可能会把不需要的文件提交到远程仓库,file_path可以通过git status查看
    2. git status查看当前状态,红色的是未add到缓存的,绿色是已经add但是未commit的
    3. git diff
    • git diff没有其他参数直接使用此命令会显示所有未add 的更改(即红色部分的更改)
    • git diff –cached会显示已经add的尚未commit的更改(即绿色部分的更改)
    • git diff HEAD会显示所有改动(包括红色和绿色的更改)
    • git diff –stat简略显示哪些文件更改了,但不显示具体更改内容
    1. git commit:add命令只会写入缓存,没有真正写入存储,commit会真正写入存储
    2. 首先要设置config,这些config就是每一条commit的基本信息,不要乱填
      1. git config –global user.name ‘Your Name’
      2. git config –global user.email you@email
    3. git commit -m [“本次提交的简要信息”]
  • 其它常用方法:
    • git reset
      • git reset HEAD – [file_name]将当前已经add进缓存的file_name文件移出缓存
      • git reset [commit_no]可以回退到commit_no版本
    • git rm

3. 分支与合并

  • 基本流程
    • git branch
      • git branch列出可用的分支,*号标记的分支就是当前分支
      • git branch [branch_name]创建叫branch_name的新分支
    • git checkout
      • git checkout [branch_name]切换到branch_name的分支
      • git checkout -b [branch_name]创建并切换到branch_name分支
      • git checkout -d [branch_name]删除分支
    • git merge
      • git merge [branch_name]将当前分支和branch_name分支合并

4. 其他

  • git submodule

在工作中常用的场景

取消当前修改的内容(还未add、commit)

  • git checkout – file_name
  • git checkout .取消当前目录下所有修改内容

修改已经add的文件(还未commit)

  • git reset HEAD

修改已经commit的文件

  • git reset 回退版本

修改已经推到远程仓库的文件

  • git push -f修改后强制再推上去,-f 强制上推

提交MR之前需要rebase一下

  • 因为是多人合作编写代码,可能出现其它分支提前合入主分支,而你的分支没有加入这一部分代码
  • 具体操作
    • git pull origin clickhouse_service:clickhouse_service origin是所要拉取的git远程源clickhouse_service是主分支,此步骤就是将主分支更新为最新代码
    • git checkout <当前要提交的分支名>切回当前分支
    • git rebase clickhouse_servicereabse操作
      • Rebase 操作,会分析两个分支共同祖先,然后从公共祖先一次往后将clickhouse_service每个提交节点与当前分支合并,直到合并到最后一个节点。
        git rebase
      • 每合并一个节点需要add、git rebase –continue
    • 执行命令之后,再提交MR操作,这样的好处是master分支上很清晰,不会有多余的commit提交记录(相比直接merge)
      合并已经commit的节点
  • git rebase -i HEAD~2将Head指向的最近的两个commit合并
    • 将不需要的commit前面的pick改为s或其它,具体可以看解释,pick代表保留当前,s代表合并到前一分支
    • 将提交的信息修改统一
    • 可能会产生冲突
      • git status查看冲突,并进入冲突文件,解决冲突
      • git add <文件名> 添加解决冲突后的文件
      • git status确认已经无冲突
      • git rebase –continue

git使用总结
http://example.com/2023/04/01/git使用总结/
作者
gsYang's blog
发布于
2023年4月1日
许可协议