参考文档https://gitee.com/progit/
命令行指令 Git 全局设置 git config --global user.name "Administrator" git config --global user.email "admin@example.com" 创建新版本库 git clone ssh://git@192.168.91.15:2222/root/Use-Git.git cd Use-Git touch README.md git add README.md git commit -m "add README" git push -u origin master 已存在的文件夹 cd existing_folder git init git remote add origin ssh://git@192.168.91.15:2222/root/Use-Git.git git add . git commit -m "Initial commit" git push -u origin master 已存在的 Git 版本库 cd existing_repo git remote rename origin old-origin git remote add origin ssh://git@192.168.91.15:2222/root/Use-Git.git git push -u origin --all git push -u origin --tags
git与gitlab
git标签
- git 的 user 和 gitlab的用户对不对应并不相关(一般对应),只是配置了git user ,生成的ssh key,与gitlab相绑定
- 例:# git 上配置了用户 xiaozhang ,gitlab 使用的 zhangzhang用户登陆,通过ssh 秘钥的方式,xiaozhang能拉 gitlab zhangzhang 有权限的项目
常见的场景:对 当前/制定 版本打标签,推送到 gitlab
# 当前版本打标签 git tag -a v1.6 -m "v1.6" # 指定版本打标签 git log --oneline git tag -a v1.6 xxxx -m "v1.6" # 推送到gitlab git push -u origin v1.6 # 查看所有标签 git tag
1. git 基本操作
git config --global user.name 'zy' git config --global user.email 'xxx@qq.com' git config --global color.ui true
# 一般两种方式 为: 1. 本地初始化仓库,在添加远程仓库一般不用 git init 2. 直接克隆 远程仓库 git clone xxxxxxx
本地 暂存区 本地仓库 远程仓库 # git add / git commit -m "xx" # 任何增删改查的操作,通过上面两条命令,使得每一次改动,成为一个版本,且会在本地仓库有所记录,提交到远程仓库后,改动的版本记录也会保存在远程仓库 # 通过 git log --oneline 查看记录 # 每操作一次命令 就看一下状态 git status
本地到本地仓库同步之前 ## 增 touch a.txt git add . git commit -m "add a.txt" git push -u origin master ## 删除暂存区的文件,不删本地 touch a.txt git add . git rm --cached a.txt ## 删除所有的文件 touch a.txt git add . git commit -m "add a.txt" git rm -f a.txt git commit -m "del a.txt" ## 删除远程仓库的文件 touch a.txt git add . git commit -m "add a.txt" git push -u origin master git rm -f a.txt git commit -m "del a.txt" git push -u origin master ## 文件改名 ## 没add 之前 随便改,没有意义 ## add 后,没commit 之前,mv a.txt a 会被认为是误删除: touch a.txt git add . mv a.txt a git status : 此时会被认为 1:提交了文件a.txt 2:误删除了文件a.txt 两个事件系统不会认为是一起的 git add . git status : 此时会被认为 1:提交了文件a.txt 2:误删除了文件a.txt 3:提交了文件a 三个事件系统不会认为是一起的 git commit -m “xxx” git push -u origin master : 远程仓库会有两个文件,a.txt 和a 但是git status 仍然认为是a.txt 误删除 # git checkout -- a.txt 追回
本地到本地仓库同步之后 ## 文件改名 ## commit之后 直接mv 改会被认为是 误删除,且新加一个文件 git mv 1234 a.txt git status : 此时会被认为 文件1234 改名为 a.txt git add . git commit -m "xx" ## 删除 git rm -f a.txt git status git add . git commit -m "del a.txt" ## 查看指向的版本 git log --oneline --decorate git reset --hard xxxx 【回滚之后,就看不到之后的版本,需要先把所有的hard记录一下】 git reflog
# 对比当前工作区和暂存区的区别 git diff # 对比暂存区和本地仓库的区别 git diff --cached2. 标签
标签也是指向了一次commit提交,是一个里程碑式的标签,回滚打标签直接加标签号,不需要加唯一字符串不好记 [root@git git_data]# git tag ‐a v1.0 ‐m "aaa bbb master tesing version v1.0" # ‐a指定标签名 字 ‐m 指定说明文字 [root@git git_data]# git tag v1.0 [root@git git_data]# git tag ‐a v2.0 dbead4c ‐m "add bbb version v2.0" # 指定某一次的提交为标签 [root@git git_data]# git show v1.0 # 查看v1.0的信息 git show 加标签查看 [root@git git_data]# git reset ‐‐hard v2.0 # 直接还原数据到v2.0 HEAD 现在位于 dbead4c add bbb [root@git git_data]# ll 总用量 4 ‐rw‐r‐‐r‐‐ 1 root root 8 8月 23 11:26 a ‐rw‐r‐‐r‐‐ 1 root root 0 8月 23 11:25 b [root@git git_data]# git tag ‐d v2.0 # 删除标签 ‐d参数3. 分支
# 创建分支 git branch testing # 查看分支 git branch # 切换分支 git checkout testing # 切换并创建分支 git checkout -b testing # 删除分支 git branch -d testing
合并到主分支 1. 切换到master git checkout master 2. 合并testing 的内容 git merge testing 3. 用完就删除,下次再用在创建 git branch -d testing 如果两个人同时对一个文件的同一行进行操作,合并到主分支时,会提示代码冲突 需要手动解决:找到该文件进行手动编辑 然后在 git add . git commit -m""4.技巧
git 自动补全
不管怎么装的都有一个 git-completion.bash 文件,将此文件复制到你自己的用户主目录中
cp git-completion.bash ~/.git-completion.bash echo "source ~/.git-completion.bash" >> ~/.bashrc



