Skip to content

git 常见命令和操作 #14

Open
@junhey

Description

@junhey
  1. 范例

0.1 [] 表示可选

0.2 COMMENT 表示任意注释

0.3 PATH/TO/FILE 表示文件路径

0.4 SHA 标识提交或合并的 SHA-1 值

0.5 BRANCH_NAME 标识为自己的分支名

0.6 以 git 开头的为命令行操作,以 TGit 开头的为桌面操作

0.7 操作如果为分页模式,输入 q 退出

0.8 操作如果为 vim 编辑界面,输入 :wq 提交编辑

0.9 单击和双击均指主键(一般为左键)

  1. 查看更新

1.1 查看更新文件列表

git status 或 git diff-files(未 add,可查看文件权限变化)

TGit:单击右键 -- TortoiseGit -- Check for modifications

1.2 查看文件更改内容

git diff HEAD PATH/TO/FILE

TGit:单击右键 -- TortoiseGit -- Check for modifications -- 双击相应文件

1.3 查看所有更改内容

git diff HEAD

  1. 本地提交

2.1 只修改了现有文件

git commit -am "COMMENT"

TGit:单击右键 -- Git Commit -> "BRANCH_NAME" -- 在 Message 下填写注释 -- OK

2.2 添加了新文件

git add .
git commit -m "COMMENT"

TGit:单击右键 -- Git Commit -> "BRANCH_NAME" -- 勾选添加的文件(或点击 All 全选),在 Message 下填写注释 -- OK

2.4 修改提交

[git add [-A] .]
git commit --amend -[a]m "COMMENT"

TGit:单击右键 -- Git Commit -> "release" -- 勾选 Amend Last Commit -- OK

2.5 查看提交的更新文件列表

git diff --name-status HEAD^1 HEAD

TGit:单击右键 -- TortoiseGit -- Show log -- 单击对应提交

2.6 查看提交的单个文件更新

git diff HEAD^1 HEAD PATH/TO/FILE

TGit:单击右键 -- TortoiseGit -- Show log -- 单击对应提交 -- 双击对应文件

2.7 查看提交的所有文件更新

git diff HEAD^1 HEAD

2.8 还原提交

2.8.1 提交未上传

git reset [--hard|--soft] HEAD^1

TGit:TortoiseGit -- Show log -- 右键单击对应提交 -- reset "BRANCH_NAME" to this... -- 选择 Hard|Soft|Mixed -- OK

2.8.2 提交已上传

git revert SHA

TGit:单击右键 -- TortoiseGit -- Show log -- 右键单击对应提交 -- Revert Change by this commit -- OK
单击右键 -- Git Commit -> "BRANCH_NAME" -- OK

  1. 把自己分支合并到 release

3.1 查看合并的更新文件列表

git diff --name-only HEAD^1 HEAD

TGit:单击右键 -- TortoiseGit -- Show log -- 单击对应合并

3.2 查看合并的单个文件更新

git diff HEAD^1 HEAD PATH/TO/FILE

TGit:单击右键 -- TortoiseGit -- Show log -- 单击对应合并 -- 左键双击对应文件

3.3 查看合并的所有文件更新

git diff HEAD^1 HEAD

3.4 产生冲突的文件并非自己修改过的

git checkout --ours PATH/TO/FILE
git add PATH/TO/FILE

TGit:单击右键 -- TortoiseGit -- Resolve -- 单击选择相应文件(可按 Shift 或 Ctrl 进行多选) -- 点击右键 -- 单击 Revert 或单击 Resolved conflit using 'mine'

3.5 合并结果中包含非自己修改过的文件

3.5.1 同时存在冲突

git reset PATH/TO/FILE
git checkout -- PATH/TO/FILE
git commit -m "COMMENT"(解决冲突后)

TGit:单击右键 -- TortoiseGit -- Check for modifications -- 单击选择相应文件(可按 Shift 或 Ctrl 进行多选) -- 点击右键 -- 单击 Revert

3.5.2 不存在冲突

git checkout HEAD^1 PATH/TO/FILE(该文件为修改或删除)
rm PATH/TO/FILE(该文件为新增)
git commit --amend -m "COMMENT"

TGit:单击右键 -- TortoiseGit -- Show log -- 单击对应合并 -- 单击对应文件(可按 Shift 或 Ctrl 进行多选) -- 点击右键 -- 单击 Revert to parent revision(该文件为修改或删除)
单击右键 -- TortoiseGit -- Show log -- 单击对应合并 -- 单击对应文件 -- 点击右键 -- Explore to -- 删除文件(该文件为新增)
单击右键 -- Git Commit -> "release" -- 勾选 Amend Last Commit -- 单击 OK

3.6 还原合并

3.6.1 合并未上传

git reset --hard HEAD^1

TGit:TortoiseGit -- Show log -- 右键单击对应提交 -- reset "BRANCH_NAME" to this... -- 选择 Hard -- OK

3.6.2 合并已上传

git revert -m 1 SHA

TGit:单击右键 -- TortoiseGit -- Show log -- 右键单击对应提交 -- Revert Change by this commit -- parent1 -- OK
单击右键 -- Git Commit -> "BRANCH_NAME" -- OK

  1. 开发协作

4.1 在别人开发基础上继续,但对应开发未上传至product

git checkout -b BRANCH_NAME SHA(SHA 为别人合并到 release 前的最后一次提交)

TGit:单击右键 -- TortoiseGit -- Show log -- 单击对应提交(同上) -- 点击右键 -- Create Branch at this version... -- 在 Branch 右边的文本框输入分支名 -- OK

4.2 在自己开发时,需要用到别人在自己开发后增加的内容(别人未上传到product)

4.2.1 自己开发的内容未上传到 release

git rebase SHA(SHA 为别人合并到 release 前的最后一次提交)

4.2.2 自己开发的内容已上传到 release

git merge --no-ff SHA(同上)

TGit:单击右键 -- TortoiseGit -- Merge -- 点击 Commit 左边的单选按钮 -- 在 Commit 右边的文本框中填入 SHA(同上) -- 勾选 No Fast Forward -- OK

4.3 在自己开发过程中,需要用到别人在自己开发后增加的内容(别人已上传到product)

4.3.1 自己开发的内容未上传到 release

git rebase product

TGit:单击右键 -- TortoiseGit -- Rebase -- 在 Upstream 右边的下拉框中选择 product -- Start Rebase

4.3.2 自己开发的内容已上传到 release

git merge --no-ff product

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions