0. 前文介绍
origin是默认远程仓的名字,当使用git push将本地代码推送到远程仓时,可以用origin来代表默认的远程仓。
1. git clone
// clone仓库的指定分支
git clone -b <指定分支名> https://xxxxxxxxx.git
// clone时仓库太大
git clone -b <指定分支名> --depth=1 https://xxxxxxxxx.git
2. git remote
// 加入远程仓到本地并重命名
git remote add kernel https://gitee.com/openeuler/kernel.git
// 查看远程仓的名字
git remote
// 查看远程仓的git地址
git remote -v
3. git push
// 在本地新建了一个本地分支,要推到远程仓库
git push -u origin <本地分支名>
// 指定本地分支和远程分支
git push origin <本地分支名>:<远程分支名>
// 如果同一次提交后又进行了修改,则需要加-f
git push -f origin <本地分支名>:<远程分支名>
// 如果本地分支名和远程分支名相同
git push origin <分支名> 或者 git push origin
4. git pull
// 如果本地分支名和远程分支名相同
git pull origin <分支名> 或者 git pull origin
// 如果本地分支名和远程分支名不同
git pull <远程仓库名> <远程分支名>:<本地分支名>
5. git checkout
// 有master分支,切换到已经创建dev分支
git checkout dev
// 有master分支,基于master分支创建dev分支
git checkout -b dev
// 拉取远程仓的指定分支并在本地创建
git remote add kernel https://gitee.com/openeuler/kernel.git
git pull kernel
git checkout -b [branch] remotes/kernel/[branch]
// 切换到某次commitId
git checkout [commitId]
6. git commit
// 常规的提交命令
git commit -m "description"
// 对于已经提交的commit,不新增commit的情况下修改同一次提交的内容
git commit --amend
7. git cherry-pick
// 在本地仓库,有branch1和branch2
// branch1 有三个commit,从新到老依次是branch1-commit3、branch1-commit2、branch1-commit1
// branch2 有三个commit,从新到老依次是branch2-commit3、branch2-commit2、branch2-commit1
// 要把branch2的branch2-commit2合入到 branch1
首先保证当前的分支是branch1
git cherry-pick branch2-commit2
//
git cherry-pick --continue
8. git rebase -i
8.1 问题具体场景
现在有4个连续的commit:commit1,commit2,commit3,commit4
commit3中引入了其他补丁commit5中的部分代码,需要移除这些代码,并在commit2和commit3之间插入commit5
// 1.先删除commit3中引入的其他补丁的代码
git rebase -i commit2
修改commit3的pick为edit,并且保存退出Esc,:wq
修改commit3中的代码,删除其他补丁的代码,git commit --amend
git rebase --continue
// 2.在commit2和commit3之间插入commit5
git rebase -i commit1
修改commit2的pick为edit,并且保存退出Esc,:wq
git cherry-pick commit5
修复冲突后 git cherry-pick --continue
git rebase --continue
9. other
// 查看最近提交的10条记录
git log --oneline -10
// 按照指定格式输出提交的记录
git log --pretty=format:"%h %s %ad"
// 查看指定文件的所有提交记录
git log -p [file]
// 查看指定文件中每一行最新一次的修改记录
git blame [file]
// 查看所有分支
git branch -a
// 查看本次修改的文件
git status
// 回退到某次提交,且删除该提交到最新提交之前的内容
git reset --hard commitId
// 回退某次commitId的修改,恢复到修改之前
git revert [commitId]
// 查看两次提交之间的代码修改量
git diff commit1 commit2 --shortstat
// 将某次提交制作成补丁
git format-patch -1 [commitId]