git使用总结
在工作中常用的操作
1. 初始化与拉取
- git init: 在某一文件夹下执行此命令,就会创建.git目录,git仓库也就创建好了
- git clone 拉取远程仓库代码,默认同名拉取,如果需要重命名,可以使用git clone [url] [new_name]
2. 基本的快照
- 基本流程:
- git add:可以添加多个文件,文件路径后面叠加即可git add [file_path…],不一定要git add . (此操作会递归的将当前文件夹下所有文件add一下)这样可能会把不需要的文件提交到远程仓库,file_path可以通过git status查看
- git status查看当前状态,红色的是未add到缓存的,绿色是已经add但是未commit的
- git diff
- git diff没有其他参数直接使用此命令会显示所有未add 的更改(即红色部分的更改)
- git diff –cached会显示已经add的尚未commit的更改(即绿色部分的更改)
- git diff HEAD会显示所有改动(包括红色和绿色的更改)
- git diff –stat简略显示哪些文件更改了,但不显示具体更改内容
- git commit:add命令只会写入缓存,没有真正写入存储,commit会真正写入存储
- 首先要设置config,这些config就是每一条commit的基本信息,不要乱填
1. git config –global user.name ‘Your Name’
2. git config –global user.email you@email - git commit -m [“本次提交的简要信息”]
- 其它常用方法:
- git reset
- git reset HEAD – [file_name]将当前已经add进缓存的file_name文件移出缓存
- git reset [commit_no]可以回退到commit_no版本
- git rm
- git reset
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分支合并
- git branch
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每个提交节点与当前分支合并,直到合并到最后一个节点。
- 每合并一个节点需要add、git rebase –continue
- Rebase 操作,会分析两个分支共同祖先,然后从公共祖先一次往后将clickhouse_service每个提交节点与当前分支合并,直到合并到最后一个节点。
- 执行命令之后,再提交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使用总结/