大多数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