该命令git add [--all|-A]似乎与git add ..相同.它是否正确?如果没有,它们有何不同?
如果我在Subversion中删除文件,我该如何查看它的历史和内容?如果我尝试执行svn cat或svn log在不存在的文件上,它会抱怨该文件不存在.
另外,如果我想恢复文件,我应该svn add回来吗?
(我特意询问了Subversion,但我也想听听Bazaar,Mercurial和Git如何处理这个案例.)
我在尝试运行我的反应应用程序时收到以下错误:
combineReducers
以下是我导出combineReducers的方法:
import { combineReducers } from 'redux';
import userReducers from './userReducers';
import articleReducers from './articleReducers';
export default combineReducers({
userReducers,
articleReducers
});
Run Code Online (Sandbox Code Playgroud)
这是我如何导入它App.js:
combineReducers
我如何导出combineReducers有什么不对?
一个分支(refactoringBranch)有一个完整的目录重组.文件被混乱地移动,但内容被保留.
我试图合并:
git merge --no-ff -Xrename-threshold=15 -Xpatience -Xignore-space-change refactoringBranch
git status显示大约一半的文件重命名识别.但是项目中的10000个文件中有一半未被识别为移动.
一个例子是:
# On branch master
# Changes to be committed:
# deleted: 404.php
# new file: public_html/404.php
...
# deleted: AnotherFile.php
# new file: public_html/AnotherFile.php
...
# renamed: contracts/css/view.css -> public_html/contracts/css/view.css
Run Code Online (Sandbox Code Playgroud)
建议?
重构是在git之外进行的.我做了以下事情:
refactoringBranch原产地master. refactoringBranch,这意味着我在其他目录中进行了更改,只是将它们复制粘贴到我的git存储库中. 这是我的工作流程:
git checkout -b refactoringBranch
cp -R other/place/* ./
git add . -A
git commit -a -m "blabla"
git checkout master
git merge --no-ff …Run Code Online (Sandbox Code Playgroud) 语境
我经常在 Visual Studio 2022 中移动、重命名文件。重命名是标准的重构实践。但是,当我在解决方案资源管理器中重命名文件时,不会git mv执行任何操作,而是执行 git delete 和 git add 。
这会导致丢失该特定文件/类的历史记录,这在许多情况下都是巨大的损失。
问题
我可以离开 IDE 并使用命令行来执行移动操作
git mv myoldfile.cs mynewfile.cs
Run Code Online (Sandbox Code Playgroud)
这将完美地保留历史记录,但离开 IDE 会成为生产力杀手,尤其是在谈论重构和重命名多个类/文件时。
在解决方案资源管理器中重命名、移动文件时,如何git mv在 Visual Studio 中执行,而不是 git delete 和 git add?
使用IDE for Java的一个好处就是自动重构.我遇到的问题是,在使用Refactor> Move将类移动到另一个包(在文件系统中移动文件本身)之后,git status显示旧位置的文件已被删除,而新文件中的文件已被删除位置已添加.
我发现的解决方法很笨重:
mv src/com/example/newpackage/Foo.java src/com/example/oldpackage/Foo.java
git mv src/com/example/oldpackage/Foo.java src/com/example/newpackage/Foo.java
Run Code Online (Sandbox Code Playgroud)
有没有办法(当使用Eclipse的Git插件时)让重构做一个git mv而不是一个天真的文件系统移动?
我正在使用Rails 3.2,并开始使用脚手架并从中构建,但已经意识到我需要重命名整个脚手架(模型,视图,控制器db:migrate等).是否有内置方法来执行此操作,还是应该手动执行此操作?
在Git中重命名文件和文件夹时,有很多 关于如何保存历史记录的优秀 帖子.
这适用于git命令行界面:
#if you don't modify oldname.cpp or newname.cpp, git will understand your rename
git mv old.cpp new.cpp
git commit -am "renamed old.cpp -> new.cpp"
git log new.cpp #only shows the new commit
git log --follow new.cpp #shows ALL the history of old.cpp and new.cpp
Run Code Online (Sandbox Code Playgroud)
太棒了,所以这个--follow命令允许我们new.cpp在重命名之后获得所有的历史记录.这在git的命令行界面中效果很好.
但是,在github web界面中,历史old.cpp并未显示出来new.cpp.这是一个问题,因为我的许多团队成员都将他们的github帐户视为简历的一部分.如果他们的提交在重命名文件后没有出现在github中,那么他们就会失去恢复点.在主要文件名/目录重构之后,贡献者最终可能没有在repo上进行单个可见提交.
git log --follow在重命名文件后,如何在github Web界面(例如)中显示完整的文件历史记录?
或者我不会重命名任何东西,除非我愿意让偶然的github用户永远不会看到旧的提交?
当我在IntelliJ中重构类时,git会丢失文件旧日志的轨迹?有没有办法重构文件,以便保存日志,或者我错过了什么?
我在SourceTree中检查文件的日志,但我想它对于一切都是一样的.
我是团队中的新程序员.在我的第一天,我将这个重命名的文件放在一个舞台上,准备由git提交:
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: .gitignore
new file: reports/SQLS.rar
renamed: account/enter_rules.php -> enter_rules.old.php
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: account/enter_rules.old.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
account/enter_rules.php
Run Code Online (Sandbox Code Playgroud)
对于前2行,我没有问题.我知道发生了什么事.但是对于最后一个改名为:,我不确定应该做些什么.该系统运作良好.
在工作目录中我有:
account/enter_rules.php
Run Code Online (Sandbox Code Playgroud)
我找不到enter_rules.old.php文件.
看起来其他程序员已经从文件中创建了一个副本,命名为.old,实际上是一些测试和新代码,而不是分阶段进行更改而忘记提交.比他手动删除了old.php
应对这种情况的最佳方法是什么?我想在开始处理它并进行自己的更改之前先把git状态清楚.
我找到了这篇文章,但我不确定我是否应该或可以在我的情况下做出承诺.在git中处理文件重命名
在阅读了所有建议后,这对我有很大帮助,这就是我所做的: …
git status[1] 的文档隐含了它应该能够(具有C状态)检测重命名和副本,或者无论git diff -C应该采取什么措施,但都不能正常工作:
mkdir test
cd test/
git init
echo 'Hello World!' > hello.txt
echo 'Goodbye World!' > goodbye.txt
git add -A
git commit -m "Initial commit"
cp hello.txt copied.txt
mv goodbye.txt moved.txt
git add -A
$ git status --short
A copied.txt <------------ NO COPY DETECTED
R goodbye.txt -> moved.txt
$ git diff -M -C --summary --cached
create mode 100644 copied.txt <------------ NO COPY DETECTED
rename goodbye.txt => moved.txt (100%)
$ git commit …Run Code Online (Sandbox Code Playgroud) 当我重命名文件时,git认为我删除了该文件并创建了另一个文件.如何重命名文件,以便git知道我正在"重命名"它?