git操作命令

138 阅读3分钟
git 查看仓库所有分支:
# 只查看远程仓库(远程分支名都是以"origin/"开头)
git branch -r 
git branch -r | grep -i <关键字>

# 查看本地+远程仓库分支
git branch -a
checkout工程
# 先同步最新列表
git fetch --all --prune          

# checkout出工程:自定义本地分支名
git checkout -b <本地分支名> origin/<远程分支名>

# checkout出工程:本地分支名使用与远程分支名一样的名字
git checkout --track origin/<远程分支名>
本地切换分支
git checkout feature/login 
删除本地分支
git branch -d <branch_name>
# 如果分支尚未合并到当前分支,Git 会阻止你删除它。你可以使用 `-D` 选项强制删除
git branch -D <branch_name>
git恢复本地某个文件的修改或者目录
git checkout file
git checkout dir
查看本地分支与远程分支关联关系
# 在 Git 中,你可以通过以下命令查看本地分支与远程分支的关联关系及其状态
git branch -vv
同步远程仓库,
# 把远程所有分支最新快照拉到本地
git fetch origin

# merge 到本地
git merge  origin/your_branche_name

# 推送本地分支到远端
git pull origin your_branche_name
同步远程仓库,强制丢弃本地修改
# 仅丢弃 工作区+暂存区(未 commit)
git reset --hard HEAD

# 连同已提交的本地 commit 也一起丢弃,完全同步远程分支.
git fetch origin                        # 先同步
git reset --hard origin/<branch-name>   # 再覆盖 checkout


从远程分支同步最新代码
git pull origin aaaaaaaaaaaaaa
git更新子目录连接
# 1. 修改:
.gitmodules文件
# 2. 使修改生效:
git submodule sync
# 3. 初始化并更新子模块
git submodule update --init --recursive
# 4. 提交修改:
git add .gitmodules
git commit -m "Update submodule URL from old-repo to new-repo"
更新子模块到指定分支
# 1. 进入子模块目录
# 2. 检出子模块
git checkout develop
# 3. 拉起最新代码
git checkout develop
# 4. 其他和主分支操作方式一样
对比两个分支
git diff branch1 branch2
提交
# 1. 先查看本地修改状态
git status
# 2. 对比文件修改
git diff file
# 3. 将需要提交的文件加入本地缓存
git add files
# 4. 提交
git commit -m "aaaaaa"
git 回滚
# 使用 `git revert` 回滚特定提交
# 如果你想撤销某个特定的提交,但保留历史记录,可以使用 `git revert`。
# 这将创建一个新的提交,该提交是被撤销提交的逆操作。
git revert <commit-hash>

git merge

将指定分支的更改合并到当前所在分支。

git merge <分支名>

当执行 git merge 后出现类似提示,就表示有冲突:

Auto-merging file.txt
CONFLICT (content): Merge conflict in file.txt
Automatic merge failed; fix conflicts and then commit the result.

查看冲突状态,冲突文件会显示为 both modified

git status

定位并分析冲突文件

#打开冲突文件,会看到类似标记:
<<<<<<< HEAD
# 当前分支的代码
print("这是main分支的代码")
=======
# 要合并的分支的代码  
print("这是feature分支的代码")
>>>>>>> feature

<<<<<<< HEAD` 到 `=======`        :当前分支的内容
 `=======` 到 `>>>>>>> feature`   :要合并的分支的内容

编辑解决冲突,手动编辑文件,删除Git的标记符,并保留想要的代码。

#标记冲突已解决
# 单个文件
git add file.txt
# 所有冲突文件
git add .
# 或
git add -A

完成合并

git commit

中止合并

git merge --abort
# 或
git reset --hard
git 分支关系查看

查看由当前分支衍生的分支

# 查看所有已合并到当前分支的子分支(通常是已完成的特性分支)
git branch --merged

# 查看所有尚未合并到当前分支的子分支(通常是仍在开发中的分支)
git branch --no-merged

查看当前分支的来源(父分支)

git log --oneline --graph --decorate --all
git 修改本地提交的注释
#快速修改最近一次提交(不打开编辑器)
git commit --amend -m "新的提交信息"
git checkout 失败
# 先清除本地的修改,再check
git clean -fd xxxxxxx/
git checkout yyyyy
Git 里,“切换”到某次提
# 进入“游离 HEAD”模式,工作区直接回到那次提交
git checkout <提交哈希>
# 或(Git 2.23+ 推荐)
git switch --detach <提交哈希>