git 命令

全局配置 git 信息

git config --global user.name test # 全局配置信息
git config --global user.email test@qq.com # 全局配置信息
git config --global color.ui true # 全局配置信息
git config --list # 查看配置信息
git config --unset --global user.name # 删除全局配置的信息
git remote show origin # 查看远程仓库基本信息

移动仓库

# 1.先克隆老项目的镜像
git clone --mirror old.git # (old.git 为老项目的git地址)
# 2.进入老项目的目录
cd old.git
# 3.移除老项目的地址替换成新项目
git remote set-url --push origin  new.git # (new.git 为新项目的git地址)
# 4.将镜像推到远程
git push --mirror  # 这一步需要输入新的git的账号和密码

移除仓库

rm -rf .git
git init

初始化

git init

克隆代码

git clone http://test.com # 克隆代码
git clone http://test.com  newDev # 克隆代码到 newDev 文件夹下
git clone -b old http://test.com # 克隆分支

代码克隆后配置项目级个人信息(提交时默认带上)

git config user.name "xiao"
git config user.email "test@qq.com"

获取最新远程文件

git pull
git pull --rebase origin test # 获取其他分支并到本地
git pull origin dev # pull 对应分支
git fetch # 提取远程 origin/master 分支的更新
git status # 查看是否有更新
git merge origin/master # 合并更新到本地分支

# 拉取远程分支
git fetch origin dev # 将远程 dev 分支更新到本地
git checkout -b dev origin/dev # 将远程分支拉取到本地新建的分支

pull 的问题:

  • git pull 的问题是它把过程的细节都隐藏了起来,以至于你不用去了解 git 中各种类型分支的区别和使用方法
  • pull = fetch + merge,而将下载(fetch)和合并(merge)放到一个命令里的另外一个弊端是,你的本地工作目录在未经确认的情况下就会被远程分支更新

在实际使用中,git fetch 更安全一些,因为在 merge 前,我们可以查看更新情况,然后再决定是否合并

上传

git status # 查看当前工作目录状态
git add . # 将所有文件都添加到暂存区
git add 文件夹/  # 添加某个文件夹及内容
git add *.文件类型  # 添加目录中所有此文件类型的文件
git commit -m 'test' # 添加描述信息
git commit -am "test"  # 简写 add . 和 添加描述

# 首次上传
git commit -am "test" # 提交并添加描述信息
git remote add origin https://test.com  # 添加远程地址
git remote -v # 查看远程地址
git push -u origin master # 跟踪上传 master 分支到远程版本库
git push -u origin test:master # 本地库(test)和远程库(master)名称不一致的上传
git push origin dev # 不跟踪上传 dev 分支到远程版本库
git push origin test:dev # 本地库(test)和远程库(dev)名称不一致的上传

# 以后上传
git commit -am "test"
git push
git push origin dev # 提交某分支

# 部分提交
git add .
git commit src/path -m "test"
git push

新建 - 查看 - 切换 - 删除分支

git branch dev # 新建 dev 分支
git push --set-upstream origin dev # 新建远程分支 dev(先 checkout 到需要上传的分支,之后再新建)

git branch # 查看所有分支
git branch -r # 查看远程分支

git checkout old # 切换分支
git checkout -b dev # 切换(如果不存在并新建)分支

git checkout other # 先切换到别的分支
git branch -d dev #  删除本地分支
git branch -D dev # 强制删除本地分支
git push origin --delete dev # 删除远程分支(本地分支不会删除)

git branch -m dev newDev # 重命名分支为 newDev

远程分支重命名

# 重命名远程分支对应的本地分支
git branch -m old-local-branch-name new-local-branch-name
# 删除远程分支
git push origin  :old-local-branch-name
# 上传新命名的本地分支
git push origin  new-local-branch-name

合并分支

合并分支所有内容

git checkout master # 先切换到要合并的分支
git merge dev # 将 dev 合并到当前 master 分支(注意冲突问题)

合并分支部分内容

# path 可以是多个,中间空格隔开
git checkout source_branch <path>...

将 master 分支的 certification 文件合并到当前 lf 分支
在这里插入图片描述

本地仓库

git stash save "save message" # 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。
git stash list # 查看stash了哪些存储
git stash show # 显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
git stash show -p # 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p
git stash apply # 应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 
git stash pop # 命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}
git stash drop stash@{$num} # 丢弃stash@{$num}存储,从列表中删除这个存储
git stash clear # 删除所有缓存的stash

