git的用法

git

远程HelloWorld项目仓库,代码版本:master主干分支

git bash:本地客户端

下载

####git clone 做的事情?

  1. 通过git clone ssh远程仓库地址就可以将远程仓库代码拉到本地
  2. 有两个东西自动创建,远程仓库名称origin,这个名字是上传时候用的名字,这个名字可以更改;在git bash下输入ls -a 有一个隐藏文件夹.git/,在.git/config文件中remote中,被""引起来的就是远程仓库名,可以进行一个更改
  3. 本地仓库,本地生成一个默认的主干分支master追踪的就是远程仓库origin/master,通过git branch -r就可以看到

git工作区:本地的代码目录

git pull

更新本地仓库的代码,有人提交了新的代码,其它人可以通过git pull进行本地的更新

上传

git status查看本地仓库与远程仓库文件数的区别,有哪些没有被上传

查看完成后,可以通过

git add 文件名 //上传单个文件
git add . //上传全部未上传文件

git add 的作用

把工作区的代码改动,提交到暂存区当中

提交后,可以通过git status查看状态

本地仓库分区

  1. git工作区
  2. 暂存区
  3. 本地仓库的代码分支上

git commit

把暂存区的代码提交到本地仓库的代码分支上

git commit -m "对文件的说明"

再用git status查看时,暂存区文件已经没有了

会给你提示,在本地的分支比远程仓库要新,就是更新了一些东西

$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
  (use "git push" to publish your local commits)

git push

把本地仓库推送到远程仓库

git push 远程仓库名(默认origin) master(本地分支):master(远程分支)
//现在本地分支和远程分支名字一样就可以省略
git push origin master
//把本地的master分支的代码推送到远程仓库的名字叫master分支上

其它

git log

查看日志,提交过的信息,修改的信息,针对于这一个远程库,也就是所有人只要用git push提交过修改,增加。都会有日志记录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9aYwwcvu-1592048544073)(E:\lycgitbub\c++集群聊天室\错误汇总\3.PNG)]

commit 后面是commit id在本地仓库区回退时,需要使用

git reflog

查看HEAD指针的改动日志

git branch

查看分支

git diff HEAD –

查看工作区file文件和仓库中该文件最新版本的代码有什么区别

回退

HEAD指针

指向当前分支最新的一次代码修改,我们可以通过修改该指针的指向来回退各个版本的代码

工作区代码修改回退:

git checkout -- <文件>

工作区更改完代码后不想要了,用git checkout – <文件名> 就可以把本地仓库的相应文件覆盖掉你在工作更改的文件

暂存区修改回退

工作区修改后的代码使用git add提交到暂存区后,不想要了,使用

git reset HEAD <文件> //不要文件
git reset HEAD //不要暂存区的全部文件

本地仓库代码修改回退

暂存区通过git commit -m “” 提交到本地仓库区后,发现代码有问题不想要了,使用

git reset --hard <commit id号>
//commit id号通过git log 就可以看到
//这个操作其实只是移动了HEAD指针,达到预期效果,实际上没有删除

远程仓库的代码回退

到这个地步,你已经很牛逼了,通过git push提交到远程仓库后,可以使用

//先使用
git reset --hard <commit id>
//把HEAD指针移动到提交到远程仓库前的那一步
//再使用
git status
//查看状态,发现本地仓库落后于远程仓库的提交
//强制提交,提前看好有没有人修改后
git push -f origin master

第二种方法

git pull
//然后修改错误文件
git push origin master

git推送代码冲突

两个人Agit pull得到代码版本V1修改后得到V2.

Bgit pull得到代码版本V1修改后得到V3.

B手速快,先更新到远程仓库

A再更新时,就出现问题了,git发现A的修改前的版本和远程仓库现在版本不一致,Agit push失败

解决方法

//先使用
git diff HEAd -- 文件名
//查看本地修改文件与远程仓库文件的区别
//再使用
git pull
//合并最新的仓库,再使用
git add filename
git commit -m "..."
git push origin master
//推送

如果改的是同一个地方,git不会替你合并,需要你自己手动合并

git分支版本控制

查看分支

git branch //查看本地分支
git branch -r //查看远程分支b
git branch -a //查看本地和远程的分支
lx@LAPTOP-ETA9C45R MINGW64 /e/lycgitbub/bitekeji (master)
$ git branch -vv //本地master分支追踪的是远程的master
* master 6921023 [origin/master] 学习git

创建分支

创建分支并切换到新创建的分支中来

blx@LAPTOP-ETA9C45R MINGW64 /e/lycgitbub/bitekeji (master)
$ git checkout -b sortdev
Switched to a new branch 'sortdev'

lx@LAPTOP-ETA9C45R MINGW64 /e/lycgitbub/bitekeji (sortdev)
$

新创建的分支,git pul没有用,因为git branch -vv 查看,新分支没有追踪远程客户端任何分支

切换分支

git checkout 分支名

其它分支提交代码

git add filename
git commit -m "filname description"//提交到本地的sortdev仓库

注意此时不能使用git push origin master,推送不了
此时要切换到主分支

git checkout master

然后合并分支

也可以不合并

git push origin sortdev:master

合并分支

git merge sortdev(分支名)

git merge 合并,直接把sortdev分支的代码合并到本地的master分支上来,不用再进行git add ,git commit -m

合并后直接推送

git push origin master

删除分支

git branch -d sortdev //删除,如果没有合并过不执行
git branch -D sortdev //强制删除

本地分支合并冲突

A在其它分支修改main.cpp

B在master上也修改main.cpp

A在合并时,原来master的main.cpp已经更改了

需要手动合并,合并完后

  1. git add
  2. git commit -m
  3. git push origin master

远程分支管理

创建远程分支和删除远程分支一般员工是没有权限的,所以此处的命令就不罗列了,大家感兴趣可以在网上查阅,这个操作只能由管理员来执行。如果是搭建自己的git私服代码托管,那就可以随便折腾了

  1. 查看远程仓库名称:git remote 一般远程仓库默认的名字是origin
  2. 查看本地分支:git branch
  3. 查看远程分支:git branch -r
  4. 查看本地分支和远程分支的追踪关系:git branch -vv
  5. 创建本地分支并指定追踪哪个远程分支:git checkout -b <本地分支名> <远程仓库名>/<远程分支名>
  6. 设置已经存在的本地分支追踪哪个远程分支:git branch -u <远程仓库名>/<远程分支名>

员来执行。如果是搭建自己的git私服代码托管,那就可以随便折腾了

  1. 查看远程仓库名称:git remote 一般远程仓库默认的名字是origin
  2. 查看本地分支:git branch
  3. 查看远程分支:git branch -r
  4. 查看本地分支和远程分支的追踪关系:git branch -vv
  5. 创建本地分支并指定追踪哪个远程分支:git checkout -b <本地分支名> <远程仓库名>/<远程分支名>
  6. 设置已经存在的本地分支追踪哪个远程分支:git branch -u <远程仓库名>/<远程分支名>

你可能感兴趣的:(一些小项目)