Open xiaochengzi6 opened 2 years ago
配置了SSH公私钥,出现了以下问题,每次都要输入密码,因而就查了一下解决办法。git每次操做远程分支(git pull,git push等)时提示enter passphrase for key '~/.ssh/id_rsa'git 问题出现的原因是在生成 key 的时设置了密码所以需要在每次提交和拉取的时候都要输入密码,所以使用$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile] 就可以重置原来密码
$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
比如: ssh-keygen -p -P 123456 -N '' -f ~/.ssh/id_rsa
ssh-keygen -p -P 123456 -N '' -f ~/.ssh/id_rsa
如果不小心commit了一个不应该commit的修改,但是还没有push,想撤销那个commit。
步骤:
a) git log:获取commit id;
b) git reset --hard commit_id:即:git reset --hard d1a65e9ac9a7c4396206f0072b7fbc9138a26c1f
git reset --hard d1a65e9ac9a7c4396206f0072b7fbc9138a26c1f
撤销缓存区保存的文件记录 也就是将文件 从 git add 命令后取消 具体参考
创建分支: git checkout -b <name> 、git branch <name> + git checkout <name>
git checkout -b <name>
git branch <name> + git checkout <name>
切换分支:git switch <name>、git checkout <name>
git switch <name>
git checkout <name>
合并分支:git merge <name>、git rebase
git merge <name>
git rebase
会在当前分支下合并 <name> 分支
<name>
使用 git rebase合并分支能够让分支的提交历史看起来更加线性、清晰。比如当前在 bugFix分支 那么可以和主分支main 去合并git merge main 这个时候的 bugFix 分支就会被合并到 mian 分支上(git merge 合并过程相反),从历史提交记录上看是一个线性开发过程
bugFix
main
git merge main
mian
移动 HEAD: git checkout <name> 、git checkout HEAD^、git checkout HEAD~<number>
git checkout HEAD^
git checkout HEAD~<number>
后两个都是相对于 HEAD分支上移动
HEAD
移动分支到另一个分支: git branch -f <value> <target>
git branch -f <value> <target>
<value>: 表示要移动的分支名 <target>: 表示准备移动到分支的位置
<value>
<target>
撤销变更(本地、远端):git reset HEAD~1、git revert HEAD~1
git reset HEAD~1
git revert HEAD~1
这两者的主要差距就是前者撤销不会有记录,后者可以看到有撤回的记录 修改提交内容
这两者的主要差距就是前者撤销不会有记录,后者可以看到有撤回的记录
提交复制:git cherry-pick <提交号>
git cherry-pick <提交号>
将一些其他分支的提交复制到当前分支上,这里的提交号数量无限制 限制性条件:需要知道提交号也就是 commit时候的 hash 才行
将一些其他分支的提交复制到当前分支上,这里的提交号数量无限制
限制性条件:需要知道提交号也就是 commit时候的 hash 才行
commit
在不知道 提交hash的时候选择使用 git rebase -i <提交记录>
git rebase -i <提交记录>
-i 命令可以打开一个 UI 界面 在 UI 界面中操作修改 1、删除 2、合并 3、复制
-i 命令可以打开一个 UI 界面 在 UI 界面中操作修改
1、删除
2、合并
3、复制
1、处理最后一次提交错误的 commit 记录
使用 git commit --amend 修改最后一次提交的记录,提供一个 -m 的参数就能直接在后缀一个字符串就能完成提交。
git commit --amend
-m
git commit --amend -m "修改后的提交内容"
2、处理提交漏掉的文件
使用 git commit --amend --no-edit 对漏交文件提交后 commit 内容还是上一次的
git commit --amend --no-edit
git add text.js git commit --amend --no-edit
或者使用 git reset <commitHash>此时主要是撤回这次提交记录但修改的内容还存在,使用 git reset --hard
git reset <commitHash>
git reset --hard
3、出现 git push错误failed to push some refs to 的问题原因是:远端库和本地库存在差异没有同步 解决办法:
git push错误failed to push some refs to
解决的方法有很多,出现这个问题的原因也有很多,针对不同的问题再去选择处理方案比较好
本地提交了 commit 然后 push 之后发现有文件需要补充到上次的提交中,弄好后 push 出现这个问题,只能回退 commit 重新提交 commit 再 push
忽略本地库,让远端库和本地库保持一致 git pull --rebase origin master
git pull --rebase origin master
git stash list 罗列 stash 存储的东西
git stash pop 弹出最近一次的保存
git stash drop stash@{1} 删除第二次存储的值
修改远端commit
1、git reset HEAD 和 git reset HEAD^的区别?
git reset HEAD
git reset HEAD^
2、git reset --hard HEAD 和 git reset HEAD的区别?
git reset --hard HEAD
git reset head 后的恢复操作
配置了SSH公私钥,出现了以下问题,每次都要输入密码,因而就查了一下解决办法。git每次操做远程分支(git pull,git push等)时提示enter passphrase for key '~/.ssh/id_rsa'git 问题出现的原因是在生成 key 的时设置了密码所以需要在每次提交和拉取的时候都要输入密码,所以使用
$ ssh-keygen -p [-P old_passphrase] [-N new_passphrase] [-f keyfile]
就可以重置原来密码比如:
ssh-keygen -p -P 123456 -N '' -f ~/.ssh/id_rsa
git 分支操作
如果不小心commit了一个不应该commit的修改,但是还没有push,想撤销那个commit。
步骤:
a) git log:获取commit id;
b) git reset --hard commit_id:即:
git reset --hard d1a65e9ac9a7c4396206f0072b7fbc9138a26c1f
撤销缓存区保存的文件记录 也就是将文件 从 git add 命令后取消 具体参考
创建分支:
git checkout -b <name>
、git branch <name> + git checkout <name>
切换分支:
git switch <name>
、git checkout <name>
合并分支:
git merge <name>
、git rebase
使用
git rebase
合并分支能够让分支的提交历史看起来更加线性、清晰。比如当前在bugFix
分支 那么可以和主分支main
去合并git merge main
这个时候的 bugFix 分支就会被合并到mian
分支上(git merge 合并过程相反),从历史提交记录上看是一个线性开发过程移动 HEAD:
git checkout <name>
、git checkout HEAD^
、git checkout HEAD~<number>
移动分支到另一个分支:
git branch -f <value> <target>
撤销变更(本地、远端):
git reset HEAD~1
、git revert HEAD~1
提交复制:
git cherry-pick <提交号>
在不知道 提交hash的时候选择使用
git rebase -i <提交记录>
1、处理最后一次提交错误的 commit 记录
使用
git commit --amend
修改最后一次提交的记录,提供一个-m
的参数就能直接在后缀一个字符串就能完成提交。2、处理提交漏掉的文件
使用
git commit --amend --no-edit
对漏交文件提交后 commit 内容还是上一次的或者使用
git reset <commitHash>
此时主要是撤回这次提交记录但修改的内容还存在,使用git reset --hard
3、出现
git push错误failed to push some refs to
的问题原因是:远端库和本地库存在差异没有同步 解决办法:解决的方法有很多,出现这个问题的原因也有很多,针对不同的问题再去选择处理方案比较好
本地提交了 commit 然后 push 之后发现有文件需要补充到上次的提交中,弄好后 push 出现这个问题,只能回退 commit 重新提交 commit 再 push
忽略本地库,让远端库和本地库保持一致
git pull --rebase origin master
git stash list 罗列 stash 存储的东西
git stash pop 弹出最近一次的保存
git stash drop stash@{1} 删除第二次存储的值
修改远端commit
特别的
1、
git reset HEAD
和git reset HEAD^
的区别?2、
git reset --hard HEAD
和git reset HEAD
的区别?