梭梭带你学Git

发布时间 2023-11-23 07:52:23作者: 梭梭666

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 入门

点我回顶部