- content
Git
工作中常用 Git 命令
一、安装与部署
- 命令行:https://git-scm.com/
- 可视化工具(wins):https://tortoisegit.org/download/
二、快速下载 github 资源
#(1)Linux环境下:
wget https://codeload.github.com/itmuch/docker-book/zip/master
# (2) 先fork,然后同步到码云库,然后下载码云库资源
git clone url
# 克隆具体分支/版本
git clone -b vesion(1.0V) https://gitee.com/yyjcom/YouYueJiaerp.git erp
# 克隆重命名
git clone https://gitee.com/yyjcom/YouYueJiaerp.git erp
# 把Git分支看作一棵树的分支,都是在一棵树上操作 !! ---[2018-01-31]
三、Git 命令详解
默认拉取是 master 远程名为 origin
1.查看当前分支 git branch
查看所有分支: git branch -r
2.查看远程名
# 查看远程名
git remote
# 查看git 地址
git remote -v
# 重新 设置远程分支地址[2022-02-17]
git remote set-url origin xxxx
3.创建本地分支
# <1. 拉取远程分支
git fetch
# <2. 在dev分支上开发,就必须创建远程origin的dev分支到本地 (首先必须要本地有远程dev分支信息)
git checkout -b dev origin/dev
# <3. 本地分支与远程分支建立关联
git branch --set-upstream-to=origin/remote_branch your_branch
# 等同于
git branch -u origin/remote_branch your_branch
-- 推动到 dev 分支: git push origin dev;
特殊:假如本地有多个分支时,以 master 分支创建 release 分支:
git checkout master;
# 新建release分支
git branch -b release;
# 提交到远程
git branch origin release:release;
4.修改文件信息,提交
git add *
git commit -m "修改原因"
git push origin dev #------>提交到dev 分支了
# 修改当前备注信息【2019-11-18】
git commit --amend
4.1 提交一个文件夹/文件
# 当前目录下文件 git status 可查看 具体文件路径
git add /... #某一级目录
git add /.../file.txt #具体文件路径
5.删除分支
git branch -d [branch-name]
# 有时-d 不起作用,改为 -D
git branch -D [branch-name]
6.合并
将 dev 合并到 master 分支
# 1.切换到master 分支
git checkout master
# 2.将dev合并到master分支
git merge dev
git commit -m "dev ->master合并"
git push origin master ------->推送到master 分支
6.1 合并不相关历史记录
# fatal: refusing to merge unrelated histories
# 在你操作命令后面加 --allow-unrelated-histories
git merge dev --allow-unrelated-histories
#【2019-04-25】具体方法操作如下:
#1、首先通过 git remote -v 查看您要同步的仓库的远程库列表,如果在列表中没有您码云的远程库地址,您需要新增一个地址
#git remote add 远程库名 远程库地址
eg: git remote add gitee git@github.com:xxx/xxx.git
#如果在 add 的时候出现error: Could not remove config section ‘remote.xxx’.一类的错误,通过把仓库下.git/config 文件里面的 [remote “xxx”] 删掉或者是用别的远程库名即可。
#2、从GitHub上拉取最新代码到本地
#git pull 远程库名 分支名
eg:git pull origin master
#3、推送本地最新代码到码云上
#git push 远程库名 分支名
eg:git push gitee master
#如果出现有差异的话需要自己手动解决差异
7.清空 git 缓存
#【2019-06-03】
git rm -r --cached .
git add .
#参考:https://www.cnblogs.com/ldq2016/p/7921480.html
7.1 Git 清除贡献者信息和历史提交记录,将开源项目拉取二次开发时可用到
# 第一步:设置远程git 地址
git remote set-url origin <新Git地址>
# 第二步:查看是否设置成功
git remote -v
#第三步:推送到远程master分支
git push -u origin master
#以上只是取消旧仓库的关联,并且和新仓库关联上,但是历史提交记录都还存在,想清除历史提交记录还需以下步骤:
#第四步:切换到临时分支
git checkout --orphan 临时分支名
#第五步:添加提交文件
git add -A(添加所有文件)
#第六步:提交更改
git commit -am "first commit"
#第七步:删除旧的分支
git branch -D master
#第八步:重命名临时分支为master
git branch -m master
#第九步:(强制更新到新仓库
git push -f origin master
原文链接:https://blog.csdn.net/zzr0112666/article/details/134349088
8. 回滚
git log (查看commit_id)
#1.第一种情况:还没有push,只是在本地commit
git reset --soft|--mixed|--hard <commit_id>
git push develop develop --force (本地分支和远程分支都是 develop)
#这里的<commit_id>就是每次commit的SHA-1,可以在log里查看到
--mixed #会保留源码,只是将git commit和index 信息回退到了某个版本.
--soft #保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
--hard #源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
8.1 针对某次 commit 新增 tag
# git tag -a V2.0.0 -m "回退到V2.0.0版本" xxx<SHA1>
git tag -a V2.0.0 -m "智投大屏自动运行" b0d6a441
#推送到远端
git push origin V2.0.0
8.2 针对某次 commit 新增分支
# 将V2.0.0 指向 b0d6a441
git checkout -b V2.0.0 b0d6a441
# 推送到git 仓库
git push origin V2.0.0
9. stash 用法
# 临时保存变更信息,git reset 分支 ,修改部分代码,然后提交;最后切换到之前变更处;
# 保存当前变更(把变更压栈)
git add *;
git commit -m "fix: xxxx";
git stash push;
# 切换到之前需要调整的分支或者提交记录
git reset xxxx; # 分支记录
# 进行代码修改,然后提交变更
git add *;
git commit -m "fix: bug";
git push; # 提交变更
# 切换到之前变更
git stash pop; # 弹出到之前变更,会清s空栈内容。
00. 问题小记
00.1 不同提交记录
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
# 1. rebase
git rebase origin/master
# 2. pull
git pull --rebase
# 3. push
git push origin master
00.2 返回上一版本
>git status
On branch release
Your branch is ahead of 'origin/release' by 4 commits.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
#返回到上一个版本 git reset --soft version、然后执行问题9操作!
9.3 fatal: refusing to merge unrelated histories
C:\Users\xusj\Git\company\dgc-portal-manager-system-java>git merge release --allow-unrelated-histories
Auto-merging README.md
CONFLICT (add/add): Merge conflict in README.md
Automatic merge failed; fix conflicts and then commit the result.