Top
常用命令
# 官方文档 URL
https://git-scm.com/book/zh/v2
# 下载特定分支的代码
git clone -b 分支名 仓库地址
# 克隆远程仓库的时候,自定义本地仓库的名字
git clone https://github.com/libgit2/libgit2 mylibgit
# 拉取特定分支的代码
git pull origin 分支名称
# 推送特定分支的代码
git push origin 分支名称
# git status : 缩短状态命令的输出
git status -s
# 比较工作目录中当前文件和暂存区域快照之间的差异
git diff
# 比对已暂存文件与最后一次提交的文件差异
git diff --staged
git diff --cached # 查看已经暂存起来的变化( --staged 和 --cached 是同义词):
# 使用图形化的工具或外部 diff 工具来比较差异
# 使用 git difftool --tool-help 命令来看你的系统支持哪些 Git Diff 插件
git difftool
# 设置编辑器
git config --global core.editor
# 自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤
git commit -a
git commit -a -m "master merge commit”
# 以web界面显示log的参数
git help --web log
# 给文件重命名
git mv main.py mymain.py
# 删除文件
git rm main.py
常用操作
全局变量配置
git config --global user.name "xxx"
git config --global user.email "xxx"
# 将当前的目录设置为安全的存储库
git config --global --add safe.directory D:/JavaProjects/demo
版本管理
# 可以查看历史版本记录
git log
git log --oneline # 一行显示git记录
git log --oneline --all # 以一行的形式显示所有分支git记录
git log --oneline --all -4 --graph # 显示所有分支的版本演进的最近4条
git log -4 # 显示最近4条记录
git log --all # 显示所有分支的commit信息
git log --graph # 查看分支合并图
git log --graph --pretty=oneline --abbrev-commit # 查看分支合并概况
# 查看每一次操作记录
git reflog
# 默认回退上一个版本
git reset --hard
# 回退到上个版本
git reset --hard HEAD^
HEAD表示当前版版本
HEAD^表示上个版本
HEAD^^上上个版本
# 回退指定的版本
git reset --hard <版本id号>
分支管理
# 创建分支
git branch develop
# 查看本地分支
git branch
# 查看分支信息
git branch -v
# 查看远程分支,加上-a参数可以查看远程分支,远程分支会用红色表示出来(如果你开了颜色支持的话)
git branch -a
# 切换分支
git checkout branch_name
# 删除本地分支
git branch -d branch_name
# 新建并切换至新的分支
git checkout -b dev
# 删除远程分支
git branch -r -d origin/branch-name
git push origin :branch-name
# 如果远程新建了一个分支,本地没有该分支, 这时本地会新建一个分支名叫 branch_name ,会自动跟踪远程的同名分支 branch_name
git checkout --track origin/branch_name
# 如果本地新建了一个分支 branch_name,但是在远程没有, 可以自动在远程创建一个 branch_name 分支,然后本地分支会 track 该分支。后面再对该分支使用 push 和 pull 就自动同步
git push --set-upstream origin branch_name
# 查看本地分支和远程分支存在的依赖关系
git branch -vv
# 新建分支,并与远程分支创建关联;前提是远程分支存在,
git branch dev origin/dev
# 对本地已存在分支,添加远程分支关联关系
git branch --set-upstream-to=origin/<远程分支名称> <本地分支名称>
储藏区的 管理
# 保存暂存区工作区进度
git stash
# 保存暂存区工作区进度, 自定义储藏名
git stash save "my app01 stash"
# 查看stash保存的列表以及id
git stash list
# 恢复最新的 stash 进度到工作区
git stash pop
# 恢复指定的 stash 进度
git stash pop stash_id
# 清空所有存储的stash进度
git stash clear
# 默认删除第一个stash
git stash drop
# 删除一个存储的stash进度
git stash drop stash_id
# 恢复stash存储,且不删除stash list中的记录
git stash apply
撤销修改
# 撤销暂存区的修改,unstage操作
git reset HEAD readme.txt
# 放弃工作区的修改操作, 撤销修改记录,只能在未提交到暂存区之前
git checkout -- readme.txt
主机【远程仓库】管理
# 添加远程主机
格式: git remote add <name> <url>
git remote add origin <URL>
# 查看远程主机信息,并且会列出和本地库的关系
git remote show origin
# 删除远程仓库
git remote rm name
# 修改仓库名
git remote rename <old_name> <new_name>
# 修改已有仓库的链接地址
git remote set-url origin https://gitee.com/holyking/test-3.git
# 显示所有远程仓库
git remote -v
代码推送
# 格式如下:
git push <远程主机名> <本地分支>:<远程分支>
# 若只关联一个主机,且本地分支和远程分支同名,则推动代码可简写为:
git push ## 等价与 git push origin dev:dev
git push -u origin "master"
代码拉取
#从远程分支 dev 上下载代码,并且合并到本地所在的分支
git pull origin dev
解决冲突
# 处理Git冲突文件的步骤如下
1. 打开Git命令行界面,并进入包含冲突文件的Git仓库。
2. 运行 git status 命令,查看哪些文件发生了冲突。
3. 打开发生冲突的文件,查看冲突内容。冲突内容通常以以下格式出现:
<<<<<<< HEAD
代码库中的修改
=======
开发者的修改
>>>>>>> branchname
其中,HEAD 表示代码库中的修改,branchname 表示开发者的修改。
4. 手动解决冲突,将代码库中的修改和开发者的修改合并到一起。解决冲突的方法包括选择某个修改,或者手动编辑以保留所需的更改。同时也需将冲突符号删除。
5. 保存修改后的文件,并运行 git add 命令将文件标记为已解决。
6. 运行 git commit 命令提交修改。
变基---- rebase
# 假设提交链表图如下:
master分支,节点链表指向为:c1<--c3<--c4
dev分支,节点链表指向为:c1<--c2<--c5
1. 切换到开发者分支 dev : git checkout dev
2. 将 dev 上的c2、c5在master分支上做一次衍合处理,
git rebase master
2.1> 若存在代码冲突,则需提前处理完毕
git add <冲突文件>
git rebase --continue # 得以让 rebase 继续处理
3. 切换到主分支 master : git checkout master
4. 开始合并 dev 分支: git merge dev
至此,合并后的 master 分支节点链表指向为: c1 <-- c3 <-- c4 <-- c2 <-- c5
ISSUE
简单来讲就是正常的解决冲突过程是
1,git add .
2,git commit -m "..."
3,git push时因为本地仓库代码与远程仓代码有冲突,所以接下来
4,git pull拉取远程代码,而冲突需要手动解决
5,解决好后重新进行git add . git commit -m".." git push
参考网址
博客园----- py鱼
小猿取经---- Git 入门