查看提交日志

git log # 查看完整日志(q 键退出)
git log --oneline  查看简单日志
git log --oneline --author="xiao" # 查看肖泽提交的所有日志
git log --oneline --grep="index.html" # 查看仅包含 index.html 的修改
git log --oneline --before="2018-09-12" # 查看某天(也可以是 `3 days` 之类的)的提交日志
git log --oneline --decorate # 查看并美化显示
git log --oneline --decorate --all # 查看所有的
git log --oneline --decorate --all -10 -graph # 查看所有的,显示十条,并带点图形效果

恢复提交( revert ) 重置提交( reset )

git log --oneline # 查看并获取提交 id
git revert ae77607 # revert 前面的提交 id,恢复提交
# 填写 :wq 退出信息添加

# reset 后面跟对应提交的 id
git reset --soft # 不会影响工作区和暂存区的东西(重置到 commit 前)
git reset --hard # 会将工作区和暂存区充值到指定的状态(重置到文件修改前)
git reset --mixed # 默认选项,将暂存区重置到指定地方(重置到 add 前)

# 强行 pull 远程文件并覆盖到本地
git reset --hard origin/master
git pull

代码恢复(恢复 reset、stash 等)

# 查找历史 ID
git reflog
git fsck --lost-found
# 对比修改
git show ID
# 恢复
git reset ID

查看提交区别

git diff index.html # 将要提交前后 index.html 的区别(add 之前)
git diff --staged # 对比暂存区与远程区别(add 之后)
git diff master..branch # 对比 master 和 branch 所有的不同
git diff master..branch index.html # 对比 master 和 branch 的 index.html 不同
git diff fee9f9cf4b cdd577e352 app/index.html # 对比同一文件的不同版本修改

打 tag (可以固定版本号)

tag 类似一个只读的 branch,一般为每一个可发布的里程碑版本打一个 tag

# 列出已有 tag
git tag
# 新建 tag 默认为当前分支最后的一个 commit 创建的 tag
git tag <tagName>
# 以某一个特定的提交为 tag
git tag -a <tagName> <commitId>
# 加上 -a 参数来创建一个带备注的 tag
git tag -a <tagName> -m "my tag"
# 查看 tag 详细信息
git show <tagName>
# 将 tag 推送到远程
git push origin <tagName> # 推送某个
git push origin --tags # 全推
# 切换到某个 tag,注意,这种切换之后修改提交,将不属于任何分支,并且将无法访问,如果需要修改,推荐用下面的方式切换
git checkout <tagName>
# 检出标签,如果修改,虽然分支中的代码改变了,但是 tag 标记的 commit 还是同一个,标记的代码是不会变的
git checkout -b <branchName> <tagName>
# 删除某个 tag
git tag -d <tagName>
# 远程删除
git push origin :refs/tags/<tagName>

本地的删除 - 恢复 - mv

注意:本地 git 操作需要 commit 后才可对文件执行

# 以下操作都是本地 git 操作
git rm test.html # 删除本地 git 的 test.html 文件

git checkout HEAD -- test.html # 恢复删除的文件(未 commit)
git checkout HEAD^ -- test.html # 恢复上一次 commit 前删除(或修改)的文件(一个 ^ 代表上一次,n 个就是上 n 次)

git mv test.html newTest.html # 将 test.html 重命名为 newTest.html
git mv test.html html/ # 将 test.html 移动到 html 文件下

获取 git 地址下的特定文件

# 目标,获取 https://......git 开源项目的 examples/target 文件内容做测试
git init
git remote add -f origin https://github.com/pallets/flask.git
ls # ctrl + c
git config core.sparsecheckout true
echo "examples/flaskr" >> .git/info/sparse-checkout
cat ./.git/info/sparse-checkout 
git pull origin master 

保存修改状态

git stash save 'change...'
git stash list # 查看保存修改状态列表
git stash show -p stash@{0} # 查看修改前后对比(结尾 stash 是 list 中的编号)
git stash apply stash@{0} # 恢复保存的工作进度
git stash drop stash@{0} # 删除保存的工作进度

全局 ignore 文件

# 在执行命令的目录下新建 .gitignore_global 文件并配置 ignore 文件
git config --global core.excludesfile ~/.gitignore_global
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值