Git速查表
给Git速查表添加补充内容。
只提交特定的文件
在之后,通过空格分隔指定文件。
git commit -m "update" -- foo.cpp hoge.cpp
.gitignore的格式编写
(参考来源)
# "#" で始まる行はコメント
*.exe # 拡張子exeは無視
bin/ # binの中身は無視
!/bin/readme.txt # ただし/bin/readme.txtは含める
package/**/*.xml # packageフォルダ内の拡張子xmlのファイルは無視
*local_back/ # 階層にかかわらずlocal_backという名前のフォルダをすべて除外する
让.gitignore生效
在执行git add .等操作后,如果更新了.gitignore文件,需要按照以下方法进行:
在不删除本地文件的情况下,删除git的缓存。(来源)
git rm -r --cached . //ファイル全体キャッシュ削除
git rm -r --cached [ファイル名] //ファイル指定してキャッシュ削除
在最后一次提交中添加更改变动。
(来源)
$ git add .
$ git commit --amend --no-edit
修改提交消息
更改最新提交的消息。(出典)
git commit --amend -m "new comment"
修改两个以上以前的提交消息。(引用)
$ git rebase -i HEAD~2
pick <コミット1のhash> update hoge.cpp
pick <コミット2のhash> 古いコメント
// 以下に書き換える
pick <コミット1のhash> update hoge.cpp
edit <コミット2のhash> 新しいコメント
$ git commit --amend
$ git rebase --continue
撤销提交
git reset --soft HEAD^ // ローカルファイルには影響しない
git reset --hard HEAD^ // ローカルファイルもコミット前に戻す
撤销首次提交
可以使用这种方法来撤销首次提交,但不仅仅限于首次提交的情况。 (出处)
git update-ref -d HEAD
取消撤销提交。
使用git reflog命令查看内容,并选择要撤销的地点。(引用)
$ git reflog
4231432 HEAD@{1}: reset: moving to HEAD^
5432554 HEAD@{2}: commit: update foo
5432656 HEAD@{3}: commit: update bar
$ git reset --soft HEAD@{1}
调整提交的顺序
(来源)
// 過去3つ分のコミットを表示
$ git rebase -i HEAD~3
pick <コミット1のhash> update hoge.cpp
pick <コミット2のhash> update fuga.cpp
pick <コミット3のhash> update piyo.cpp
// コミット2とコミット3を入れ替える
edit <コミット1のhash> update hoge.cpp
pick <コミット3のhash> update piyo.cpp
pick <コミット2のhash> update fuga.cpp
// 保存して完了
将提交合并
$ git rebase -i HEAD~3
pick <コミット1のhash> update hoge.cpp
pick <コミット2のhash> update fuga.cpp
pick <コミット3のhash> update piyo.cpp
// コミット2にコミット3を統合する
pick <コミット1のhash> update hoge.cpp
pick <コミット2のhash> update fuga.cpp
fixup <コミット3のhash> update piyo.cpp
// 保存して完了
回溯到之前的多个提交并重新编写历史记录。
(来源)
$ git rebase -i HEAD~3
pick <コミット1のhash> update hoge.cpp
pick <コミット2のhash> update fuga.cpp
pick <コミット3のhash> update piyo.cpp
// さかのぼりたいコミットのpickをeditに変更して保存
edit <コミット1のhash> update hoge.cpp
pick <コミット2のhash> update fuga.cpp
pick <コミット3のhash> update piyo.cpp
$ git add hoge.cpp
$ git commit --amend // 新しいhoge.cppの変更をコミット1に加える
$ git rebase --continue // コミット1の書き換えが完了
更改Commiter和Author
(来源)
将其反映在后续的提交中
更改Commiter
git config --local user.name "your-name"
git config --local user.email "foo@example.com"
git commit --amend
更改作者
git commit --amend --author="your-name <foo@example.com>"
git rebase --continue
git push -f
将所有之前的提交更改
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='your-name'; GIT_AUTHOR_EMAIL='foo@example.com'; GIT_COMMITTER_NAME='your-name'; GIT_COMMITTER_EMAIL='foo@example.com';" HEAD