Git常用命令
git
起步
// github账户和你的电脑关联,配置秘钥 SSH 公钥 1).确认是否已经拥有密钥 $ cd ~/.ssh $ ls authorized_keys2 id_dsa known_hosts config id_dsa.pub // 我们需要寻找一对以 id_dsa 或 id_rsa 命名的文件, // 其中一个带有 .pub 扩展名。 .pub 文件是你的公钥,另一个则是私钥 2).如果找不到这样的文件(或者根本没有 .ssh 目录) // 通过运行 ssh-keygen 程序来创建它们,默认存储位置(.ssh/id_rsa) $ ssh-keygen 3).获得公钥信息 $ cat ~/.ssh/id_rsa.pub
仓库
1.命令行了解
// 命令行简单操作 D: // 当目前不在D盘的情况下会进入D盘目录 dir / ls // 查看当前目录下所有目录和文件 md xx // 新建xx文件夹 md xxx.xx // 新建文件 exit // 退出命令行 // git练习相关命令 cd ~/desktop mkdir xxx-git cd xxx-git
2.初始化仓库(该动作只需执行一次)
git init
3.基本流程
git status // 查看状态 git add // 添加修改 git add <文件> git add <目录> git add . // 把做的所有修改还有新的文件添加到暂存区(*不含删除文件*) git add -u // 把做的所有修改还有删除的文件添加到暂存区(*不包括新文件*) git add -A // 把所有东西当道暂存区(含 修改,新文件,*替换文件*,删除文件) git commit // 提交修改到Git仓库 git commit -a // 把所有修改与删除自动添加到暂存区然后提交。不包含未跟踪文件。 git commit -m '提交的备注信息' // 设置提交信息 //// git commit --amend // 修改刚刚做的这次提交(比如修改提交的信息,或者把新的修改放到刚做的这次提交里) //// git commit --amend --no-edit // --no-edit,表示直接用上次提交的信息 git log // 查看历史 git log --oneline // 将每条日志的输出为一行 git log --oneline -n 3 // 显示最新的三条 git log --pretty=raw // 关于每次提交的更多信息 git log --decorate // 显示一些相关的信息,如HEAD、分支名、tag名等 git log --decorate --oneline git log --oneline --graph // --graph 选项查看历史,会标记出使用 --no-ff 选项以后的合并 git reflog // 查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作) git show // 查看某次提交 git show '提交节点的ID' // 展示该节点的修改详情 git tag 'tag名称' log编号 // 给节点贴标签 git checkout // 检查 git checkout '提交节点的ID' git checkout master // 签出master分支 git checkout -b <xxxx> // -b,如果xxxx分支不存在,就创建 git revert // 撤销 git revert '提交节点的ID' // 发生冲突 fix conflicts and run "git revert --continue" 1.打开冲突的文件,解决冲突 2.git add <冲突的文件> 3.git commit -m 'Revert "XXXX"' git reset // 重置(重置的某次提交,他之后的所有提交都会被抹掉) git add 之后执行 git reset / git reset <文件名称> // 从暂存区拿出之前添加的修改 git reset --hard '提交节点的ID' git reset HEAD~1 --hard // 撤销,回退到上一个版本 git clean // 清理(把未跟踪的文件清理掉) git clean -f // git清除本地缓存命令 git rm -r --cached . git add .
4. 忽略跟踪 .gitignore
// 添加 .gitignore, 并添加 node_modules echo 'node_modules' >> .gitignore
5.分支
git branch // 列出分支( 分支名前的 * 标识当前所在分支 ) git branch <xxx> // 创建 xxx 分支 git checkout <xxx> // 创建后切换到 xxx 分支 git branch -r // 列出远程分支 git branch -a // 列出本地分支和远程分支 git branch -d <分支名> // 删除分支 ( 或 git branch -D <分支名> ) git merge <分支名> // 合并分支 git checkout <要合并到的分支> // 先切换到"要合并到"的分支 // 1. Fast-Forward 合并,(期间,要合并到的分支没发生什么变化) git merge <要被合并的分支> // 2. --no-ff 合并,(历史里可记录合并动作) git merge <要被合并的分支> --no-ff // 3. 3-Way 合并,(期间,要合并到的分支内容发生了变化) git merge <要合并到的分支> git rebase // 衍合过程(用于:主干和分支对同一文件都有修改,合并时候有冲突的情况),产生一个更为整洁的提交历史 git rebase <分支名> // 一般为 git rebase master // git提示出现了代码冲突,处理完毕后 git rebase --continue // 继续刚才的处理处理
6.远程
一般远程仓库都有两种地址,一种是 HTTPS,一种是 SSH。 HTTPS: 用的是用户名 + 密码的方式验证你的身份。 SSH: 会使用 ssh-key 作为验证身份的方法。 // 查看远程仓库: git remote git remote -v // 查看详情 // 添加另外远程库 git remote add 远程库名 远程库地址 例:git remote add origion https://。。。。。 // 删除该远程库:git remote rm [name] git remote remove 远程库名 ( git remote rm 远程库名 ) 例:git remote remove origin(一般都是叫origin) // 改变远程库的名字 git remote rename 旧名称 新名称 例:git remote rename origin neworigin(把origin改成neworigin) // 推送远程仓库 git push [remoteName] [localBranchName] // 按如下格式提交分支至线上时,会自动创建 MR git push 主机名 本地分支名:mr/线上目标分支名/本地分支名 // 加上了 -u 选项以后,下面可以直接执行:git push git push -u [remoteName] [localBranchName] // 克隆/复制 git clone <远程仓库地址> <new_project> // 上面的指令 -- 将远程版本库完全克隆到本地 new_project 目录下 // new_project 可省略 // 下载 git fetch 远程 分支 // 拉取远程仓库 ( 相当于 git fetch + git merge ) git pull [remoteName] [localBranchName] git pull --rebase 远程 // --rebase 选项,会用 git rebase 代替 git merge // 修改远程仓库 git remote set-url --push [name] [newUrl]
配置信息
// 查看配置信息 git config --list // 获取配置 name and email git config user.email git config user.name // 设置当前仓库的 user.name / user.email git config user.email xxxx git config user.email [email protected] // 设置全局 user.name / user.email git config --global user.name xxxxx git config --global user.email [email protected]
常见问题处理
(持续更新~)
1. 如果出现 warning: LF will be replaced by CRLF // (字符转换的问题 -- 包含混合换行符) git config --gobal core.autocrlf false // 提交检出均不转换 2. git pull 失败,出现 fatal: refusing to merge unrelated histories //(加上 --allow-unrelated-histories, 进行强行合并) // 原因:两个根本不相干的 git 库,一个是本地库,一个是远端库,本地要去推送到远端,被告知无法合并 git pull origin master --allow-unrelated-histories
相关推荐
formula 2020-11-12
huhongfei 2020-11-05
乾坤一碼農 2020-10-27
liumengyanysu 2020-10-22
E哥的aws认证攻略 2020-10-15
tianyafengxin 2020-10-08
guying 2020-10-05
好脑筋不如烂笔头 2020-09-17
nebulali 2020-09-11
佛系程序员J 2020-09-15
fenggit 2020-09-15
JustHaveTry 2020-09-11
兄dei努力赚钱吧 2020-09-06
IngeniousIT 2020-08-25
liumengyanysu 2020-08-17
guying 2020-08-16