Appearance
git
git常用命令
git init
初始化本地仓库git add .
将所有文件添加到暂存区git commit -m "xxx"
将暂存区的文件提交到本地仓库git remote add origin <仓库url>
添加远程仓库git push -u origin master
将本地仓库推送到远程仓库git clone <仓库url>
将远程仓库克隆到本地git clone -b <分支名> <仓库url>
克隆指定分支代码git pull
将远程仓库更新到本地仓库git checkout <分支名>
切换分支git checkout -b <新分支名>
创建并切换分支git checkout -b <新分支名> <旧分支名>
创建新分支,并从旧分支创建并切换到新分支git branch
查看分支git branch -a
查看所有分支git branch <分支名>
创建分支git branch -m <分支名>
重命名分支git branch -d <分支名>
删除分支git branch -D <分支名>
强制删除分支
注意
-d
选项只会删除那些已经与当前分支合并的分支。如果该分支尚未合并,Git 会阻止你删除它,并提示你使用 -D
选项强制删除。
git merge <分支名>
合并分支git stash save "xxx"
暂存文件(当远程分支与本地分支文件不同时,有文件发生变化)git stash list
查看暂存文件git stash <pop | apply>
恢复暂存文件
注意
pop
与 apply
的区别在于:在恢复归档后,pop
会将存档删除,而 apply
则不会删除存档。
git stash <pop | apply>
命令恢复第一个存档,等价于git stash <pop | apply> stash@{0}
git stash <pop | apply> <stash_name>
命令恢复指定存档名的存档。
git stash <drop | clear>
删除暂存文件
注意
git stash drop stash_name
命令删除指定存档名的存档。git stash clear
命令删除当前工程的所有的存档。
git reset --soft HEAD^
撤销上次提交,并从提交历史中移除。git reset --soft HEAD~n
撤销多个提交,n为要保留的提交数量。
面试题1:git rebase
和 git merge
的区别
git rebase
和 git merge
都是用于合并分支的 Git 命令,这两个命令都能将一个分支合并到另一个分支
- git merge: 将一个分支的更改合并到另一个分支,创建一个新的merge commit,将两个分支的历史合并在一起,这个merge commit会在分支历史中保留,可以清晰的看到那些分支合并到了柱分枝,合并后形成分叉结构。
- git rebase:两个分支在合并到时候,会将整个分支合并到另一个分支的顶端。首先找到两个分支的共同commit记录,然后提取之后所有的commit,然后将这个commit记录添加到另一个分支的最前面,两个分支合并后的commit记录就变成线性记录
总结:
git rebase
会改写提交历史,使其更线性和清晰,但可能丧失上下文信息。它通常用于确保当前分支包含最新更改,并减少合并冲突。git merge
会创建合并提交,保留各分支的完整历史信息。它用于将一个分支的更改合并到另一个分支,并保留各分支的历史。
面试题 2:如何撤销某个提交?
git reset
:撤销提交,会改变提交历史git reset --hard [commit_hash]
:撤销当前提交,丢弃所有的更改git reset --soft [commit_hash]
:撤销当前提交,但保留更改在工作区中
git revert [commit_hash]
:创建一个新的提交,撤销指定的提交的更改