The following untracked working tree files would be overwritten by checkout
git解决error: The following untracked working tree files would be overwritten by checkout在IDEA中进行分支切换时,出现如此错误,导致无法正常切换:error: The following untracked working tree files would be overwritten by checkout
通过错误提示可知,是由于一些untracked working tree files引起的问题。所以只要解决了这些untracked的文件就能解决这个问题。
产生原因
未跟踪文件(Untracked Files)冲突:
当前工作目录中有未被 Git 跟踪的文件,这些文件的路径与目标分支中的文件相同。 如果切换分支,将导致未跟踪文件被覆盖或丢失。
分支之间文件结构不同:
目标分支中可能新增了某些文件,这些文件与当前目录中的未跟踪文件重名。 误操作导致的未跟踪文件残留:
例如,手动复制文件到工作目录中,或者从其他工具中生成的临时文件。
Git 合并commit记录
在Git中合并commit记录是一个常见的需求,特别是在需要整理提交历史或合并多个小更改以保持项目历史清晰时。以下是合并commit记录的详细步骤,包括使用git rebase命令的方法:1. 确定要合并的commit范围
首先,你需要确定哪些commit需要被合并。这通常通过git log命令来完成,你可以使用--oneline参数来简化输出,使其更易于阅读。
git log --oneline
找到你想要合并的commit的哈希值(commit ID)和范围。
2. 使用git rebase -i命令合并commit
Git的rebase命令提供了交互式模式(-i),允许你重新排序、修改或合并提交。
git rebase -i <start-commit-id>~<number-of-commits>
或者,如果你想要合并从某个commit开始到当前HEAD的所有commit,可以使用:
git rebase -i <start-commit-id>^
注意:<start-commit-id>是你想要合并的commit列表中的第一个commit的哈希值,^符号表示该commit之前的提交(即不包括该commit本身)。<number-of-commits>是你想要合并的commit数量。
Mac 查看Git某个文件的历史记录
在windows下面有TortoiseGit很方便的就能点击右键查看到某一个文件的提交记录,但mac在SourceTree要找到某一个文件的提交记录才方便查看到该文件的历史记录。方法:
git log查看某一个文件的提交记录,然后根据git show 哈希值来看某一次提交记录,也可以直接在SourceTree下搜索该哈希值本看详细记录。
进入git项目目录
cd /projectName/
以下两种方式可以帮助你查看单个文件的更新log:
方式一:
1)、查看指定文件提交日志
git log fileName
将显示文件的所有提交记录。
注意: q退出日志展示效果,回车或向下键显示更多提交日志
git 更新远程代码到本地仓库(二)
当多个人共同开发一个项目的时候,有时候我们需要从服务器上更新别人提交的最新代码!今天我们看下如何从远程Git仓库获取更新到本地,我们可以尝试以下方式进行远程代码更新到本地。解决问题的方法永远不止一个,找一个适合自己的最简单方式即可!
方法一的传送门:git 更新远程代码到本地仓库(一)
1)查看本地分支文件信息,确保更新时不产生冲突:#git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
2)如果本地文件有改动,可以将本地修改文件还原到最初状态;若文件需要更新到服务器上,应该先merge到服务器,再更新到本地)
#git checkout -- [file name]
git 更新远程代码到本地仓库(一)
当多个人共同开发一个项目的时候,有时候我们需要从服务器上更新别人提交的最新代码!今天我们看下如何从远程Git仓库获取更新到本地,我们可以尝试以下方式进行远程代码更新到本地。
1)首先查看远程分支,通过如下命令可以查看远程仓库(我这里有一个origin仓库)
#git remote -v
origin http://ops-gitlab.***.net/test.git (fetch)
origin http://ops-gitlab.***.net/test.git (push)
2)接来下从远程获取最新代码到本地(我们通过使用如下命令在本地创建一个temp临时分支并将远程origin仓库中master分支的
代码下载到本地临时temp分支中:
#git fetch origin master:temp
remote: Counting objects: 18, done.
七个你必须重视的 Git 使用技巧
与其他技术相比,Git应该拯救了更多开发人员的饭碗。只要你经常使用Git保存自己的工作,你就一直有机会可以将代码退回到之前的状态,因此就可以挽回那些你深夜里迷迷糊糊犯下的错误。
尽管这么说,Git的命令行界面可是出了名的难掌握。接下来,就给大家介绍7个小技巧,最大限度发挥Git的作用。
通常,大部分时间我们都只会用到add、commit、branch和push/pull这些命令。大部分人熟悉这套只往一个方向运转的工作流。你们有没有想过,如果自己往仓库中添加了错误的文件,或是将代码提交到了错误的分支,而且提交信息还写错了的话,自己怎样才能取消之前的操作?如果你也是按照上面漫画中所描绘的一样操作的(即删除本地项目文件夹,再重新下载仓库),那么你就有必要了解下面这些Git使用技巧了。
1. 修改错误的提交信息(commit message)
提交信息很长时间内会一直保留在你的代码库(code base)中,所以你肯定希望通过这个信息正确地了解代码修改情况。 下面这个命令可以让你编辑最近一次的提交信息,但是你必须确保没有对当前的代码库(working copy)做修改,否则这些修改也会随之一起提交。
$ git commit --amend -m ”YOUR-NEW-COMMIT-MESSAGE”
假如你已经将代码提交(git commit)推送(git push)到了远程分支,那么你需要通过下面的命令强制推送这次的代码提交。
git 版本回退
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下:
Git is a distributed version control system.Git is free software distributed under the GPL.
然后尝试提交:
$ git add readme.txt
$ git commit -m "append GPL"
[master 3628164] append GPL
1 file changed, 1 insertion(+), 1 deletion(-)
像这样,你不断对文件进行修改,然后不断提交修改到版本库里,就好比玩RPG游戏时,每通过一关就会自动把游戏状态存盘,如果某一关没过去,你还可以选择读取前一关的状态。有些时候,在打Boss之前,你会手动存盘,以便万一打Boss失败了,可以从最近的地方重新开始。Git也是一样,每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误删了文件,还可以从最近的一个commit恢复,然后继续工作,而不是把几个月的工作成果全部丢失。
现在,我们回顾一下readme.txt文件一共有几个版本被提交到Git仓库里了:
标签: linux git reset reflog log
Git 常用命令总结
git init在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.
git clone
获取一个url对应的远程Git repo, 创建一个local copy.
一般的格式是git clone [url].
clone下来的repo会以url最后一个斜线后面的名称命名,创建一个文件夹,如果想要指定特定的名称,可以git clone [url] newname指定.
git status
查询repo的状态.
git status -s: -s表示short, -s的输出标记会有两列,第一列是对staging区域而言,第二列是对working目录而言.
git log
show commit history of a branch.
git log --oneline --number: 每条log只显示一行,显示number条.
git log --oneline --graph:可以图形化地表示出分支合并历史.
git log branchname可以显示特定分支的log.
git log --oneline branch1 ^branch2,可以查看在分支1,却不在分支2中的提交.^表示排除这个分支(Window下可能要给^branch2加上引号).
git log --decorate会显示出tag信息.
git log --author=[author name] 可以指定作者的提交历史.
git log --since --before --until --after 根据提交时间筛选log.
--no-merges可以将merge的commits排除在外.
git log --grep 根据commit信息过滤log: git log --grep=keywords
标签: git pull reset log status init commit
git 基础命令
Git基础配置git config --global user.name "robbin"
git config --global user.email "fankai#gmail.com"
git config --global color.ui true
git config --global alias.co checkout
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.br branch
git config --global core.editor "mate -w" # 设置Editor使用textmate
git config -1 #列举所有配置
用户的git配置文件~/.gitconfig
Git常用命令
查看、添加、提交、删除、找回,重置修改文件
热门日志
分类
- Django(4)
- ssdb(1)
- Mac(7)
- C(1)
- memcache(1)
- Python(32)
- Vim(8)
- sed(2)
- ansible(3)
- awk(4)
- shell(3)
- about(1)
- git(9)
- bat(4)
- svn(0)
- docker(1)
- Tornado(1)
- go(2)
- 架构(18)
- Vue(1)
- game(2)
- Html(6)
- Java(8)
- Mysql(37)
- Ajax(2)
- Jsp(1)
- Struts(8)
- Linux(72)
- JavaScript(39)
- Staruml(0)
- Mouth(1)
- Php(102)
- Windows(8)
- Message(48)
- Lua(10)
- Compute(1)
- Redis(7)
- Nginx(12)
- Jquery(1)
- Apache(1)
- cocos2d-x(8)