Git 常用操作
分支创建及提交
# 创建分支
git checkout -b ***
# 将本地分支提交到远程分支
git push --set-upstream origin ***
删除分支
# 删除远程分支
git push origin --delete ***
# 删除本地分支
git branch -d <BranchName>
查看分支
# 查看所有分支
git branch -a
删除远程文件
# 本地中文件会被删除
git rm 文件
# 删除文件夹-本地文件会被删除
git rm -r 文件夹
# 不想删除本地文件
git rm --cached 文件
git rm --cached -r 文件夹
冲突处理
git checkout master
git pull
git checkout 分支
git merge master
# ...处理冲突
git add .
git commit -m "说明"
git push
删除 | 添加 远程源
# 删除远程源
git remote remove origin
# 新增源
git remote add origin git@XXXX
更换远程仓库地址
# 1. 先删除远程地址
git remote rm origin
# 2. 新增远程地址:‘[]’内为新的git仓库地址,真实写命令时不要带中括号‘[]’
git remote add origin [url]
克隆仓库
# 基础操作
git clone [url]
# 本地别名操作
git clone [url] another-name
子仓库
项目里包含子模块项目,需要依次clone下来(执行下列语句即可)
# 初始化子模块
git submodule init
# 更新子模块
git submodule update
缓存修改
# 基础保存
git stash
# 添加说明
git stash save '***'
# 重新应用缓存
git stash apply
# 查 看当前缓存
git stash list
# 清空缓存
git stash clear
# 删除队列
# 删除第一个队列 git stash drop stash@{0}
git stash drop stash@{***}
撤销 commit
# 仅仅是撤回commit操作,您写的代码仍然保留
git reset --soft HEAD^
# HEAD^的意思是上一个版本,也可以写成HEAD~1
# 如果你进行了2次commit,想都撤回,可以使用HEAD~2
# 参数说明
1. --mixed
不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的
2. --soft
不删除工作空间改动代码,撤销commit,不撤销git add .
3. --hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
# 如果commit注释写错了,只是想改一下注释,只需要:
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了
一个项目两个git地址
一个项目设置两个git地址,实现同时推送到两个git仓库
- 方案一
- 方案二
- 方案三
接给git仓库添加Origin时,可以实现推送到两个仓库,但是需要推送两次
# 1. 在已有Git仓库的项目中gitA中添加另一个gitB远端的地址
git remote add origin2(别名) 地址2
# 2. 先拉取gitB地址的数据: --allow-unrelated-histories 是为了解决冲突
git pull origin2 master --allow-unrelated-histories
# 3. 把gitA中的内容推送到gitB的地址中
git push origin2 master
# 推送
git push origin master
git push origin2 master
## 清除方案一操作
# 查看此时的包括两个远程地址
git remote -v
# 删除 gitB 的远程地址
git remote rm origin2
# 给origin 增加一个可以push的 地址,这样一次push就能同时push 到两个地址上面
git remote set-url --add origin 地址
# 推送
git push origin master -f
# 删除
git remote set-url --delete origin 地址
直接修改 .git/config文件
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = 地址
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
url = 地址2 // 添加一个新的remote节点和branch节点
remote = origin
merge = refs/heads/master
把一个分支上的某次提交同步到另一个分支上
- 使用
git log
找到对应提交 commit ID(例: aabbcc) - 在要合并到的分支上执行命令:
git cherry-pick aabbcc
如果要取消此次操作,执行:git cherry-pick --abort