记录踩过的坑-Git
目录
将一个仓库的内容克隆到另一个仓库
如果目标仓库某分支已有内容,需要强行覆盖(不合并)
报错:Author identity unknown
Git Clone报错
Git 提交
Git命令克隆很慢
Git Bash命令
查看提交详情
克隆指定版本
Git Merge
Author和Commiter
将一个仓库的内容克隆到另一个仓库
如果要带git记录
# 克隆仓库 A 到本地 git clone https://gitee.com/your_username/repoA.git cd repoA # 进入仓库目录 git remote remove origin # 移除原仓库 A 的远程地址 # 添加仓库 B 的远程地址 git remote add origin https://gitee.com/your_username/repoB.git git push -u origin --all # 推送所有分支 git push -u origin --tags # 如果需要推送标签如果不需要git记录,当全新仓库来构建
# 克隆仓库 A 到本地 git clone https://gitee.com/your_username/repoA.git cd repoA # 删除 .git 文件夹(移除 Git 历史) rm -rf .git # Linux/macOS del .git # Windows(在 CMD 中) cd ../repoB # 假设仓库 B 已存在 cp -r ../repoA/* . # 复制文件(Linux/macOS) # 或手动复制文件(Windows) git add . git commit -m "Initial commit from repoA" git push origin master # 取决于默认分支名如果目标仓库某分支已有内容,需要强行覆盖(不合并)
git push -f origin master:master # 将本地 master 分支强制覆盖到远程的 master 分支报错:Author identity unknown
Git 配置中没有设置user.name和user.email。Git 要求每次提交(commit)都必须记录作者信息(姓名和邮箱),否则会报错。
git config --global user.name "Your Name" # 设置全局用户名 git config --global user.email "your@email.com" # 设置全局邮箱Git Clone报错
Error downloading object: xxx: Smudge error: Error downloading xxx: LFS: Get "http://localhost:3000/xxx: dial tcp [::1]:3000: connect: connection refused
服务器上部署了git。
本地向服务器请求。
原因:服务器配置文件中用的是localhost
改成服务器ip就可以了
Git 提交
且到需要提交的目录
git add .
git commit -m
git push
Git命令克隆很慢
原命令:git clone -b r1.13.0 https://github.com/tensorflow/models.git
现在替换为:git clone -b r1.13.0 https://github.com.cnpmjs.org/tensorflow/models.git
也就是把原 URL 中的 github.com 替换为 github.com.cnpmjs.org,其余保持不变。
Git Bash命令
1)、cd : 改变目录。
2)、cd . . 回退到上一个目录,直接cd进入默认目录
3)、pwd : 显示当前所在的目录路径。
4)、ls(ll): 都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
5)、touch : 新建一个文件 如 touch index.js 就会在当前目录下新建一个index.js文件。
6)、rm: 删除一个文件, rm index.js 就会把index.js文件删除。
7)、mkdir: 新建一个目录,就是新建一个文件夹。
8)、rm -r : 删除一个文件夹, rm -r src 删除src目录, 好像不能用通配符。
9)、mv 移动文件, mv index.html src index.html 是我们要移动的文件, src 是目标文件夹,当然, 这样写,必须保证文件和目标文件夹在同一目录下。
10)、reset 重新初始化终端/清屏。
11)、clear 清屏。
12)、history 查看命令历史。
13)、help 帮助。
14)、exit 退出。
15)、#表示注释
git remote:查看远程库信息
git remote -v:远程库详细信息
git branch -r , git branch -a 查看远程分支
git push 将当前分支推送到远程对应的分支(若远程无对应分支,则推送无效)
git push origin dev 将分支dev提交到远程origin/dev(远程没有则创建, 远程没有dev则创建)
git branch –set-upstream branch-name origin/branch-name 建立本地分支和远程分支的关联
git checkout -b dev origin/dev 创建远程的origin/dev分支到本地
查看提交详情
git log --stat
查看提交记录
git show
查看最新的commit
git show commitId
查看指定commit hashID的所有修改
git show commitId fileName
查看某次commit中具体某个文件的修改
克隆指定版本
git clone --branch [tags标签] [git地址] 或者 git clone --b [tags标签] [git地址]
例子
git clone -b 1.4.1 https://github.com/jumpserver/coco.git
Git Merge
在git-merge命令中,有以下三种使用参数:
git merge [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] [-s <strategy>] [-X <strategy-option>] [-S[<keyid>]] [--[no-]rerere-autoupdate] [-m <msg>] [<commit>...]
git merge <msg> HEAD <commit>...
git merge --abort
git-merge命令是用于从指定的commit(s)合并到当前分支的操作。
注:这里的指定commit(s)是指从这些历史commit节点开始,一直到当前分开的时候。
git-merge命令有以下两种用途:
用于git-pull中,来整合另一代码仓库中的变化(即:git pull = git fetch + git merge)
用于从一个分支到另一个分支的合并
假设下面的历史节点存在,并且当前所在的分支为“master”:
编辑
那么git merge topic命令将会把在master分支上二者共同的节点(E节点)之后分离的节点(即topic分支的A B C节点)重现在master分支上,直到topic分支当前的commit节点(C节点),并位于master分支的顶部。并且沿着master分支和topic分支创建一个记录合并结果的新节点,该节点带有用户描述合并变化的信息。
即下图中的H节点,C节点和G节点都是H节点的父节点。
编辑
Author和Commiter
首先从单词上我们可以看出,author是作者的意思,而committer是提交者的意思。通过字面意思我们大致可以理解为:author是代码的编写者,而committer是代码的提交者。
作者是最初编写代码的人。另一方面,提交者被假定为代表原始作者提交代码的人。这在Git中很重要,因为Git允许您重写历史,或者代表其他人应用补丁。免费的在线Pro Git书这样解释:
您可能想知道作者和提交者之间有什么区别。作者是最初编写补丁的人,而提交者是最后应用补丁的人。所以,如果你向一个项目发送了一个补丁,而其中一个核心成员应用了这个补丁,那么你们两个都会得到信任——你是作者,核心成员是提交者。
