git 使用
参考文档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 的 user 和 gitlab的用户对不对应并不相关(一般对应),只是配置了git user ,生成的ssh key,与gitlab相绑定
- 例:# git 上配置了用户 xiaozhang ,gitlab 使用的 zhangzhang用户登陆,通过ssh 秘钥的方式,xiaozhang能拉 gitlab zhangzhang 有权限的项目
git标签
常见的场景:对 当前/制定 版本打标签,推送到 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 --cached
2. 标签
标签也是指向了一次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
|