企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
| GIT搭建服务器 | | | --- | --- | | yum -y install git | 安装git服务 | | git --version | 查看git服务器版本(windowns 客户端通用,查看Windows下的版本) | | id git用户名 | 查看git用户 | | useradd git用户名 | 创建git用户 | | passwd git | 设置git用户的密码 | | mkdir -p /home/git/.ssh/authorized_keys | 创建存放公钥的文件 | | 配置文件 | vim /etc/ssh/sshd.config | | --- | --- | | 打开以下三个配置的注释 | -- | RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 保存并重启 sshd 服务 systemctl restart sshd.service | 初始化Git仓库 | | --- | --- | 先选定一个目录作为Git仓库,假定是/home/git/socket.git mkdir -p /home/git git init --bare socket.git | 服务器仓库同步到站点 | | --- | --- | cd /socket.git/hooks touch post-receive vim post-receive 把下面的路径放入到文件(/www/web/socket/public_html为要同步的路径) git --work-tree=/www/web/socket/public_html checkout -f 赋予x执行权限 注意: /www/web/socket/public_html该目录最低733权限,也就是需要写权限,不然报错 | GIT客户端 | | --- | --- | | 生成公钥 | ssh-keygen -t rsa -C "247958201@qq.com" 把公钥导入到服务器/home/git/.ssh/authorized_keys cat /home/git/id_rsa.pub >> /home/git/.ssh/authorized_keys(没用) ssh git@192.168.182.132 'cat >> .ssh/authorized.keys' < ~/.ssh/id_rsa.pub | 客户端介绍 | | | --- | --- | | 工作区 | 即本地操作的文件和目录 | | 缓存区 | 即git add .操作,把add的文件或者目录加入到缓存区 | | master | 即master分支,在git commit -m 之后把add的文件或者目录提交到master分支,HEAD为master本地版本库的指针,缓存区和master在.git下面,即本地的版本库 | | 注意事项 | 以扩展名.md,.mkd,.mkdn,.mdown,.markdown等为结尾的文件,均以Markdown标记语言语法进行解析并显示 | | 连接远程仓库准备工作 | | --- | --- | 1、查看电脑上是否已经存在SSH密钥,有则跳过步骤2 (1)cd ~/.ssh 或者 cd /c/Users/Administrator/.ssh (2)cat id_rsa.pub 2、如果不存在公钥或目录,则从新生成 ssh-keygen -t rsa -C "your_email@youremail.com" (1)执行这条命令会提示文件保存路径,可以直接按Enter (2)然后提示输入 passphrase(密码),输入两次(可以不输直接两次Enter) (3)然后会在 .ssh 目录生产两个文件:id_rsa和id_rsa.pub 3、用记事本打开.ssh目录下的id_rsa.pub文件,复制里面的内容或者cat id_rsa.pub命令直接复制内容 4、复制ssh key到github:(这一步是到github的,如果自己有搭建git服务器,则可以直接去服务器上(CentOS) 将id_rsa.pub内的公共秘钥导入到到/home/git/.ssh/authorized_keys文件里,一行一个。)参考网址:廖雪峰的官方网站搭建git服务器 5、打开github网站,点击右上角扳手图标,然后点击左边菜单的 ssh key, 然后右边页面的 add ssh key,将复制的内容粘贴到github的key中,title可以不填,直接保存即可。(On the GitHub site Click “Account Settings” > Click “SSH Keys” > Click “Add SSH key”) | 用户信息配置 | | --- | --- | 查看自己的git配置信息 git config --list 设置用户名和邮箱地址,不带--global参数则只对本地lingwei版本库进行设置 git config --global user.name "lingwei" #此处name可修改且也不是用于登录github的登录名 git config --global user.email "247958201@qq.com" | 查看,关联,删除远程仓库 | | | --- | --- | | git init | 初始化(直接克隆则不需要初始化) | | git remote -v 或 git remote | 查看远程库信息 | | git remote add origin git@gitee.com:tp_lingwei/lingwei.git | 关联码云远程仓库 | | git remote rm origin | 删除已有的GitHub远程库,(origin为远程仓库的名字) | | ssh -T git@gitee.com | 检测是否连接到远程仓库,出现Successfully就OK | | 推送、拉取、克隆 | | | --- | --- | | git push -u origin master | 把缓存区内容推送到远程仓库(参数-u为第一次推送) | | git pull origin master | 与GitHub远程仓库同步 | | git clone git@gitee.com:tp_lingwei/lingwei.git | 从远程仓库克隆 | | 文件、目录、缓存区目录或文件操作 | | --- | --- | 1、删除工作区文件,且删除本地版本库里的文件,先删除工作区,通过git status可查状态,再提交到本地版本库 (1)git rm <file> (2)git commit -m '' 或者 (1)rm -rf <file> #linux的删除 (2)git add <file> (3)git commit -m '' 2、从工作目录中删除文件(参数-f为强制删除) git em -f <file> 3、重命名或者移动 git mv <file> <newfile> 4、删除本地文件或者目录,参数-r为删除目录时递归删除文件 (1)git rm [-r] file (2)rm -rf file(这个为linux命令,强制删除) 5、删除缓存区的文件 git rm --cache <file> 6、查看文件修改的地方 git diff <file> | 提交上传流程 | | --- | --- | 1、查看仓库的状态,不加参数-s则输出详细的信息 git status [-s] 注释 git status -s ?? <file> #问号表示该文件未被追踪,表示新创建的文件 未commit提交(咱未提交到版本库里) A <file> #A表示文件加入到缓存 AM <file> #AM(前绿后红)表示该文件在我们将它添加到缓存之后又有改动 已commit提交(版本库里已存在) M <file> #红色M表示该文件在我们将它添加到缓存之后又有改动,绿色M表示该文件已加入到缓存 MM <file> #MM(前绿后红)表示该文件在我们将它添加到缓存之后又有改动 D <file> #问号表示该文件在工作区已删除 2、加入到缓存区,(.为把修改的文件全部提交到缓存,或者直接指定文件路径) git add .[<path/file>] 或 git add -A 3、commit提交,也可以称之为快照(''分号里面的是注释) (1)git commit -m 'note' (2)git push -u origin master(参数-u为第一次推送) | 版本回退 | | --- | --- | 在把缓存区的文件commit之后,会生成一个commit_id(版本号),以作识别版本回退 1、查看历史版本,获取要回退的版本id,参数--pretty=oneline显示更优美 git log [--pretty=oneline] 2、开始回退,参数HEAD为当前版本,HEAD^为上一个版本,HEAD^^为上上个版本,以此类推,也可以写成HEAD~10(前10个版本) git rest --hard [HEAD[^]] 历史版本id 3、git push -f -u origin master (把修改推送到远程服务器) 4、回退出错,返回退(反撤销),页面没关可找到要反回退的版本id,找不到则执行以下命令 git reflog 5、找到要反回退的版本id git reset --hard <commit id> 6、比对工作区和commit提交到本地版本库的文件 git diff HEAD -- <file> | 日志操作 | | --- | --- | 1、查看commit的日志(从近到远),可看到commit的id,参数--pretty=oneline显示更优美 git log [--pretty=oneline] 2、查看每一次操作的日志,记录你的每一次命令 git reflog 3、把本地未push的分叉提交历史整理成直线 git rebase | 撤销修改 | | --- | --- | 1、查看未被传送到远程代码库的提交描述和说明 git cherry -v 2、撤销未被传送到远程代码库的提交 git reset commit_id 3、撤销工作区文件的修改(删除),即这个文件回到最近一次git commit或git add前的状态 git checkout -- <file> 4、把提交到缓存区的文件撤回到git add 之前的状态,再用上一条命令,撤销工作区文件修改至本地仓库一致 (1)git reset HEAD <file> (2)git checkout -- <file> | 对比操作 | | --- | --- | 1、比对工作区的文件和commit提交到本地版本库的文件 git diff HEAD -- <file> 2、显示已写入缓存与已修改但尚未写入缓存的改动的区别,即修改的详情 git diff 3、查看已缓存的改动,命令会告诉你有哪些内容已经写入缓存了 git diff –-cached 4、查看已缓存的与未缓存的所有改动,查看工作目录与上一次提交的更新的区别,无视缓存 git diff HEAD 5、显示摘要而非整个 diff,不想要看整个 diff 输出,但是又想比 git status 详细点, 就可以用 --stat git diff –-stat | 分支管理 | | --- | --- | 1、创建分支并切换分支(<branch name>==分支名) git checkout -b <branch name> 或者 (1)git branch <branch name> #添加分支 (2)git checkout <branch name> #切换分支 2、查看当前分支(列出所有分支,当前分支前面会标一个*号) git branch 3、合并分支 git merge <branch name> 4、删除分支 git branch -d <branch name> * 分支合并问题 场景 1、修改分支dev中<file>并git add . 和git commit -m 2、切换回主分支再修改<fiel>并git add . 和git commit -m 3、合并报错,起冲突 解决方法 1、cat <file> 2、直接修改文件的内容 3、git add . 和git commit -m 4、删除分支dev即可 * 查看分支合并情况 git log --graph --pretty=oneline --abbrev-commit * 合并分支策略 场景 1、合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息 2、如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息 3、--no-ff方式的git merge 解决方法 (1)git checkout -b dev (2)修改文件并git add . 和git commit -m (3)git checkout master (4)git merge --no-ff -m '' dev #--no-ff参数(普通模式合并),表示禁用Fast forward;因为本次合并要创建一个新的commit,所以加上-m参数,把commit描述写进去 * 修复bug合并分支策略 场景 1、正在dev分支修改 2、又需要修复bug,又不想提交dev分支 3、dev分支开发时间还很长,修复bug紧急 解决方法 1、利用stash功能,把当前工作现场“储藏”起来,等以后恢复现场后继续工作 git stash 2、切换到主分支,再创建另外一个临时分支issue (1)git checkout master (2)git checkout -b issue 3、在issue临时分支处理完并git add . 和git commit -m,再切换到主分支合并 (1)git add . (2)git commit -m '解决完bug提交' (3)git checkout master (4)git merge --no-ff -m '解决完bug合并' issue 4、切换回dev分支继续之前的工作,先查看工作现场 (1)git checkout dev (2)git stash list 5、恢复dev分支的工作现场 方法一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除 (1)git stash apply #git stash apply stash@{0} (2)git stash drop 方法二是用git stash pop,恢复的同时把stash内容也删了 git stash pop 6、再次查看工作现场检查是否存在内容,再查看工作区的状态 (1)git stash list (2)git status 7、正常之后继续工作 * 删除一个没有合并的分支 场景 1、分支dev开发完并git add . 和git commit -m 2、切换回主分支,再删除dev分支 解决方法 不能用正常删除分支的方法,不然报错,需强行删除 git branch -D <branch name> * 多人协作 1、都使用分支来开发 (1)通过克隆或者连接远程仓库pull拉取 克隆 git clone git@gitee.com:tp_lingwei/lingwei.git 连接远程pull (1)git remote add origin git@gitee.com:tp_lingwei/lingwei.git (2)git pull origin master (2)都创建分支dev git checkout -b dev (3)操作开发完,git add . 和git commit -m '',再push git push orgin dev 2、如果两人修改同一个文件,则后面push出现报错3的问题 解决方法 (1)git pull如果报错执行2步骤 报错提示 There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details. git pull <remote> <branch> If you wish to set tracking information for this branch you can do so with: git branch --set-upstream-to=origin/<branch> dev 原因 没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接 (2)git branch --set-upstream-to=origin/dev dev (3)如果合并起冲突,按照上面的解决方法处理,处理完执行以下方法 (1)git commmit -m '' (2)git push origin dev | 报错案例 | | | --- | --- | 1、执行ssh -T git@gitee.com报 Host key verification failed. 解决方法 ssh-keyscan -H github.com >> ~/.ssh/known_hosts 2、执行 git push -u origin master报以下错误 To gitee.com:tp_lingwei/lingwei.git ! [rejected] master -> master (fetch first) error: failed to push some refs to 'git@gitee.com:tp_lingwei/lingwei.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first 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. 解决方法 这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下: git pull --rebase origin master 这时你再push就能成功了。 3、执行git push origin master报错 fatal: refusing to merge unrelated histories 解决方法 这是因为我们没有关联远程分枝master,需要使用操作: git pull origin master --allow-unrelated-histories 4、执行git remote add origin git@gitee.com/tp_lingwei/lingwei.git fatal: remote origin already exists 原因 这说明本地库已经关联了一个名叫origin的远程库 解决方法 (1)git remote -v查看远程库信息 (2)如果不是要添加的仓库则执行git remote rm origin