分布式版本控制系统 | Git 常用命令

目录

一、ssh连接

二、http连接(两种方式)

1.在 .git/config 文件中添加登录用户名和密码

2.执行命令设置用户和密码

三、设置身份验证

四、本地项目与远程服务器项目之间的交互

1.如果本地没有最新的代码,打算从头开始

2.已经有了新版代码,需要提交到远程服务器

五、常用Git命令

六、版本穿梭

1.版本回退

2.分支管理

创建分支

切换分支

合并分支

删除分支

解决冲突


一、ssh连接

客户机上产生公钥上传到gitlab的SSH-Keys里, git clone下载和git push.上传都没问题,这种方式比较安全。

这里其实咱们在部署的时候已经用过了(之前的博客:分布式版本控制系统 | Git 部署),比如之前使用的命令:

ssh-keygen
ssh-copy-id git@192.168.150.50

二、http连接(两种方式)

1.在 .git/config 文件中添加登录用户名和密码

在工作目录中操作:

cd .git
cat config


2.执行命令设置用户和密码

cd到根目录下执行:

git config --global credential.helper store

在执行过后会在 .gitconfig 文件中添加以下内容:

    [credential]
        helper = store

cd到项目目录,执行 git pull 命令,会提示输入账号密码。输入完这一次后只会将不要再次输入,并会在目录下生成一个 .git-ceadentials 文件

git pull

        Username for 'http://192.168.150.50:sauser/ansible.git':

        xxx@xxx.com Password for

        'https://xxxx@xxxx.com@192.168.150.50:sauser/ansible.git':

cat .git-credentails

         https://Username:Password@...

之后再 pull / push 代码将不再需要密码


三、设置身份验证

注意:设定本机用户名,绑定邮箱,让远程服务器知道机器的身份

git config --global user.name 'van'
git config --global user.email 'xxx@xxx.com'

四、本地项目与远程服务器项目之间的交互

1.如果本地没有最新的代码,打算从头开始

这里是项目的地址(可从项目主从复制),将远程服务器的内容完全复制过来:

git clone git@xxx.git

clone之后 cd 进入该项目的文件夹,新建一个文件:

touch test1

将新的文件添加到git的暂存区:

git add test1

将暂存区的文件提交到某一个版本保存下来,并加上注释:

git commit -m '这里是注释'

将本地的更改提交到远程服务器: 

git push origin master

2.已经有了新版代码,需要提交到远程服务器

先cd进代码所在的目录位置,进行初始化:

git bash git init

添加远程项目地址:

git remote add origin git@xxx.com

将目录中所有文件添加到暂存区,注意点:

git add .

提交所有代码到本机的版本库:

git commit -m '注释'

将本地的更改提交到远程服务器:

git push origin master
  • git中clone过来的时候,git 不会对比本地和服务器的文件,也就不会有冲突
  • 建议确定完全覆盖本地的时候用clone,不确定会不会有冲突的时候用git pull,将远程服务器的代码download下来 

五、常用Git命令

初始化:

git init

将某一个文件添加到暂存区:

git add test1

将目录下所有文件添加到暂存区:

git add .

将暂存区中的文件保存成某一个版本:

git commit -m '注释'

查看所有的版本日志:

git log

查看现在暂存区的状况:

git status

查看现在文件与上一次提交的-commit版本的区别:

git diff

回到上一个版本:

git reset --hard HEAD^

回退到前3次提交之前,以此类推,回退到n次提交之前:

git reset --hard HEAD~3

xxx为版本号,退回到指定版本:

git reset --hard xxx

从主分支pull到本地:

git pull origin master

从本地push到主分支:

git push -u origin master

pull默认主分支:

git pull

push默认主分支:

git push

六、版本穿梭

1.版本回退

这里其实上面已经写过了。使用 git log 查看每一个提交所对应的 commit 版本号:

git log

 使用 git reset 退回到上一个版本:

git reset --hard HEAD^

 回退到前3次提交之前,以此类推,回退到n次提交之前:

git reset --hard HEAD~3

xxx为版本号,退回到指定版本:

git reset --hard xxx

2.分支管理

创建分支

创建dev分支,然后切换过去,(这里的 -b 表示创建并切换):

git checkout -b dev

列出所有分支,当前分支前会添加一个 * :

git branch

在dev分支上正常提交:

git add test1 
git commit -m '注释'

切换分支

切换到master分支

git checkout master

合并分支

把dev分支的工作成果合并到master分支上:

git merge dev

将指定的分支与当前分支合并:

git merge

注意到上面的Fast-forward信息,Git告诉我们,这次合并是"快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都能Fast- forward,我们后面会讲其他方式的合并。

删除分支

删除dev分支:

git branch -d dev

解决冲突

创建新的feature1分支:

git checkout -b feature1 

修改readme.txt最后一行,改为:

Creating a new branch is quick AND simple.

在feature1分支上提交:

git add readme.txt 
git commit -m "AND simple"

切换到master分支:

git checkout master
Switched to branch 'master' Your branch is ahead of 'origin/master' by 1 commit.
Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。

在master分支上把readme.txt文件的最后一行改为:

Creating a new branch is quick & simple.

提交:

git add readme.txt 
git commit -m "& simple"
现在,master分支和feature1分支各自都分别有新的提交
这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
git merge feature1 Auto-merging readme.txt CONFLICT (content): 
Merge conflict in readme.txt Automatic merge failed; 
fix conflicts and then commit the result.
```

```shell
readme.txt文件存在冲突,必须手动解决冲突后再提交。
git status 冲突的文件;
直接查看readme.txt的内容:
Git is a distributed version control system.
Git is free software distributed under the GPL. 
Git has a mutable index called stage. 
Git tracks changes of files. 
<<<<<<< HEAD Creating a new branch is quick & simple. ======= Creating a new branch is quick AND simple. >>>>>>> feature1
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改后保存再提交:
git add readme.txt 
git commit -m "conflict fixed" 
[master 59bc1cb] conflict fixed

最后,删除feature1分支:

git branch -D feature1 
Deleted branch feature1 (was 75a857c).
```

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会调制解调的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值