一、常见命令
1、初始化本地仓库
git init
2、需要与码云保持一致
git config --global user.name "用户姓名"
git config --global user.email "用户邮箱"
3、设置远程地址
git remote add origin https://gitee.com/you/your.git (或者ssh地址,以后不用输入密码)
4、拉取远程代码(初次建仓库的README)
git pull origin master
5、添加要上传的文件
git add .
6、上传说明
git commit -m "第一次提交"
7、上传代码
git push -u origin master
8、强制上传
git push -u origin master -f
9、配置新的远程仓库地址,需要获取新的ssh远程地址
git remote set-url origin git@gitee.com:you/you.git
10、查看本地变更记录
git status
11、缓存本地更改文件避免拉取的时候被覆盖
#把文件保存到git 栈中
git stash
#把代码从git栈中提取出来
git stash pop 把代码从git栈中提取出来
注:如果你在本地写了代码,此时代码还没写完,不想提交到远程仓库.但是此时你需要切到别的分支去做一些事情的时候.你就可以把代码暂存到本地,切换到别的分支,然后再切回来。
12、拉取码云上最新代码到本地
git pull --rebase
13 、缓存的本地代码和拉取的新代码合并
14、git add 详解
(1)一下子将所有变更都放入到待提交的缓存中。
git add -A
(2)不想全部提交。只想提交部分文件怎么办?而这不想提交的文件,又在刚刚被add 了。怎么办?
git add -i
注:选择3,找到要排除的文件,直接排除。选择7,回到提交目录上。再用git status查看,可以看到,待提交的文件,都变成了亮绿色。
创建仓库步骤
1、cd d: //去的盘
2、mkdir testdir 创建本地
3、git init //初始化
4、git add .
5、git commit -am”第一次初始化创建”
6、git remote add origin url
7、git pull
8、git push -u -f origin master
您提供的步骤描述了一个在 Git 中使用交互式 rebase (git rebase -i
) 来编辑 commit 并追加改动的过程,但其中有些细节和您的目标(将多个 commit 的修改追加到某次特定的 commit 上)不完全吻合。以下是根据您的目标调整后的步骤,同时保留了您原有的格式和版权声明:
二、将多个 commit 的修改追加到某次特定的 commit 上
保存工作空间中的改动
在开始之前,如果您当前有未提交的改动,可以使用 git stash
命令将它们保存起来,以便稍后恢复。
git stash
进入 commit 信息编辑界面
使用 git rebase -i
命令进入交互式 rebase 界面,并指定要重新排序和编辑的 commit 范围。通常,您需要找到目标 commit 的前一个 commit 的哈希值,并使用该哈希值启动 rebase。
# 假设目标 commit 的前一个 commit 的哈希值是 abcdef1
git rebase -i abcdef1^
编辑 rebase 列表
在交互式 rebase 编辑器中,您将看到一个 commit 列表。找到您想要将改动追加到的目标 commit,以及您想要合并的所有后续 commit。
- 将目标 commit 保留为
pick
(这通常是列表中的第一个 commit,除非您已经移动了其他 commit)。 - 将所有要合并的后续 commit 的
pick
改为squash
(或简写为s
)。
例如:
pick abcdef1 Target commit message
squash xyz7890 Commit to squash into target
squash 1234567 Another commit to squash
在这个例子中,xyz7890
和 1234567
的改动将被合并到 abcdef1
中。
保存并退出编辑
按下 Esc
键,然后输入 :wq
并回车以保存并退出编辑器。
恢复并应用改动(如果之前使用了 git stash)
如果您之前使用了 git stash
,现在可以使用 git stash pop
将改动恢复到工作目录中。
git stash pop
然而,在这个特定的 rebase 场景中,您通常不需要恢复 stash,因为您正在直接编辑 commit 历史。如果您确实有需要应用的改动,请确保它们在 rebase 之前已经提交,或者您可以在 rebase 完成后再应用它们。
注意:如果您在 rebase 之前恢复了 stash,并且这些改动与正在编辑的 commit 相关,则您可能需要在 rebase 过程中手动解决冲突。
添加改动文件并追加到 commit 上
由于您已经使用 squash
合并了 commit,Git 会自动将改动添加到目标 commit 中。您不需要单独使用 git add
和 git commit --amend --no-edit
命令。
移动 HEAD 到最新的 commit 处
在 rebase 过程中,Git 会自动更新 HEAD 和当前的分支引用,以反映您所做的更改。当 rebase 完成时,HEAD 将指向最新的 commit。
如果存在冲突,需先解决冲突再执行命令
如果在 rebase 过程中遇到冲突,您需要手动编辑冲突文件并解决冲突。然后,使用 git add
命令将解决后的文件添加到暂存区,并继续 rebase 过程。
# 编辑冲突文件并解决冲突
# 然后添加解决后的文件
git add .
# 继续 rebase 过程
git rebase --continue
三、git 存在多个commit 时,将修改追加到某次commit 上
-
查看当前的 commit 历史:
首先,您可能想要查看当前的 commit 历史,以确定您想要修改的 commit。git log --oneline
这将显示一个简化的 commit 历史,每个 commit 都有一个唯一的哈希值和一行描述。
-
启动交互式 rebase:
使用git rebase -i
并指定您想要开始编辑的 commit 的前一个 commit。例如,如果您想要编辑第三个 commit(从最新的 commit 开始计数),则您需要指定第二个 commit 的哈希值或相对位置(如HEAD~2
)。git rebase -i HEAD~3 # 假设您想要编辑最近的三个 commit 中的某一个
这将打开一个文本编辑器,列出最近的三个 commit。
-
修改 rebase 脚本:
在编辑器中,找到您想要修改的 commit,并将其前面的pick
改为edit
。例如:pick abcdef1 Commit message 1 edit xyz7890 Commit message 2 # 您想要修改的 commit pick 1234567 Commit message 3
保存并退出编辑器。
-
Git 暂停 rebase 并让您检查/修改 commit:
Git 会将 HEAD 移动到您指定的 commit(在这个例子中是xyz7890
),并允许您进行更改。 -
应用额外的修改:
现在,您可以在工作目录中做出额外的修改。这些修改可以是您之前使用git stash
保存的改动,也可以是新的改动。如果您之前使用了
git stash
,则现在可以使用git stash pop
来恢复这些改动:git stash pop
或者,如果您没有使用
stash
,则直接进行您的修改。 -
添加改动并提交:
使用git add
将改动添加到暂存区,然后使用git commit --amend
来修改当前的 commit。--no-edit
选项会保留原有的 commit 消息,但您也可以省略此选项来编辑消息。git add <modified-files> git commit --amend --no-edit # 或者省略 --no-edit 来编辑 commit 消息
-
继续 rebase:
完成 commit 的修改后,使用git rebase --continue
命令继续 rebase 过程。Git 将应用剩余的 commit(在这个例子中是1234567
)。git rebase --continue
-
(可选)解决冲突:
如果在 rebase 过程中遇到冲突,您需要解决这些冲突,然后使用git add
命令标记冲突已解决,并继续 rebase。解决冲突后:
git add <conflicted-files> git rebase --continue