1. 切换分支 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # 查看所有分区 $ git branch -a # 切换分支 $ git checkout master # 有文件与该分支不一致 $ git checkout master error: Your local changes to the following files would be overwritten by checkout: pom.xml Please commit your changes or stash them before you switch branches. Aborting # 先把文件存储,后将存储删除,之后可以切换 $ git stash $ git stash drop
2. revert 到指定版本 1. 查看日志,时间为从新到旧 1 2 3 4 5 6 7 8 9 10 11 12 13 14 $ git log pom.xml commit 512320f7604267e908999f6b2ade01e1f4685f1e Author: dapeng <dapeng@dtstack.com> Date: Fri Jun 12 15:09:52 2020 +0800 修改fastjson版本为1.2.70 commit 3b9667e02c2989cc93f7002f09e5d924b02d1718 Author: xuchao <xuchao@dtstack> Date: Wed May 27 15:12:06 2020 +0800 添加launch main 本地的日志打印 ...
2. 找到要回退的版本,并回退 1 git reset 512320f7604267e908999f6b2ade01e1f4685f1e pom.xml
3. 暂存操作 1 2 3 4 5 6 7 git stash 暂存当前修改 git stash apply 恢复最近的一次暂存 git stash pop 恢复暂存并删除暂存记录 git stash list 查看暂存列表 git stash drop 暂存名(例:stash@{0}) 移除某次暂存 git stash clear 清除暂存 git ls-files 查看暂存区中文件信息
4. remote
远程仓库 4.1. 查看 1 2 3 git remote # 查看所有仓库名 git remote -v # 查看远程服务器地址和仓库名称 git remote show [仓库名] # 显示某个远程仓库的信息
4.2. 增加、修改 1 2 3 git remote add [仓库名] [仓库地址] # 增加一个远程仓库 git remote set-url [仓库名] [仓库地址] # 修改一个远程仓库地址 git remote remove [仓库名] # 删除一个远程仓库
5. .gitconfig
配置 5.1. 忽略自动换行 1 2 3 4 5 6 7 8 9 10 # 命令行方式 git config --global core.autocrlf false git config --global core.filemode false git config --global core.safecrlf true # 直接修改文件,C:\Users\[用户名]\.gitconfig [core] autocrlf = false filemode = false safecrlf = true
5.2. git bash 速度慢 1 2 3 git config --global core.preloadindex true git config --global core.fscache true git config --global gc.auto 256
6. 初始化新项目 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # Git global setup git config --global user.name "username" git config --global user.email "email_address@email.com" # Create a new repository git clone https://xxx.xxx.xxx.xxx:/project_name.git cd project_name git switch -c master touch README.md git add README.md git commit -m "add README" git push -u origin master # Push an existing folder cd existing_folder git init --initial-branch=master git remote add origin https://xxx.xxx.xxx.xxx:/project_name.git git add . git commit -m "Initial commit" git push -u origin master # Push an existing Git repository cd existing_repo git remote rename origin old-origin git remote add origin https://xxx.xxx.xxx.xxx:/project_name.git git push -u origin --all git push -u origin --tags
7. 将指定 commit 从一个分支转移到另一个分支 将 A 分支的指定 commit 提交到 B 分支
1 2 3 4 5 6 7 8 9 10 11 # 1. 首先切换到 A 分支 git checkout A # 2. 查询待提交的 3 个 commit-id git log -3 # 查询到 id 是 A1 A2 A3 # 3. 切换到 B 分支 git checkout B # 4. 将之提交到 B 分支,可以直接指定 # 也使用 .. 选择两个 commit 区间的所有(不包括第一个),即 (A1..A3],使用 A1^..A3 相当于[A B] git cherry-pick A1 A2 A3 git cherry-pick A1..A3 # 5. 最后 push 到远程,会重新生成新 id