Git常用命令

Git常用命令

git核心示意图。remote就是GitHub仓库,你可以狭义的理解为你在https://github.com/网站上建的仓库。repository代表版本库,这个版本库是在.git里面保管着,你每次commit提交的东西就在这里面。index是暂存区。workspace是工作区,就是你实实在在编写的代码。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BMtYdKWJ-1589636699439)(images/git/image-20200516163037291.png)]

关联远程仓库

  1. 先在本地初始化仓库,然后关联远端仓库
git init本地初始化,建立一个仓库
git remote add origin(远端别名,随便起) 远端网址
可以用git remote -V 查看远端仓库。

首次推送远端
git push -u origin(远程) master(本地)或 master/wpc(本地某一个分支)
后续推送
git push origin master:wpc
				dev : dev
				本  :远
  1. 直接克隆远端已经有的仓库,这样就直接关联了
git clone 网址

添加文件到repository

git add files #完成跟踪文件 把已经跟踪的文件放到暂存区,注意:每次修改都要add一下才可以
git commit -m "my commit comments "

上面两句可以缩写为一句

git commit -am "my commit comments"# 因为每次修改都要add一下,为了简单起见,可以用缩写(前提是曾经add过该文件一次)

如果已经提交(commit)了一次,还没有push,用下面语句可以覆盖上次提交

git commit -a --amend -m "my new commit comments"
不追踪文件

如果不想追踪某个文件,可以用

git rm --cache files#这句话并不删除源文件,只是git不再管理该文件了

或者

git reset HEAD files#直接回到最新提交的版本
不修改文件

如果修改了某个文件,又不想修改了,并且你还没有add该文件,可以用下面命令恢复该文件

git checkout -- files
  1. 没有放暂存区

    git checkout -- files
    git checkout -- commit-id files 把文件还原到commit-id的样子
    
  2. 放在了暂存区

    1. git reset HEAD file 把文件file放到工作区,不追踪了
    2. git checkout -- files
    
  3. 放在了版本库

    git reset 进行版本回退

查看状态

git status 笼统的说明哪些文件改变了
git diff  详细说明哪一个文件的哪一行变了
----------
git diff HEAD^ HEAD 后面的文件比前面文件多了什么,或者少了什么
git diff HEAD^ -- README.md 当前README.md比HEAD^多了什么,或者少了什么
git diff HEAD 当前工作区与最新commit的差异
git diff --cache 查看已经add的文件的不同

---------------
git log 

git log --oneline --graph 

-----
git show # 详细内容 看commit的内容 

git show --stat  #简略只显示文件名字


-----------------
touch files 创建文件
cat files 查看文件内容
echo 字符串输出
echo "输出内容"
echo "输出内容" >> files name

版本回退

git reset --hard commit-id / HEAD^ 回退到某一个commit-id 不保存当前所有改变 (工作空间 index都变)
git rest commit-id (工作空间变 index不变)

分支管理

建立分支
git branch dev 建立分支dev
git checkout dev 切到分支dev

上面两句话可以合并成一句话

git checkout -b dev
查看、删除分支
git branch    查看分支
git branch -d dev  删除分支
显示分支图
git log --simplify-by-decoration --decorate --graph --oneline --all
分支建立追踪
git branch --set-upstream [branch] [remote-branch]

合并分支有两种方法

合并分支
merge合并分支1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-azsvB77N-1589636699446)(images/git/image-20200516210200148.png)]

合并分支分两步,如下

  1. 切到master分支

    git checkout master
    
  2. 合并bugfix分支到master

    git merge bugfix
    

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KH1bAanD-1589636699448)(images/git/image-20200516210236739.png)]

merge分支冲突1

如果分支发生冲突,解决冲突后执行如下命令:

git add files
git commit -m "solve merge conflict"
---------------------或者
git commit -am "solve merge conflict"
rebase合并分支2

在这里插入图片描述

合并分支分两步,如下

  1. 切到dev分支

    git checkout dev
    
  2. 合并bugfix分支到master

    git rebase master
    

    在这里插入图片描述

    Tips: rebasemerge不同的地方

    merge是在master分支上,然后执行git merge bugfix 把bugfix分支融合到master分支上

    rebase是在bugfix分支上,然后执行git rebase master 把bugfix分支融合到master分支上

    他们最后形成的commit提交结果也不一样。

rebase分支冲突2

rebase的时候,修改冲突后的提交不是使用commit命令,而是执行rebase命令指定 --continue选项。若要取消rebase,指定 --abort选项

git add myfile.txt
git rebase --continue

此时HEAD的指针是指向bugfix(图中issue3)的,我们需要执行如下命令把master分支移动到HEAD的位置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-opFxQurO-1589636699460)(images/git/image-20200516211626927.png)]

git checkout master
git merge bugfix(issue3)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3Nr1U1dz-1589636699463)(images/git/image-20200516211653086.png)]

拉取和推送分支

拉取分支
git pull [远程库] [远程分支]:[本地分支] # 注意:":"前后不要空格
------上面一句相当于下面两句
git fetch [远程库] [远程分支] #此时本地文件不变,产生了‘[远程库]/[远程分支]’分支,可以切到‘[远程库]/[远程分支]’分支查看,如果想合并该分支,在想要合并的主分支(例如master分支)上执行下面语句
git merge [远程库]/[远程分支]


------------------------------例子

git pull origin dev:dev #拉取远程dev分支到本地dev分支
-------
git fetch origin dev #本地生成origin/dev分支
git merge origin/dev  # 切到master分支上执行该语句,dev就会合并到master分支上
推送分支
git push [远程库] [本地分支]:[远程分支] # 注意:":"前后不要空格

git stash 常用指令

git stash 
git stash list 
git stash pop 

参考链接
猴子都能懂的git

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值