有关git的常用操作整理

 

最近开始使用git作为版本控制工具,但是自己老是记不住相应的命令,所以在这里整理部分有关git的命令,这里是git的官方文档

git官方文档

一、查看当前状态

1.1 查看当前commit内容的状态

git status

1.2 查看commit的日志

git log  #查看当前的commit内容
git reflog  #查看历史的commit内容

1.3 查看commit的具体修改内容

$ git diff readme.txt 
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
 Git is free software.

二、修改commit内容

2.1 如果git commit之后发现commit的message出现了错误,可以用以下的命令修改最近一次commit的message

git commit --amend

之后会出来一个vim编辑界面,直接修改commit message之后,:wq!退出即可

2.2 如果要修改的最近多次的commit message的话按如下的命令进行修改

git rebase -i HEAD~3

命令表示要修改最近3次commit的信息,输入之后会出来如下的信息

 pick:*******

 pick:*******

 pick:*******

按键盘i然后将pick改为edit,之后就可以保存退出,然后通过命令

git commit --amend

来切换进行commit message的修改,在全部修改完成之后,输入下面的命令完成修改

git rebase --continue

三、撤销版本修改

注意git在进行版本控制时,本质上是文件指针的移动

3.1 彻底删除最近的几次commit

git reset --hard 版本号#版本号可以用git log查看


git reset --hard HEAD^ #回退到上一个版本
git reset --hard HEAD~n #回退到n个版本前

注意这条命令会导致当前内容回到你指定的版本,这时你的工作区就是你所指定的版本的内容

另外如果你通过上面的命令进行撤回之后发现其实修改是可以的,想要变回去,也可以通过git reset --hard +版本号来实现

3.2 撤回commit但是保留更改

如果你在还没改完文件就commit,发现还需要加几个字在文件中,就不可以用3.1的命令,因为他会导致你之前做的修改全部丢失,如果你希望撤销commit,但把最近这一次commit的内容放到工作区,则可以通过以下的命令

git reset --soft 版本号#撤销后放到你的工作区
git reset --mixed 版本号#撤销后放到你的暂存区

注:如果你当前commit了一个版本,版本号为7ai923h,你上一次commit了一个版本,版本号为899hslfls,如果你要撤销最近一次的commit,但是保留做好的修改到工作区,你的命令应该是git reset --soft 899hslfls.之后还需要看情况添加一步git restore --staged . 把文件从add状态变成非add状态

3.3 撤回工作区的修改

如果你修改了当前文件,但是还没有将改文件添加到暂存区,也就是还没有执行git add 文件,可以用如下的命令修改

git checkout -- 文件名

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

#注:如果你新建了一个文件,但是还没有add,那么可以直接将该文件删掉,不会影响git的跟踪

3.4 撤销暂存区的修改

如果你修改了并且添加到暂存区但是还没有commit,那么可以用以下的命令将暂存区的修改取出,并放到你的工作区

git reset HEAD 文件名

结合上面的git reset --mixed 文件名,再利用git reset HEAD 文件名,就实现了git reset --soft的效果

四、删除文件

删除文件有两种方法

1、直接在命令行rm test.txt或者直接通过桌面应用删除文件,注意pycharm如果之前设置过自动加入跟踪,会主动把删除文件的操作进行git add操作,用git status查看此时的信息如下:

此时,文件还是未被提交的状态,可以,如果 git commit来实现对删除操作的提交

2、在命令行中 git rm -rf 文件名(目录/)#删除目录时要加r参数,再git commit修改

3、误删文件,如果误删了某文件,希望恢复,其实删除文件也可以视为对问文件的修改,按照上文的撤销一节的方式进行即可

以上面的图片为例,希望恢复package.json文件,那么执行命令,git reset HEAD package.json 和git checkout -- package.json即可

4、希望删除远端上的文件但不希望删除本地文件,如上传文件时不小心把.idea/文件也上传了,为了删除github上的文件,可以这样

git rm -r --cache .idea  #--cache删除暂存区的文件,不会删除本地的.idea,

git commit -m "delete .idea dir"

git push -u origin master

五、git rebase用法

1、git rebase -i这里的-i命令指的是interative交互,意思是采用交互的界面对commit进行编辑,完整的命令为:

git rebase -i startpoint endpoint

startpoint endpoint为相应的commit的版本号,如果缺失endpoint,那么默认为此时的HEADcommit,输入命令之后会出现如下的界面,

pick ****

pick ****

将pick修改为对应的命令进行修改,其中主要的命令如下:前面的字母为相应的缩写

p,pick:保留该commit

r,reword:保留该commit,但是修改该commit的注释

e,edit:保留该commit,但是需要修改该commit

s,squash:将该commit和前一个commit合并

f,fixup:将该commit和前一个commit合并,但不保留该提交的注释信息

x,exec:执行shell命令

d,drop:丢弃该commit

六、git分支

1. 创建分支:

git branch//查看所有的分支

git checkout -b tmp//创建并切换到tmp分支
git branch tmp//创建tmp分支
git switch tmp//切换到tmp分支
git checkout tmp//切换到tmp分支

2. 删除分支

git branch -d tmp//删除tmp分支

3. 合并分支

git merge tmp

需要先切换到需要的目标分支之下,再合并分支,注意合并分支的过程中可能会有冲突存在,需要对冲突进行手动处理

七、git添加远程程仓库关联

在本地仓库的命令行中输入:

$ git remote add origin https://github.com/guyibang/TEST2.git

八、git status操作

参考博客——Git Stash用法总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值