跳到主要内容

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下来(执行下列语句即可)

参考:https://www.jianshu.com/p/9000cd49822c

# 初始化子模块
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

把一个分支上的某次提交同步到另一个分支上

  1. 使用 git log 找到对应提交 commit ID(例: aabbcc)
  2. 在要合并到的分支上执行命令:git cherry-pick aabbcc

如果要取消此次操作,执行:git cherry-pick --abort