git使用

大多数Git服务器使用SSH公钥进行授权。
使用ssh-kengen为账户生成公私钥
ssh-keygen -t rsa -C ‘346255609@qq.com
会在用户.ssh目录生成公私钥文件
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cc/.ssh/id_rsa): 私钥文件
Enter passphrase (empty for no passphrase): 公私钥文件是否需要密码,空不需要
Enter same passphrase again:
Your identification has been saved in /home/cc/.ssh/id_rsa.
Your public key has been saved in /home/cc/.ssh/id_rsa.pub.

登录github、gitlab平台上传公钥授权

本地设置全局git用户信息:
git config —global user.name ‘caohongchang’
git config —global user.email ‘346255609@qq.com

git下载指定分支
git clone -b 分支 giturl

git status 查看工作区相对于暂存区的差别

git add 将修改、新增从工作区添加到暂存区

git commit -m ‘注释’ 将暂存区内容添加到本地仓库

git push origin master 将本地版本库推送到远程

origin是远程主机,master表示远程的master分支

git log --pretty=oneline 查看日志

git reset --hard commitid 回退到指定版本

git checkout commitid /path/file  指定文件回退到指定版本

git checkout -- /path/file  撤销更改

git branch -a  查看所有分支,*代表当前处于哪个分支

git checkout -b 分支名字  创建并切换到新分支

git checkout dev  切换到dev分支

git branch -d dev  删除新建的本地分支dev

git checkout -b 本地分支名x origin/远程分支名x  拉取远程分支并创建本地分支

git push origin dev  推送新创建的分支dev到远程

git push origin --delete dev  删除远程分支

git clean -f  删除未跟踪的文件

git clean -fd  删除未跟踪的文件和目录

git remote  不带参数,列出已经存在的远程分支

git remote -v  列出详细信息

合并分支:
git checkout dev进入dev分支
vim z.php修改z文件
git commit .提交
git push origin dev推送到远程dev分支
此时进入master分支
git checkout master
在此期间z文件没有修改情况下,合并dev到master
git merge dev##合并指定分支(dev)到当前分支
Updating 808f4f7..c2069b2
Fast-forward##这次合并是快进合并,没有冲突,直接把master指向dev的当前提交

git push推送合并到远程

往往情况是多人同时修改一个文件,合并并没有这么愉快。
解决冲突
在dev分支修改z文件,提交。
在master修改z文件,也提交。
此时进入master,想要合并进来dev
git checkout master
git merge dev
CONFLICT (content): Merge conflict in source/z.php
Automatic merge failed; fix conflicts and then commit the result
表明合并有冲突,使用git status查看冲突文件,git遇到冲突时将所有修改同时保存在冲突文件中,
<<<<<<< HEAD当前分支中的修改
=======
>>>>>>> 要合并进来的分支的修改
手动解决掉冲突的位置后,重新提交。
git add .
git commit .
git push


https://blog.csdn.net/yxlshk/article/details/79944535
git reset和git revert
git恢复到之前版本的两种方法reset、revert
reset描述:
使用git经常会希望撤销提交操作,回到原来的样子,使用两种方法:回退(reset)、反做(revert)。
reset的作用是修改HEAD的位置,即将HEAD指向之前的某个版本,reset后,目标版本之后的提交就不见了。
适用场景:想恢复到之前某个提交,且那个提交之后的提交也都不要了,就可以用这种方法。
操作:
git log --pretty=oneline
git reset --hard commitId##命令将版本回退
git log查看,本地HEAD已经指向之前的版本
git push -f##使用git push会报错,因为本地HEAD指向的版本比远程要旧,所以加上-f 强制推上去。远程上也已生效。

revert的作用是反做一个新版本,新版本内容与要回退到的目标版本一样,但HEAD指针是指向新生成的版本。
适用场景:想恢复到之前某个提交(该提交不是merge类型),但又想保留目标版本后面的版本,记录下整个版本变动,就用这个方法。
操作:
git log --pretty=oneline
git revert -n commitId##反做,可能会出现冲突,手动修改冲突,git add
git commit
git log##查看新生成的版本
git push推向远程库。反做成功。

初始化的使用

创建仓库

cd 目录

git init 

git remote add origin git@ds.git

git pull

git add .

git commit

git push -u/-f origin master

git url设置错误时:

git remote set-url origin git@github.com:lookingfor/pro.git

git cherry-pick 

可以理解为”挑拣”提交,它会获取某一个分支的单笔提交,并作为一个新的提交引入到你当前分支上。

当我们需要在本地合入其他分支的提交时,如果我们不想对整个分支进行合并,而是只想将某一次提交合入到本地当前分支上,那么就要使用git cherry-pick了
用法
git cherry-pick [<options>] <commit-ish>...

常用options:
    --quit                退出当前的chery-pick序列
    --continue            继续当前的chery-pick序列
    --abort               取消当前的chery-pick序列,恢复当前分支
    -n, --no-commit       不自动提交
    -e, --edit            编辑提交信息

git cherry-pick <commit id>

git cherry-pick a3aed7c0


git diff origin/master

git diff --stat origin/master

git diff --stat origin/master master

在本地创建分支dev并切换到该分支

git checkout -b dev(本地分支名称) origin/dev(远程分支名称)

git已经删除了远程分支,本地仍然能看到的解决方法

使用命令 git remote show origin,可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息

此时我们可以看到哪些远程仓库已经不存在的分支,根据提示,使用 以下命令,这样就能成功在本地删除远程不存在的分支:

git remote prune origin

原文地址:https://www.cnblogs.com/caohongchang/p/10962581.html