Git常用命令


初始化项目流程

查看流程
# 配置用户名和邮箱
git config --global user.name "你的名字"
git config --global user.email "你的Email"

# 生成公钥并部署,查看 [部署步骤](https://gitee.com/help/articles/4181)
# 生成sshkey windows生成的文件路径在 C:\Users\Administrator\.ssh 公钥文件为id_rsa.pub
ssh-keygen -t rsa -C "xxxxx@xxxxx.com"

# 在码云上新建项目并clone
git clone git@gitee.com:zero910/m-dev.git

# 添加远程主机别名、添加文件、提交、推送
git remote add origin-dev git@gitee.com:zero910/m-dev.git
git add '文件名或目录'
git commit -m 'update'
git push

Git命令

查看命令
# 添加远程主机 origin-dev为远程主机的名称,可自定义
git remote add origin-dev git@gitee.com:zero910/m-dev.git

# 删除远程origin 
git remote rm origin(远程主机名称) 

# 查看远程主机地址
git remote -v

# 修改本地代码关联的远程地址
git remote set-url  origin  http://jcode.cbpmgt.com/git/<your rep name>.git/

# 推送到远程主机的master分支
git push origin-dev master

# 基于master创建并切换到master-bug分支下
git checkout -b master-bug

# 查看本地都有哪些分支
git branch

# 查看本地分支和远程分支关系
git branch -vv

# 查看所有的分支,包括远程的
git branch -a
git remote show origin

# 创建分支
git branch xxx

# 从某个历史点创建分支
git branch xxx 31812

# 从现有的分支创建分支
git branch xxx master

# 删除本地的某个分支
git branch -D hongchangfirst

# 删除远程的分支
git branch -r -d origin/hongchangfirst

# 查看哪些文件修改了
git diff
git diff 文件名

# 如果远程新建了一个分支,本地没有该分支
git fetch origin(主机名)				更新远程仓库数据到本地
git checkout -b 本地分支名 远程分支名	基于远程分支创建并切换到本地分支下

# 查看提交日志
git log

# 退出git log
英文状态下按Q

# 查看哪些发生了改动
git status

# 查看任何一次提交的详细
# 运行git log得到commit 的 id
git show id名

# 撤销修改/切换分支
git checkout [文件名 | 分支名称]

# 合并分支
git merge 分支名

# 恢复本地删除了但没有提交到版本库的文件
git checkout -- [文件名]

# 恢复一个已经在提交中被删除的文件
【这里的$commit指的是对应的commit id。后面的~n是git的一种语法,
表明追溯某个提交的第n个祖先。
这里的意思就是检出删除这个文件的提交的上一个提交(届时那个文件还存在)中的对应文件】
git checkout $commit~1 [文件名 | ./(代表所有)]

# 暂存分支
git stash

# 把暂存的内容切换出来
git stash pop

FAQ

查看FAQ
# git push origin master 错误提示:error:failed to push som refs to 。。。
    先把远程服务器github上面的文件拉先来,再push 上去
    git pull origin master

# fatal:Couldn't find remote ref master
    fatal:'origin' doesnot appear to be a git repository
    fatal:Could not read from remote repository.  
    重新添加远程主机
    git remote add origin git@gitee.com:zero910/m-dev.git

# git push origin-t-api master
    To gitee.com:zero910/t-api.git
    ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'git@gitee.com:zero910/t-api.git'
    hint: Updates were rejected because a pushed branch tip is behind its remote
    hint: counterpart. Check out this branch and integrate the remote changes
    hint: (e.g. 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    解决:强制覆盖已有的分支(可能会丢失改动),再点击上传,上传成功。
    git push origin-t-api master -f

# The authenticity of host 'gitee.com (218.11.0.86)' can't be established.
    ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrQp+KkGYoFgbVr17bmjey0Wc.
    检查是否已经添加配置公钥
    公钥默认路径C:\Users\ma\.ssh

# Access denied exec request failed on channel 0 
    公钥,配置到远程仓库上失败。检查公钥是否配置在用户下而不是项目下

# SSH警告
    当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
    The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
    RSA key fingerprint is xx.xx.xx.xx.xx. Are you sure you want to continueconnecting(yes/no)?
    这是因为Git使用SSH连接,而SSH连   接在第一次验证GitHub服务器的Key时,需要你确 GitHu的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
    Warning: Permanently added 'github.com' (RSA) to the list of known hosts.这个警告只会出现一次,后面的操作就不会有任何警告了。

# github Host key verification failed.
    不是密钥问题,不是权限问题,只是在询问 (yes/no)的时候直接回车了,输入yes 再回车就ok了!

# Git :fatal: refusing to merge unrelated histories解决
    原因是两个分支是两个不同的版本,具有不同的提交历史
    git pull origin master --allow-unrelated-histories

代码冲突解决

执行 git pull 报错:Please enter the commit message for your changes. Lines starting # with '#' will be ignored

解决:Esc按钮 > 冒号按钮 > qa > 回车 > 去相应提示文件解冲突 > push命令提交