git 常用命令

Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库

理解工作区 与 暂存区的区别?

工作区:就是你在电脑上看到的目录,比如目录下 testgit 里的文件 (.git隐藏目录版本库除外)。
或者以后需要再新建的目录文件等等都属于工作区范畴。

版本库(Repository):工作区有一个隐藏目录 .git,这个不属于工作区,这是版本库。
其中版本库里面存了很多东西,其中最重要的就是 stage (暂存区),
还有Git为我们 自动创建了第一个分支 master,以及 指向master的一个指针 HEAD

一、我们前面使用Git提交文件到版本库有两步:

第一步:是使用 git add 实际上就是把文件添加到暂存区。
第二步:使用git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支上。我们只有将修改后的代码commit到本地仓库,才能使用push命令推送到远程指定的主机中。

 

1. git init,在当前目录下,执行初始化命令创建git版本库

git init

2. git config,需要我们填写个人信息,这个操作本应该在安装后设置, 设置后,所有本机提交的操作都会带有这个信息

git config --global user.email "XXXXXX @163.com"
git config --global user.name "python-110"

3. git add,用命令 git add 告诉Git,把文件从工作区放入到暂存区:

echo "11111111" >> README.md
git  add  README.md
#git add . #把在当前目录下的所有文件放入暂存区

4. git commit,用命令git commit 告诉Git,把文件从 暂存区 提交到仓库,-m 后面输入的是本次提交的说明,可以输入任意内容,输入说明对自己对别人阅读都很重要

git commit -m "第一次提交"

5. 可用 git status 查看git 的状态

git status

6. git diff,  想知道具体的修改内容:

[root@tjgjc-ai12 bin]#cat runoob.php

<?php
echo 'runoob';
?>

[root@tjgjc-ai12 bin]# vim runoob.php

<?php
echo '1';
?>

[root@tjgjc-ai12 bin]# diff runoob.php

diff --git a/runoob.php b/runoob.php
index b63d7d7..6094931 100644
--- a/runoob.php
+++ b/runoob.php
@@ -1,3 +1,3 @@
<?php
-echo 'runoob';
+echo '1';
?>

7. git remote,显示所有远程仓库:

git remote -v

显示某个远程仓库的信息:

git remote show [remote]
git remote show https://github.com/tianqixin/runoob-git-test

添加远程版本库:

git remote add [shortname] [url]
git remote add origin git@github.com:tianqixin/runoob-git-test.git

其他相关命令:

git remote rm name  # 删除远程仓库
git remote rename old_name new_name  # 修改仓库名

 

8.git push,以下命令将本地的 master 分支推送到 origin 主机的 master 分支。

git push origin master

相等于:  

git push origin master:master

如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:

git push --force origin master

删除主机的分支可以使用 --delete 参数,以下命令表示删除 origin 主机的 master 分支:

git push origin --delete master

不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要 -all 选项

 git push --all origin

如果当前分支与多个远程主机存在追踪关系,则可以使用 -u 参数指定一个默认主机,这样后面就可以不加任何参数使用git push

git push -u origin master

9. git pull,将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。git pull命令实际上就是其他两个命令的结合体,即:git pull = git fetch + git merge,先git fetch然后紧接着git merge,这样可能会产生冲突,需要手动解决。

git pull origin master:brantest

如果远程分支是与当前分支合并,则冒号后面的部分可以省略。

git pull origin master

上面命令表示,取回 origin/master 分支,再与本地的 master 分支合并。

10. git fetch,是将远程主机的最新内容拉到本地

git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地

 最常见的命令如取回origin 主机的master 分支

git fetch origin master

 

二、Git分支管理:

1.查看当前处在的分支

git branch --show-current

git branch,创建分支命令:

git branch (branchname)

列出所有分支。git checkout -b name 命令创建并切换分支后,分支没有内容是空的,git branch是看不到的,分支有内容才看到。

git branch
git branch -a

删除分支命令:

git branch -d (branchname)

2. git checkout,切换分支命令:

git checkout (branchname)

git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下,新分支的内容是当前分支copy过来的。

git checkout -b (branchname) 

3. git merge,将 newtest 分支合并到主分支去

git merge newtest

使用以下命令将origin主机的master更新同步到本地

git merge origin/master

 

 

三、Git分支合并冲突

1、本地冲突

在master分支上 vim runoob.php

<?php
?>

然后

git add .
git commit -m "1 runoob.php"

切换change_site分支,git checkout -b change_site,然后vim runoob.php

<?php
echo 'runoob';
echo 222;
echo 333;
?>

然后

git add .
git commit -m "echo runoob 222"

切换master分支修改runoob.php内容,再将 "change_site" 分支合并过来

git checkout master
vim runoob.php

<?php
echo 111;
?>

git add .
git commit -m "echo 111"
git merge change_site

发生冲突了

git merge change_site
Auto
-merging runoob.php CONFLICT (content): Merge conflict in runoob.php Automatic merge failed; fix conflicts and then commit the result.

vim runoob.php

<?php
<<<<<<< HEAD
echo 111;
=======
echo 'runoob';
echo 222;
echo 333;
>>>>>>> change_site
?>

修改runoob.php后

<?php
echo 111;
echo 'runoob';
echo 222;
echo 333;
?>

用 git add 要告诉 Git 文件冲突已经解决

git add .
git commit -m "solve conflict"

2、远程推代码冲突

本地的main分支推送远程远程仓库github.com的main分支发生冲突

解决方法:

 

创建新分支test

git checkout -b test

拉取远程仓库github.com的代码到本地空的分支test

git fetch MonitorSystemV1-BackEnd main:test

合并test分支到main

git checkout main

git merge test --allow-unrelated-histories

最后推送到远程仓库

 

 

四、提交代码到远程仓库

方式一:

1、新建目录

mkdir /git/tjgjc

2、初始化版本库

git init
git config --global user.email "448933144@163.com"
git config --global user.name "448933144"

3、添加远程仓库test

git remote add origin http://192.168.10.66/tjgjc/tj_factory_server.git

4、拉取远程仓库test的main分支到当前的master分支

git pull origin main:master

5、在git目录添加项目文件并提交到本地仓库,然后推送远程仓库test的main分支。报错,试试使用--allow-unrelated-histories,允许合并无关联的历史:

unzip /root/tj_factory_server-master.zip -d .
git add .
git commit -m "first commit"
git push origin master:main

 方式二:

1、新建目录

mkdir /git/tjgjc

2、初始化版本库

git init
git config --global user.email "448933144@163.com"
git config --global user.name "448933144"

3、添加远程仓库test

git remote add origin http://192.168.10.66/tjgjc/tj_factory_server.git

4、在git目录添加项目文件并提交到本地仓库

unzip /root/tj_factory_server-master.zip -d .
git add .
git commit -m "first commit"

5、拉取远程仓库的main分支到当前仓库的main分支

git fetch origin main:main

6、合并master分支到main分支

git merge master

7、修改和远程仓库有矛盾冲突的README.txt,并重新提交到本地仓库

vim README.md
git add .
git commit -m "change readme.txt"

8、推送远程仓库

git push origin master:main

 

posted @ 2023-04-06 00:39  苦逼yw  阅读(33)  评论(0编辑  收藏  举报