企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
~~~ git编译安装与常用命令 ========================================= 一:编译安装与设置 1.1:简介 github官网地址(下载源码包):https://github.com/git/git.git git 在 windows mac等系统下载:https://git-scm.com/downloads 1.2:依赖关系(解决常见的依赖关系) ~]# yum -y install gcc openssl openssl-devel curl curl-devel unzip perl perl-devel expat expat-devel zlib zlib-devel asciidoc xmlto gettext-devel openssh-clients ~]# yum -y install openssh-clients # ssh-keygen 出现 -bash: ssh: command not found 的解决办法 1.3:编译安装 方式一: ~]# make prefix=/usr/local/git all doc ~]# make prefix=/usr/local/git install install-doc install-html 方式二: ~]# yum -y install autoconf ~]# make configure 或者 autoconf # 备注:生成 configure 文件 ~]# ./configure --prefix=/usr/local/git ~]# make all doc ~]# make install install-doc install-html 方式三: ~]# yum -y install git # 安装 git ~]# yum -y install git-all.noarch # 安装 git 所有的包,非必须 1.4:环境配置 ~]# echo 'export PATH=/usr/local/git/bin:$PATH' > /etc/profile.d/git.sh ~]# . /etc/profile.d/git.sh ~]# git --version # 查看版本 1.5:man 文档配置 ~]# vim /etc/man_db.conf MANDATORY_MANPATH /usr/local/git/share/man 查看帮助 格式一: ~]# git help init 格式二: ~]# man git-init 1.6:ssh用户,权限,服务器身份认证,初始化仓库 与 拉取仓库 1:添加用户: ~]# useradd git 2:权限(用户组合用户均为git): /home/git/.ssh 权限为:700 /home/git/.ssh/authorized_keys 权限为:600 ~]# mkdir /home/git/.ssh ~]# chmod 700 /home/git/.ssh ~]# touch /home/git/.ssh/authorized_keys ~]# chmod 600 /home/git/.ssh/authorized_keys ~]# chown -R git:git /home/git/.ssh # 注意: id_rsa 权限为 600 id_rsa.pub 权限为 644 3:服务器身份认证(authorized_keys): 把本地的公钥 id_rsa.pub 里面的内容加入到 /home/git/.ssh/authorized_keys,一行一个,可以加入多个公钥,git 操作时不再需要密码。 4:初始化仓库:(结尾为 .git) 创建空项目 ~]# cd /home/git # 进入git家目录 ~]# git init --bare useryx.git # 例如 git init --bare 仓库名.git 项目已有内容 ~]# git init # cd 进入项目进行初始化 ~]# git clone --bare 目录名 仓库.git # 例如:git clone --bare useryx useryx.git # 仓库外面执行 5:修改仓库用户组为 git ~]# chown git:git useryx.git 6:拉取仓库 ~]# git clone [ssh://]用户名@地址:仓库名.git # 例如:git clone git@192.168.31.73:useryx.git 或者 家目录下的一个文件内如 git clone git@192.168.31.73:/home/git/dir/a.git 1.7:禁止ssh用户登录,可以不用设置。 ~]# vim /etc/passwd # 修改git 用户登录shell 1:使用linux系统的 /sbin/nologin 不允许登录 git:x:1001:1001::/home/git:/sbin/nologin 2:使用git服务 git-shell 的 /usr/local/git/bin/git-shell,which git-shell 查看命令位置。 git:x:1001:1001::/home/git:/usr/local/git/bin/git-shell 二:客户端初始化配置 2.1:客户端生成公钥与私钥 ssh-keygen(切换至需要生成公钥与私钥的用户) ~]# su - git # 切换至git用户 ~]# ssh-keygen # 使用默认 rsa 算法,2048 长度 ~]# ssh-keygen -t rsa -b 4096 -C 'git@aliyun.com' -P '3a/Jd3v1wq6M1lrAO+Qc4bCHb2W3SynSTg3CT1GS' # -t 指定算法 # -C 添加一个注释 # -b 指定加密长度,默认是2048,建议为4096 # -P 使用加密密码串 ~]# openssl rand -base64 30 # 30 为生成字符串的长度 # 使用 ssh-keygen 按照提示操作,也可直接回车。 2.2:设置用户名和邮箱 ~}# git config --global user.name "用户名" ~}# git config --global user.email "邮箱@aliyun.com" 2.3:初始化添加文件夹 1:创建新版本库(正常流程操作) git clone git@192.168.18.35:useryx.git cd useryx touch README.md git add README.md git commit -m "add README" git push -u origin master 2:已存在的文件夹或 Git 仓库 cd useryx git init git remote add origin git@192.168.18.35:useryx.git git add . git commit -m '初始化' git push -u origin master 2.4:查看默认配置文件 ~]# git config --list 或者 git config --l 2.5:不更新文件( .gitgmore) ~]# find ./ -name .gitignore # 查找 .gitignore 文件 ~]# find ./ -name .gitignore -delete # 删除 .gitignore 文件 # 不更新的文件或目录放于此文件中 2.6:本地克隆 ~]# git clone file://root/test /tmp/test ~]# git clone test /tmp/test # 本地的 git 项目克隆 三:基础操作 3.1:添加文件(add) ~]# git add filename # 添加某个文件 ~]# git add . 或者 git add -A # 添加当前目录所有文件 3.2:删除文件(rm) ~]# rm # 删除文件但不会删除索引 ~]# git rm -f filename # 未提交需要 -f 删除 ~]# git rm filename # 删除文件并删除索引 ~]# git rm --cached file # 删除索引,改变为未追踪状态 ~]# git cat-file -p hash码 # 查看文件内容 3.3:修改文件(mv) ~]# mv # 索引添加新文件,原来的索引会保留。提交时会有错误 ~]# git mv filename newfilename # 修改文件同时修改索引 3.4:索引文件添加到快照(commit) ~]# git commit -m '注释' ~]# git commit -am '注释' # 添加文件并提交注释 3.5:状态 ~]# git status 3.6:文件追踪 已追踪的(tracked) ~]# git ls-files 未追踪的(igored) ~]# git ls-files -o 被忽略的(untracked): 查看文件 .gitignore 3.7:提交与拉取 ~]# git pull # 拉取:从远程获取最新版本到本地,不会自动merge ~]# git fetch # 拉取:从远程获取最新版本到本地,会自动merge ~]# git push origin master # 提交:推送本地到远程主分支, 3.8:日志(log) ~]# git log ~]# git log --oneline # 行显示,短格式 ~]# git log --graph # 树型图 ~]# git log --pretty=oneline --abbrev-commit 3.9:文件比较不同 ~]# git diff filename1 filename2 # 比较文件 ~]# git diff dev # 比较当前分支与主分支 3.9:撤销操作(reset) 1:git reset –mixed <commit id> <filename>:此为默认方式,它回退到某个版本,只保留源码,回退commit和index信息 2:git reset –soft <commit id> <filename>:只回退 commit 的信息,保留 index ,如果还要提交,直接commit 3:git reset –hard <commit id> <filename>:彻底回退到某个版本,本地的源码也会变为上一个版本的内容 HEAD:当前分支的最近提交 ORIG_HEAD:合并时,新生成的提交保存于此引用中 HEAD^ 回滚前一次,工作目录不受影响 ^ 回退到上一次 ~<n> 回到几次,等于连续的 HEAD^ ~]# git reset --hard ORIG_HEAD # 提交后回退 commit 之前状态 四:分支 3.1:查看与新建分支 ~]# git branch --all ~]# git branch --list 3.:2:创建与切换分支 ~]# git branch <branch> # 创建分支(基于当前分支) ~]# git branch <branch> <hsah码> # 创建分支(基于指定 commit id 分支) ~]# git branch bug/first # 创建父目录分支(基于当前分支) ~]# git branch bug/first <hsah码> # 创建父目录分支(基于指定 commit id 分支) ~]# git checkout <branch> # 切换分支 ~]# git checkout -b <branch> # 创建分支时直接切换 3.3:查看分支以及相关的提交 ~]# git branch # 列出分支 ~]# git branch --list # 列出分支 ~]# git show-branch <branch> # 显示branch分支详细信息 3.4:删除分支 ~]# git branch -d <branch> ~]# git branch -D <branch> # 强制删除分支 ~]# git push origin --delete <branch> # 删除远程分支 ~]# git push --delete origin <branch> # 删除远程分支 3.5:绑定本地分支到远程 ~]# git push --set-upstream origin dev # 本地在 dev 分支上,执行此次操作后在 dev 分支只使用 git push 3.6:比较两个分支差异 ~]# git diff dev # 比较当前分支与 dev 分支的区别 3.5:合并分支 ~]# git merge dev # 合并 dev 分支到当前分支 3.7:恢复到合并之前 ~]# git reset --merge # 撤销到合并之前 3.8:查看失败的合并文件信息 ~]# git ls-files --unmerged 1:基础版本 2:我们的版本 3:他们的版本 ~]# cat filename(冲突的文件)修改文件内容 ++<<<<< ============ ++>>>>>>>>>. # 修改完成文件后 add 再次提交 3.9:重命名分支 ~]# git branch -m <branch> <newbranch> # 重命名本地分支 3.10:推送分支 ~]# git push origin <branch> # 推送本地分支到远程 五:打标签 5.1:tag介绍 git 有 commit,commit号是一串字符不便于查找,而 tag 的作用是更加清晰明了。 把完整的项目提交到 tag 标签,就可以实现版本的持续发布。 5.2:创建标签 ~]# git tag <name> 5.3:查看标签 ~]# git tag ~]# git show <tag name> # 可以查看到commit id 5.4:对 commit id 打标签 ~]# git tag <tag name> <commit id> ~]# git tag -a <tag name> -m "注释信息" <commit id> 5.5:删除标签 ~]# git tag -d <tagname> # 本地标签 ~]# git push origin :refs/tags/<tagname> # 远程标签 5.6:推送标签 ~]# git push origin <tagname> 推送指定的 ~]# git push origin --tags # 推送全部 六:常见问题解决办法 6.1:git status 查看状态时中文乱码 git config --global core.quotepath false 6.2:文件权限引起的冲突(文件显示被修改)(低版本git一般会出现此问题) git config core.filemode false ~~~