首先明确一点,git是branch(分支)和版本(Node?)之间的游戏。
下面是一些实践的内容:
1. 让本地分支强制更新为远程分支的内容。
首先设置本地分支和远程分支的关联:
git remote add origin xxxxx.git
git branch --set-upstream-to=origin/main master
git fetch origin
git checkout master
git reset --hard origin/main
2. 查看已经配置的远程仓库:
git remote -v
3.查看本地和远程的所有branch。
git remote -a
4. 如果没有显示远程所有的branch,要先
git fetch
5. 查看本地分支与远程分支的连接关系:
git branch -vv
6. 查看远程仓库详细信息:
git remote show [remote-name]
git remote 提供了一系列对远程仓库的操作。
7. 为一个本地分支设置跟踪一个远程分支:
git branch --set-upstream-to=[remote-name]/[branch-name] [local-branch-name]
8. Squash合并。
git merge --squash feature-branch
这会将feature-branch上的所有commit作为一个commit提交到main。
9. 让远程分支强制更新为本地分支的内容。
--force
git push --force
--force-with-lease
git push --force-with-lease
这个指令和上面一个指令不同之处在于,执行这个指令的时候git会检查远程分支是否和你最后一次获取的状态一致。如果在此期间远程分支有了新的提交,则push会被拒绝。
10. 创建一个新branch
git branch [branch-name]
11. checkout的同时创建一个新branch
git checkout -b [branch-name]
12. 在远程仓库创建新分支并与本地分支进行关联:
git checkout -b [branch_name] 创建本地分支
git push origin [branch_name] 把本地的分支推送到远程仓库
git branch --set-upstream-to=origin/[branch_name] [branch_name] 将本地分支与远程分支相关联
13. 查看在本地未add的更改:
git diff
14. 查看在本地已add,但未commit的更改:
git diff --cached
或者
git diff --staged
15. 查看已经commit的某个文件的更改:
git log -- [file_path]
16. checkout到另一个分支后,在前一个分支未add的内容会继续保持在当前新分支未add的状态。这是因为未暂存的更改不属于任何分支。Git试图保留这些更改,以避免你丢失工作进度。
在切换git分支时,首先要清理工作目录。要不使用commit进行提交,要不使用git stash进行暂存。之后,可以使用git stash pop或者git stash apply来恢复这些更改。