欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

Git常见相关知识与命令

程序员文章站 2022-04-23 15:19:21
...

安装git程序

ContOS

Yum install –y epel-release

Yum install –y git

Ubuntu

Sudo apt-get install git

Windows上安装

https://git-scm.com/download/win

安装完成以后还需要最后一步设置

git config --global user.name "Qiang"//比如Qiang

git config --global user.email "zhiqiangwang@aliyun.com"//写入到你的邮箱

创建版本仓库并推送文件

Mkdir /home/gitroot //创建目录

Cd /home/gitroot //进入目录

Git init //用命令初始化。让这个目录编程git可以管理的仓库

Ls –a //可以看到.git目录

Echo –e “QIANG”>1.txt //创建一个文件1.txt

Git add 1.txt //把1.txt添加到仓库中

Git commit –m “add new file 1.txt” //add完了必须要conmit才算真正把文件提交到git仓库里

Echo –e “QIANG QIANG”>> 1.txt //更改1.txt

Git status //查看当前仓库中的状态,比如是否有改动文件

Git checkout --1.txt//将仓库中的1.txt覆盖本地的1.txt

Git diff 1.txt /可以对比1.txt本次修改了什么内容,相比仓库里面的版本

删除文件

1. git add test.txt

2. git commit -m "add test.txt"

3. rm test.txt

4. git status

5. git rm test.txt

6. rm 'test.txt'

7. git commit -m "remove test.txt"

上传当前目录下所有文件

1. git add .

2. git commit -m "updata all"

3. git push

版本的变更

多次更改1.txt 并进行git add,git commit操作

Git log //可以查看所有提交git仓库的仓库记录操作

Git log –pretty=oneline 一行一行显示

通过git log可以查看到过去提交的所有版本,所以根据这个log可以指定回退某个版本

Git reset –hard d03da70182c1e78d04df1d7eee2f6a972ae4f82b //可以回退该版本,这里是长字符串,可以简写(前5个字符)

Git reflog //可以显示所有的版本

文件恢复

当修改1.txt 发现修改的不对,想修改上一次提交的状态

Git checkout –1.txt//恢复到上一次提交的状态

如果1.txt修改完成,保存后,git add 1.txt了 但是没有git commit,再想回退到上一次提交是的状态,可以使用

Git reset HEAD 1.txt

然后再

Git checkout –1.txt

文件删除

Echo “QIANG” >2.txt

Git add 2.txt

Git commit –m “add new file 2.txt”

Rm –f 2.txt

Git status

Git rm 2.txt

Git commit –m “delete 2.txt”//彻底删除2.txt

创建一个远程的仓库

1.先注册一个免费的仓库https://github.com/或https://git.oschina.net/

2.权限认证,添加key

github :Setting->SSH and GPG keys->new SSH key->title和key输入进去

oschina:个人资料->SSH公钥->添加公钥->标题和公钥输入进入

生成密钥对:ssh-keygen

Liunx: Cat /root/.ssh/id_rsa

Cat /root/.ssh/id_rsa.pub //公钥

Windwos:Cat c:/Users/Cmd/.ssh/id_rsa

Cat c:/Users/Cmd/.ssh/id_rsa.pub

添加成功收到邮件

3.创建一个创建链接仓库

3.1 Mkdir /home/gitroot //创建目录

3.2 Cd /home/gitroot //进入目录

3.3 Git init //用命令初始化。让这个目录编程git可以管理的仓库

3.4 git remote add origin 仓库地址

git remote add origin git@git.oschina.net:zhiqiangwang/Qiang.git

3.4.1 origin是你的仓库的别名 可以随便改,但请务必不要与已有的仓库别名冲突

3.4.2仓库地址一般来讲支持

3.5 Echo –e “QIANG”>Qiang.txt //新建Qiang.txt

3.6 git add Qiang.txt

3.7 git commit –m “add Qiang.txt”

3.8 git push –u origin master //把本地的Qiang仓库推送到远程Qiang

3.9 Echo –e “QIANG QIANG”>>Qiang.txt //在Qiang.txt后面追加QIANG QIANG

3.10 git add Qiang.txt

3.11 git commit –m “update Qiang.txt”

3.12 git push //把本地的Qiang仓库再次推送到远程Qiang

克隆一个远程的仓库

