目录
git checkout
git checkout迁出一个分支的特定版本。默认是迁出分支的HEAD版本
一此用法示例:
$ git checkout master #//取出master版本的head。
$ git checkout tag_name #//在当前分支上 取出 tag_name 的版本
$ git checkout master file_name #//放弃当前对文件file_name的修改
$ git checkout commit_id file_name #//取commit_id提交版本的file_name
$ git checkout -b dev/1.5.4 origin/dev/1.5.4
# 从远程dev/1.5.4分支取得到本地分支/dev/1.5.4
$ git checkout -- hello.rb
#这条命令把hello.rb从HEAD中签出.
$ git checkout .
#这条命令把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子.
#注意:在使用 git checkout 时,如果其对应的文件被修改过,那么该修改会被覆盖掉。
https://www.yiibai.com/git/git_checkout.html
git add
- git add -A 提交所有变化
- git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
- git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
git版本不同会有所区别:
链接:https://www.jianshu.com/p/65fb3fa62057
git pull
git pull 将远程主机的最新内容拉下来到本地工作目录后直接合并,即:git pull = git fetch + git merge,这样可能会产生冲突,需要手动解决。
git pull 的过程可以理解为:
git fetch origin master //从远程主机的master分支拉取最新内容
git merge FETCH_HEAD //将拉取下来的最新内容合并到当前所在的分支中
即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:
$ git pull <远程主机名> <远程分支名>:<本地分支名>
如果远程分支是与当前分支合并,则冒号后面的部分可以省略:
$ git pull origin next
//查询当前远程的版本
$ git remote -v
//直接拉取并合并最新代码
$ git pull origin master [示例1:拉取远端origin/master分支并合并到当前分支]
$ git pull origin dev [示例2:拉取远端origin/dev分支并合并到当前分支]
原文:https://blog.csdn.net/hanchao5272/article/details/79162130
<<<<<<< HEAD
本地代码
=======
拉下来的代码
>>>>>>>
git fetch
git fetch将远程主机的最新内容拉到本地仓,用户在检查了以后决定是否合并到本地工作本目录
$ git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地
$ git fetch <远程主机名> <分支名>取回特定分支的更新,可以指定分支名
$ git fetch origin master 最常见的命令如取回origin 主机的master 分支
取回更新后,会返回一个FETCH_HEAD ,指的是某个branch在服务器上的最新状态,我们可以在本地通过它查看刚取回的更新信息:
$ git log -p FETCH_HEAD
git fetch后的合并:
git reset
reset命令有3种方式:
1:git reset –mixed:此为默认方式,不带任何参数的git reset,即回退(撤销)commit和add,工作区不变。
2:git reset –soft:回退到某个版本,只回退(撤销)commit,不会(撤销)add。如果还要提交,直接commit即可
3:git reset –hard:彻底回退到某个版本,撤销commit、add、和工作区修改,本地的源码也会变为上一个版本的内容(危险)
git reset HEAD
什么都不会发生, 指针指向当前位置
git reset --mixed HEAD~1
HEAD~1 指上一个提交, HEAD~2 指上上一个提交
让暂存区和历史区与指定的提交保持一致,可以理解为撤销 git add
git reset --soft HEAD~1
让历史区与指定的提交保持一致,可以理解为撤销 git commit
git reset --hard HEAD~1
让工作区、暂存区和历史区都与指定的提交保持一致,可以理解为撤销所有改动
链接:https://www.jianshu.com/p/e84283d2f0f1
#回退所有内容到上一个版本
git reset HEAD^
#回退a.py这个文件的版本到上一个版本
git reset HEAD^ a.py
#向前回退到第3个版本
git reset –soft HEAD~3
#将本地的状态回退到和远程的一样
git reset –hard origin/master
#回退到某个版本
git reset 057d
#回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit
git revert HEAD
如果我们某次修改了某些内容,并且已经commit到本地仓库,而且已经push到远程仓库了
这种情况下,我们想把本地和远程仓库都回退到某个版本,该怎么做呢?
前面讲到的git reset只是在本地仓库中回退版本,而远程仓库的版本不会变化
这样,即时本地reset了,但如果再git pull,那么,远程仓库的内容又会和本地之前版本的内容进行merge
这并不是我们想要的东西,这时可以有2种办法来解决这个问题:
1:直接在远程server的仓库目录下,执行git reset –soft 10efa来回退。注意:在远程不能使用mixed或hard参数
2:在本地直接把远程的master分支给删除,然后再把reset后的分支内容给push上去,如下:
#新建old_master分支做备份
git branch old_master
#push到远程
git push origin old_master:old_master
#本地仓库回退到某个版本
git reset –hard bae168
#删除远程的master分支
git push origin :master
#重新创建master分支
git push origin master
在删除远程master分支时,可能会有问题,见下:
$ git push origin :master
error: Bydefault, deleting the current branch is denied, because the next
error:'git clone' won't result in any file checked out, causing confusion.
error:
error: You can set'receive.denyDeleteCurrent'configuration variable to
error:'warn' or 'ignore'in the remote repository to allow deleting the
error: current branch, with or without a warning message.
error:
error: To squelchthis message, you can set it to 'refuse'.
error: refusing to delete the current branch: refs/heads/master
To [email protected]:gitosis_test![remote rejected] master (deletion of the current branch prohibited)
error: failed to push some refs to'[email protected]:gitosis_test'
这时需要在远程仓库目录下,设置git的receive.denyDeleteCurrent参数
git receive.denyDeleteCurrent warn
然后,就可以删除远程的master分支了
虽然说有以上2种方法可以回退远程分支的版本,但这2种方式,都挺危险的,需要谨慎操作……
相关资源:Git恢复之前版本的两种方法reset、revert(图文详解)_gitrevert后...
原文链接:https://blog.csdn.net/weixin_39569753/article/details/111554567
————————————————
版权声明:本文为CSDN博主「bandaoyu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bandaoyu/article/details/94420488
git clean
删除git库中untracked files(未监控)的文件
在编译git库拉下来的代码时,往往会产生一些中间文件,这些文件我们根本不需要,尤其是在成产环节做预编译,检查代码提交是否能编译通过这种case时,我们往往需要编译完成后不管正确与否,还原现场,以方便下次sync代码时不受上一次的编译影响。
# 删除 untracked files
git clean -f
# 连 untracked 的目录也一起删掉
git clean -fd
# 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
git clean -xfd
# 在用上述 git clean 前,强烈建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删
git clean -nxfd
git clean -nf
git clean -nfd
原文链接:https://blog.csdn.net/RonnyJiang/article/details/53507306