git常用命令备忘.md
一、安装
## tig是日志查看工具
sudo apt-get install git tig
二、配置
#配置用户名、邮箱
git config --global user.name "your_name"
git config --global user.email "your_email@qq.com"
#配置编辑器
git config --global core.editor vim 设置编辑器为vim
三、创建和启用仓库(对于代码管理员)
从命令行创建一个新的仓库
touch README.md
git init
git add README.md
git commit -m "first commit"
#用于将指定的远程 Git 仓库地址添加到本地 Git 仓库中,
#并为其命名一个别名 origin,从而方便后续对该远程仓库进行操作。
#具体就是在.git/config中增加如下内容
#[remote "origin"]
# url = https://git.hjhai.cn/huangjianghai/xxx.git
# fetch = +refs/heads/*:refs/remotes/origin/*
git remote add origin https://git.hjhai.cn/huangjianghai/xxx.git
git push -u origin master
四、开发流程中常用命令(对于开发者)
1.检出分支
场景1:远程仓库还没有开发分支,需要先创建推送
## 创建
git checkout -b <local-branch> origin/<remote-branch>
## 推送
git push --set-upstream origin <local-branch>
场景2:远程仓库还已有开发分支,创建本地分支 跟踪 远程分支
## 创建并跟踪
git checkout -b <local-branch> origin/<remote-branch>
## 设置跟踪命令,如果git checkout时未指定的话
git branch --set-upstream-to=origin/<remote-branch> <local-branch>
2.本地开发
## 同步
git pull --rebase
## 修改、提交
git add .
git commit
## 追加提交,不产生新commit
git commit --amend
3.推送代码
## 切换本地的目标分支,一般是develop或者master,更新代码
git checkout <merge-target-local-branch>
git pull --rebase
##切换本地修改分支,rebase <merge-target-local-branch>
git checkout <local-branch>
## 因为你已经在<local-branch>上,所以<local-branch>可以省略
git rebase <merge-target-local-branch> <local-branch>
## 推送、如果是直接推送当前分支,可使用 HEAD 代替 <local-branch>
git push origin <local-branch>:<remote-branch>
## 如果使用了commit --amend
git commit --amend
git push origin --force-with-lease <local-branch>:<remote-branch>
五、其他常用命令
1.git clean
忽略的文件:.gitignore 中忽略的文件
未被跟踪的文件:没有被忽略,但是还没 git add 的文件
一般配置和git reset使用
## 删除:未被跟踪的文件
git clean -f
## 删除:未被跟踪的文件和文件夹
git clean -fd
## 删除:忽略的文件、未被跟踪的文件和文件夹
git clean -xfd
## -n 会先打印一些将要删除的文件,并不执行删除动作,主要是查看是否有自己需要的不想被删除
git clean [-xfd] -n
2.远程分支同步至本地分支
## 只会获取远程分支的代码,并且不会自动与本地分支进行合并,需要手动进行合并。
git fetch origin
## 本地分支与远程分支自动进行合并,并且会删除本地代码库中已经不再存在于远程仓库中的分支。
git remote update origin --prune
## 查看远程分支
git branch -r
3.重命名远程分支
## 先删除远程分支
git push --delete origin f/old
## 重命名本地分支
git branch -m f/old f/new
## 重新提交一个远程分支
git push origin f/new:f/new
4.提交合并
## id号需要再往前一个
git rebase -i <commitHash>
## 修改一笔笔提交
git commit --amend
5.git reset
## 在重置HEAD和branch的同时,重置stage区和工作目录里的内容
git reset --hard <commitHash>/HEAD~
## 重置HEAD和branch时,保留工作目录和暂存区中的内容,并把重置 HEAD 所带来的新的差异放进暂存区
git reset --soft <commitHash>/HEAD~
## 默认使用 --mixed 参数
## 行为是:保留工作目录,并且清空暂存区。也就是说,工作目录的修改、暂存区的内容以及由 reset 所导致的新的文件差异,都会被放进工作目录。
## 简而言之,就是「把所有差异都混合(mixed)放在工作目录中」
git reset <commitHash>/HEAD~
6.git revert
## 回退指定提交
git revert <commitHash>
7.git cherry-pick
## 指定的提交合入
git cherry-pick <commitHash>
## 转移连续提交,不包括A
git cherry-pick A..B
## 转移连续提交,包括A
git cherry-pick A^..B
## 代码冲突
git cherry-pick --continue
## 放弃合入
git cherry-pick --abort