git命令总结

5 阅读3分钟

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

blog.csdn.net/august5291/…

// 在本地仓库,有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

blog.csdn.net/the_power/a…

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]