git常用命令

内网:gitlab 外网:github、码云

工作区 add 暂存区 commit 本地仓库

查看git版本(git bash和linux的命令一样)

git --version

git为了管理需要设置用户name 和 email

git config --global user.name "zhangsan"
git config --global user.email "zhangsan@126.com"

git初始化仓库(生成.git文件夹)

git init

本地仓库:

将文件提交到暂存区(只有git仓库中才支持下面的git命令)

git add Demo.txt

将暂存区的内容提交到本地库

git commit -m "这是我提交的第一个文件" Demo.txt

git status 看的是工作区和暂存区的状态
git log 查看历史提交记录

git log --pretty=oneline
git log --oneline
git reflog

git reset 前进或者后退版本

git reset --hard 版本索引(HEAD当前索引 可通过git reflog查看)
hard 参数:本地库的指针移动的同时,重置暂存区,重置工作区
mixed 参数:本地库的指针移动的同时,重置暂存区,但是工作区不动
soft 参数:本地库的指针移动的时候,暂存区,工作区都不动
git reset 索引号 指针撤回到哪个索引(提交错了故事号场景需要撤回 结合reflog查看当前指针位置)

git diff 对比文件

git diff 文件名: 将工作区的文件和暂存区中的文件比较
git diff: 比较工作区中和暂存区中的所有文件的差异
git diff 索引号 文件名: 比较暂存区和本地库中的文件比较

git push 远程仓库 本地分支:将本地分支推送到远程

冲突1:分支1修改了文件1的第一行并且提交到了本地仓库,分支2改了文件1的第一行并且提交到了本地仓库 此时分支2想要合并分支1的功能

进入分支2 git checkout branch2  合并分支1 git merge branch1
产生冲突(命令窗口显示 branch2|merging 表示处于冲突状态),进入文件修改冲突 (HEAD表示当前分支内容,====用于上下文件分割),
修改完毕后 git add 文件名 提交到暂存区-> git commit -m "解决冲突" (注意后面不能带文件名)至此,冲突解决

冲突2:分支1修改文件1的第一行提交到本地库成功push到远程库成功,分支2修改文件1的第一行提交到本地库成功push到远程库失败(有冲突)需要先pull

新增远程仓库并且给远程仓库取别名:git remote add 别名 giturl
git允许不相关历史合并:例如我们的源是origin 分支是master 那么可以 git pull origin master --allow-unrelated-histories(2.92版本)

远程仓库拉取 pull == fetch(将远程仓库内容拉取到本地,本地仓库内容没变 然后) + merge

git fetch 远程别名 远程库对应分支 : 将远程库的内容拉取到本地,本地仓库内容没变

原理:svn是将工作目录的文件拷贝了一份到远程仓库,git是基于文件描述(类似一个数据库或者文件系统 文件有:文件盘、目录结构(tree对象)、内容(blob对象))

find ./git/objects/ -type f
git cat-file -t .git/objects/文件 查看文件类型
git cat-file -p .git/objects/文件 查看文件内容

当前分支HEAD指向master,master指向commit索引,切换分支就是更改commit索引

git 部分相关命令

echo "echo info to file" > xxx  --把内容输入到一个文件
git add xxx
git add -A  -- 把工作空间的所有内容添加到暂存区
git commit -m "xx"
git commit -am "xx"  --把暂存区的所有内容添加到本地工作区
git checkout readme.txt  --cache to work file恢复一个文件 file1 file2 恢复两个文件 .恢复所有文件
git status
git diff  --默认查看工作区和cache
git diff --cached  --比较cache和repository
git diff HEAD  --工作区和最新的repository
git diff commit-id  --工作区和指定的repository
git diff --cached commit-id  
git diff --commit-id commit-id
git reset HEAD^
git pull
git branch  -- -a查看所有分支 -av查看所有分支信息 -avv 查看所有分支信息和关系
git branch xxx  --基于当前分支创建分支
git branch newBranch oldBranch  --基于oldBranch创建分支
git branch -d xxx  --删除分支
git cat-file -p commitid  --查看文件内容(相关文件压缩了不能直接查看)
git cat-file -t commitid  --查看对象类型 blob commit tree

Fork原项目新增分支的同步和推送

获取远程分支内容

git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地(本地仓库没改,改变的是.git\refs里面对应的远程的commit索引)

切换分支:$ git checkout production

推送本地分支到origin(远端私仓):$ git push origin (本地分支名)

关联本地分支与远程分支:
使用git在本地新建一个分支后,需要做远程分支关联。如果没有关联,git会在下面的操作中提示你显示的添加关联。
关联目的是在执行git pull, git push操作时就不需要指定对应的远程分支,你只要没有显示指定,git pull的时候,就会提示你。
解决方法就是按照提示添加一下呗:
git branch --set-upstream-to=origin/remote_branch  your_branch
其中,origin/remote_branch是你本地分支对应的远程分支;your_branch是你当前的本地分支。

参考:https://www.jianshu.com/p/d0271da9f3ac
https://blog.csdn.net/wpflove/article/details/79732259

posted @ 2021-08-01 23:04  gsluofu  阅读(40)  评论(0编辑  收藏  举报