言午月月鸟
编程,带娃以及思考人生
首页
编程
带娃
思考人生
编程画图秀
GIT 常用操作
dingusxp
2732
## 是什么? > 一句话:目前最流行的版本管理系统。 ## 客户端 ### 分支操作 #### 查看分支 ``` # 若不加 -a 参数则仅显示本地分支 git branch -a ``` #### 创建新分支(远程) ``` # 创建本地分支 git checkout -b branch-name # 推送到远程 git push origin branch-name:branch-name # 设置关联(非必需) git branch --set-upstream-to=origin/branch-name branch-name ``` #### 拉取已存在的远程分支 ``` git checkout -b branch-name origin/branch-name ``` #### 删除远程分支 ``` git push origin --delete branch-name # 同步远程删除分支信息到本地 git fetch -p ``` #### 查看分支追踪情况及同步远程已删除分支信息 ``` git remote show origin git remote prune origin ``` ### 提交代码到本地仓库 ``` # 添加具体提交的文件 git add path/to/file # 添加所有修改文件 git add -A # 提交 git commit -m '提交说明' ``` ### 推送代码到远程仓库 ``` git push # 说明:如果尚未建立与远程分支关联的,需先手动建立 git branch --set-upstream-to=origin/branch-name ``` ### 标签操作 #### 查看标签 ``` git tag ``` #### 打标签 ``` git tag v1.0.0 git tag -a v1.0.0 -m "some intro" [commit-id] ``` #### 推送标签到远程 ``` # 推送指定 git push origin v1.0.0 # 一次全推 git push origin --tags ``` #### 删除标签 ``` # 先本地删除 git tag -d v1.0.0 # 再删除远程标签 git push origin :refs/tags/v1.0.0 ``` #### .gitignore 文件 想在代码库追踪中,忽略某个文件/目录(如一些本地生成的 .xxx 文件或者临时目录),常常借助于 .gitignore 文件。 使用上很简单,一行一个规则即可。支持: - 支持 [glob 模式](https://www.cnblogs.com/xdlysk/p/5183604.html),即: * ? [] 等匹配规则; - 模式最后添加 / 表示匹配的是目录; 示例: - *.swp 忽略所有 .swp 文件 - vendor/*/.git/ 忽略 vendor 的子目录里的 .git 目录 ## 服务端 ### 创建新仓库 ``` # 添加用户及授权 sudo adduser git su git cd mkdir .ssh touch .ssh/authorized_keys chmod 400 .ssh/authorized_keys # 手动将客户端授权文件添加到 .ssh/authorized_keys # (客户端生成公钥方法 见下方) # 创建新仓库 git init --bare /path-to-git-repo/new_project_name.git # 增加账户安全限制 # 在 /etc/passwd 文件中,修改 git 账户 git:x:1004:1004::/home/git:/bin/bash => git:x:1004:1004::/home/git:/bin/git-shell ``` #### 客户端生成授权文件方法 ``` ssh-keygen -t rsa -C "your-email@domain.com" # 一路默认,并按提示路径得到的 id_rsa.pub 文件内容 # 说明: windows 环境,先安装 git,再在 git-bash 开启的 shell 中运行上述命令;并注意设置 git 的 user.email 确保两者一致。 ``` ### 迁移仓库 首先建立新仓库; 然后在任意机器临时目录拉取原仓库完整信息并提交到新仓库。 ``` git clone --bare git://original-site:/path-to-git-repo/project_name.git project_name-tmp cd project_name-tmp git push --mirror git@new-site:/path-to-git-repo/new_project_name.git ``` #### 客户端切换远程地址 ``` git remote set-url origin git@new-site:/path-to-git-repo/new_project_name.git ``` ## 常见问题 ### 拉取 github 仓库超时出错 错误提示: error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054 处理方案: 1,调整 配置,bash / git bash 下运行: ``` git config http.postBuffer 524288000 git config http.sslVerify "false" # 如果网速太慢,再设置一下放宽限制 git config --global http.lowSpeedLimit 0 git config --global http.lowSpeedTime 999999 ``` 2,如果还不行,考虑强制设置 github 通过 IP 访问 修改 hosts 文件,指定 IP: ``` # GitHub Start 140.82.112.3 github.com 140.82.114.4 gist.github.com 185.199.108.153 assets-cdn.github.com 199.232.68.133 raw.githubusercontent.com 199.232.68.133 gist.githubusercontent.com 199.232.68.133 cloud.githubusercontent.com 199.232.68.133 camo.githubusercontent.com 199.232.68.133 avatars0.githubusercontent.com 199.232.68.133 avatars1.githubusercontent.com 199.232.68.133 avatars2.githubusercontent.com 199.232.68.133 avatars3.githubusercontent.com 199.232.68.133 avatars4.githubusercontent.com 199.232.68.133 avatars5.githubusercontent.com 199.232.68.133 avatars6.githubusercontent.com 199.232.68.133 avatars7.githubusercontent.com 199.232.68.133 avatars8.githubusercontent.com # Github End ``` 说明:如果上面配置已经失效,可以从如下地址获取最新hosts文件: - [googlehosts@github](https://github.com/googlehosts/hosts/tree/master/hosts-files) - [国内镜像@coding](https://scaffrey.coding.net/public/hosts/hosts/git/files/master/hosts-files/hosts) 注意:如果是 windows 系统,记得清除dns缓存;cmd 命令行下运行: ``` ipconfig /flushdns ``` 3,终极方案: 尽早迁移到国内仓库吧。。。 (如 gitee。迁移参照上方 “迁移仓库” 部分内容) ## 参考: [阮一峰的网络日志 - Git远程操作详解](http://www.ruanyifeng.com/blog/2014/06/git_remote.html) [配置hosts快速访问GitHub](https://www.cnblogs.com/qujingtongxiao/p/13041623.html "配置hosts快速访问GitHub")
粤ICP备19051469号-1
Copyright©dingusxp.com - All Rights Reserved
Template by
OS Templates