Git clone git@git.oschina.net:zhiqiangwang/Qiang.git

分支管理

Git branch 查看分支

Git branch wang 创建分支

git checkout wang 切换wang分支

分支合并

Git merge wang //把wang分支合并到master

合并常见的问题

1. 如果master分支和wang分支都对Qiang.txt进行编辑,当合并时提示冲突,许先解决冲突才可以继续合并

2. 解决冲突的方法就是在master分支下,编辑Qiang.txt,改为wang分支里面的Qiang.txt的内容,然后提交Qiang.txt,在进行合并

3. 如果master分支更改的内容是我们想要的,可以编辑Qiang.txt内容,改为想要的然后提交,切换到wang分支,然后合并 master分支到wang分支即可。Merge后面跟的分支名字一定是最新的分支

4. Git branch –d wang //删除分支

5. Git branch –D wang /如果分支没有合并,强制删除

使用分支的原则

Master分支是非常重要的,线上发布代码的时候才用到这个分支

Dev分支就是专门用于开发的,重要发布线上之前才会把dev分支合并到master

开发人员应该才dev的基础上在分支成个人分支,个人分支里面开发代码,然后合并到dev分支

在dev分支合并bob分支命令就是

Git checkout dev //先切换dev分支

Git merge bob

现场保留

在wang 分支编辑wang.txt

去zhi分支修复bug,所以需要先git add wang.txt

然后 git stash保留现场

再切换zhi分支修复,修复完bug之后,在切回wang分支

Git stash list可以查看我们保留过的现场

Git stash apply 恢复现场

Git syash apply stash@{0} 恢复到指定现场

远程分支

git remote –v //查看远程库信息

git ls-remote origin//查看远程分支

推送本地分支wang到远程分支 wang并建立关联关系

a. 远程已有wang分支并且已经关联本地分支wang且本地已经切换到wang

git push

b. 远程已有wang分支但未关联本地分支wang且本地已经切换到wang

git push -u origin /wang

c. 远程没有有wang分支并,本地已经切换到wang

git push origin wang: wang

删除本地分支

git branch –d|-D wang

删除远程分支

git push origin :wang

git branch -m | -M oldbranch newbranch 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。

标签管理

标签类是于快照功能,给一个版本库打一个标签,记录某个时刻的状态,也可以随时恢复该状态

1. git checkout master 先切换master上

2. git tag v1.0 给master打上一个标签v1.0

3. git tag 查看所有的标签

4. git log –-pretty=oneline –-abbrev-commit//查看历史commit

5. git tag v0.9 d03da//针对历史commit打标签

6. git tag –a –m “tag just v1.1” d03da//可以对标签进行描述

7. git tag –d v0.8删除标签

8. git push origin v1.0//推送到指定标签远程

9. git push --tag origin//推送所有标签

10. git tag –d//删除本地标签

11. git push origin : refs/tags/v1.0删除远程标签

搭建git服务器

1. Yum install git

2. 添加git用户,并设置shell为/usr/bin/git-shell,目的是为了不让git用户远程登录

Useradd –s /usr/bin/git-shell

3. Cd /home/git

4. 创建authorized_keys文件,更改属主,属组合权限,用于存客户端机器上的公钥

5. Mkdir.ssh

6. ssh-keygen //使用该命令生成密钥对

7. touch authorized_keys

8. cat /home/git/id_rsa.pub>>/home/git/.ssh/authorized_keys.

9. Chown –R git.ssh或者Chown 600 .ssh/authorized_keys

10. 定义存储git仓库的目录 /data/gitroot

Mkdir /data/gitroot

Cd /data/gitroot

11. Git init –bare sample.git //创建一个裸仓库,裸仓库没有工作区,因为服务器上的git仓库纯粹为了贡献,所以不让用户登录到服务器上改工作区,并且服务器上的git仓库通过以.git结尾

12. Chown –R git.git sample.git

以上操作是在git服务器上做的,平时git服务器不西药开发人员登录去修改代码,他仅仅是充当一个服务器的角色,就像github一样,平时都是在我们自己的pc上做的

在客户端上克隆远程仓库

Git clone git@ip:/data/gitroot/sample.git

此时可以进入sample目录下,这个就是我们克隆远程仓库。进入到这里面进行开发,然后push到远程

相关标签: GIT,GIT命令