git 一些常用的操作命令
git merge 合并两个分支的某个文件
例如:要合并本地分支A的test.txt文件到本地分支B,如下:
git checkout B (注释:先切换到本地分支B)
git checkout -p A test.txt (注释:将本地分支A的text.txt文件合并到本地分支B)
将本地分支A的某个文件夹合并到本地分支B:
// 首先切换到分支B git checkout B // 合并分支A的文件夹model到分支B git checkout A -- model/
如果是要将远程分支的某个文件合并到本地分支B,需要在分支前面加上origin,如下:
git checkout B (注释:先切换到本地分支B)
git checkout -p origin/master test.txt (注释:将远程分支master下的test.txt合并到本地分支B)
把新增的远程分支同步到本地
例如:在公司新增了一个远程分支release-2022,家里电脑没这个本地分支,需要把这个远程分支同步下来:
git checkout -b release-2022 origin/release-2022
查看本地分支跟远程分支的关联情况
git branch -vv
创建新分支并推送到远程
例如:发布新版本,需要创建一个新的release版本分支,并推送到远程服务器上,如下:
方法一:
git branch release-20210714 (注释:创建分支release-20210714) git checkout release-20210714 (注释:切换到新创建的分支release-20210714) git push origin release-20210714 (注释:推送到远程服务器的release-20210714分支,远程服务器上不存在该分支则会自动创建)
方法二:
git checkout -b release-20210714 (注释:切换到分支:release-20210714,如分支不存在则创建分支) git push origin release-20210714 (注释:推送到远程服务器的release-20210714分支,如分支不存在则自动创建)
删除本地分支
(注:删除本地分支之前需要切换到其他分支)
git checkout other-branch-name //切换到其他分支 git branch -d branch-name //删除本地分支 git branch -D branch-name //强制删除本地分支
删除远程分支
git push origin --delete branch-name //删除远程分支
添加/删除文件
# 添加指定文件到暂存区
$ git add [file1] [file2] ...
# 添加指定目录到暂存区,包括子目录
$ git add [dir]
# 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
# 添加当前目录的所有文件到暂存区
$ git add .
$ git add -A #提交所有变化
$ git add -u #提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
# 添加每个变化前,都会要求确认 # 对于同一个文件的多处变化,可以实现分次提交 $ git add -p # 删除工作区文件,并且将这次删除放入暂存区 $ git rm [file1] [file2] ... # 停止追踪指定文件,但该文件会保留在工作区 $ git rm --cached [file] # 改名文件,并且将这个改名放入暂存区 $ git mv [file-original] [file-renamed]
配置账号和邮箱
配置全局仓库的账号和密码 git config --global user.name "userName" //用户名 git config --global user.email "email@xx.com" //邮箱 进入到这个仓库目录,使用下面命令可以单独为该仓库配置用户名和邮箱 git config user.name "userName" //用户名 git config user.email "email@xx.com" //邮箱 设置好账号和密码后 git config --list //查看配置
合并分支A的某个提交到分支B
先切换到 A 分支 $ git checkout A 查看日志 找到需要合并的提交 commit ID $ git log 例如 4387200ab209776049b0bd0188076ea1d66b5e9f 然后切换到 B 分支上 $ git checkout B 合并命令( git cherry-pick )跟上其他分支的提交id $ git cherry-pick 4387200ab209776049b0bd0188076ea1d66b5e9f
把当前未提交的修改转移到正确的分支下
//将当前修改添加到暂存区
git add . //把暂存区内的修改存储起来 git stash //切换到正确的分支 git checkout dev-xx //将存储的修改取出来 git stash pop
查找未解决的冲突
//显示合并的所有冲突,缺点是该信息不会随着修复冲突动态变更 git merge --continue //显示当前仍有冲突的文件 git diff --check
回滚到某次commit,该commit后面所有commit记录丢掉
git reset --hard commit-id
git push --force
仅撤回某次commit,该commit后面所有commit不受影响,保留
git revert commit-id
回滚到某次commit,该commit后面所有commit记录保留
原理:利用git diff和git apply实现,思路:
1. 得到当前最新提交到回退提交之间的代码diff,将diff保存为文件
2. 利用git apply
将diff作用到代码上,回到之前的代码状态 3. 提交代码
git checkout pre-commit git diff cur-branch > ~/diff.patch git checkout cur-branch cat ~/diff.patch | git apply git commit -am "roll back to pre-commit" git push