- 克隆
// 克隆远程仓库到本地,默认是master分支,github默认main分支
git clone ssh/https地址 // https地址可以直接clone,但每次在push时需要输入用户名和密码;ssh的在clone之前需要添加ssh key,但在push时不需要输入用户名和密码
// 克隆指定分支的代码
git clone -b branch_name ssh/https地址
- 状态
// 查看状态
git status
// 查看提交历史
git log
- 提交
// 暂存:本地和远程不同的文件,被添加到暂存区的操作
// 暂存指定文件
git add file_name
// 暂存所有文件
git add .
// 暂存指定后缀的文件
git add *.js
git add *.md
...
// 提交:将暂存区内容提交到本地仓库
git commit -m "commit message"
// 一条命令完成暂存和提交的操作, 此操作只会提交已经存在远程仓库的文件,从未被提交过的文件不会被暂存也不会被提交
git commit -am "commit message"
// 推送:将本地仓库的内容推送到远程仓库
git push
- 分支
// 查看本地和远程所有的分支
git branch -a
// 查看远程所有分支
git branch -r
// 查看本地所有分支
git branch
// 切换分支
git checkout branch_name
// 新建分支
git branch branch_name
// 新建分支并切换到该分支
git branch -b branch_name
// 新建分支并推送到远程
git checkout -b dev
git push origin dev:dev
// 新建并切换,并拉取远程同名分支
git checkout -b branch_name origin/remote_branch_name
// 删除远程分支
先通过 git branch -a或-r查看远程分支
然后使用 git push origin --delete remote_branch_name
// 删除本地分支
// 删除本地某个分支前,需要先切出这个分支
git checkout master
git branch -d branch_name
// 当一个分支未被合并或推送到远程时,需使用-D 强制删除
git branch -D branch_name
// 分支的合并
// 将目标分支合并到当前分支
git merge 目标branch_name
git branch -a
星号 代表当前所在分支
git log
黄色字符代表commit id
- 小技巧
- 合并某次commit到某个分支
// 合并某个commit到其他分支
先查使用git log看commit记录,找到要合并的commit_id
然后切换到要合并到的分支,使用 git cherry-pick commit_id
然后 git push
例如:
git cherry-pick ce846d53ed6f9 // id 用前面几位即可
git push
- 当我们正在开发某个功能时,突然测试提出了紧急bug,我们要切到fix分支去解决bug,但此时当前dev分支的工作还没完成,不能提交。幸好git提供了git stash 来储藏未完成的开发内容
$ git stash
$ Saved working directory and index state WIP on ref: 628ef3b 修改端口号
此时git status,会发现工作区是干净的,除非是未被git跟踪的文件
如果要储藏所有工作区的文件(包含未跟踪)
使用 git stash --include-untracked
简称 git stash -u
当bug修复之后,切回dev分支,合并刚才解决bug的commit继续开发
如何找回储藏的代码呢?
$ git stash list
stash@{0}: WIP on ref: 628ef3b 修改端口号
恢复方式:
1.git stash apply 恢复后,stash内容不会删除,如要删除,使用git stash drop
2.git stash pop 恢复的同时会删除stash内容
如有多次stash,使用git stash list查看所有stash
使用git stash apply stash@{0} 恢复
- git 远程仓库迁移,本地如何迁移
手动编辑 .git/config,修改url,然后提交推送