Git常用命令整理

1、初始化

git init

2、设置签名

一般这个只设置系统用户级别
git config --global user.name xxx
git config --global user.email xxx

3、查看状态

git status

4、添加

git add [file name]

5、提交到本地仓库

git commit -m "描述信息" [file name]

6、推送

git push
git push [别名] [分支名] 例如:git push origin master

7、拉取

git pull
git pull 或 git fetch 例如:git pull origin master
两者的区别,git pull下载并合并 git fetch仅下载

8、看日志

git log
git log --pretty=oneline
git log --oneline
git reflog

9、本地记录之间前后切换

  1. 基于索引值操作[推荐]:git reset --hard [局部索引值] 例如: git reset --hard a6ace91

  2. 使用^符号: 只能后退:git reset --hard HEAD^ 注: 一个^表示后退一步, n 个表示后退 n 步

  3. 使用~符号(只能后退):git reset --hard HEAD~n 注:表示后退 n 步

  4. reset 命令的三个参数对比

    • --soft 参数 仅仅在本地库移动 HEAD 指针

    • --mixed 参数 在本地库移动 HEAD 指针、 重置暂存区

    • --hard 参数 在本地库移动 HEAD 指针、 重置暂存区、 重置工作区

10、比较文件差异(基本不用)

  • 将工作区中的文件和暂存区进行比较:git diff [文件名]

  • 将工作区中的文件和本地库历史记录比较:git diff [本地库中历史版本] [文件名]

  • 比较多个文件:git diff

11、查看分支

查看全部分支:git branch -a
git branch查出来的结果列表中,前面标*号的表示当前正在使用的分支

12、从远程仓库下载

  • 下载:git clone [远程地址]

  • 下载指定分支:git clone -b 分支名 仓库地址

13、远程地址相关命令

  • 查询设置的远程仓库的地址与别名:git remote -v

  • 添加远程仓库:git remote add [别名] [远程地址] 例如git remote add origin http://xxxxx

  • 删除指定的远程仓库:git remote rm origin 此处最后填写对应的别名即可

14、本地分支相关命令

  • 查看本地存在的分支:git branch -v 或 git branch

  • 创建本地分支:git branch [分支名]

  • 创建本地分支,并自动切换至新分支上:git checkout -b 新分支名 例如 git checkout -b dev2

  • 切换本地分支:git checkout [分支名]

  • 合并分支:先 git checkout [被合并分支名],再 git merge [有新内容分支名]

  • 删除本地分支:git branch -d 分支名

  • 重命名本地分支:git branch -m dev-old dev-new 注意:-m后面先填原先分支的名字,后写重命名后的名字

15、远程分支相关命令

  • 推送本地分支到远程仓库:git push --set-upstream origin 分支名

  • 删除远程分支:git push origin --delete 分支名

此处容易出现一个问题

下面这个是执行的命令
git push --delete origin master
下面是出现的问题
remote: error: refusing to delete the current branch: refs/heads/master
To git@github.com:zrong/quick-cocos2d-x.git
! [remote rejected] devel (deletion of the current branch prohibited)
error: failed to push some refs to 'git@github.com:zrong/quick-cocos2d-x.git'

这是由于在 github 中,master 是项目的默认分支。
要解决此问题,这样操作:
进入 github 中该项目的 Settings 页面;
设置 Default Branch 为其他的分支(例如 dev);
重新执行删除远程分支命令。
把本地tag推送到远程:git push --tags(这个貌似不需要执行)
获取远程tag:git fetch origin tag <tagname> (这个貌似也不需要执行)

37d929b0227b4b1caa1d6c5067c80515.png

  1. 删除远程tag(暂时不知道干嘛用的):git push origin --delete tag <tagname>

  2. 重命名远程分支:

    • 先删除远程分支,

    • 然后重命名本地分支,

    • 再重新提交一个远程分支

  3. 删除master分支并替换master分支(跟重命名的有些类似)

    • 先基于master创建一个分支作为备份

    • 删除master远程分支(远程删除,出错的话参考上面)

    • 重命名刚才备份的本地分支

    • 通过git push origin master将分支上传

    • 之后上github上把Default Branch重新改成master(参考远程删除报错后的设置图)

    • 参考链接 https://blog.csdn.net/q85647842/article/details/107225097

  4. 将远程分支同步到本地(提前是本地这个分支不存在):git checkout -b 本地分支名 origin/远程分支名(例如:git checkout -b dev origin/dev)

远程分支拉取到本地可能出现下面的问题:

会出现下面的提示
fatal: Cannot update paths and switch to branch 'dev2' at the same time.
Did you intend to checkout 'origin/dev2' which can not be resolved as commit?

表示拉取不成功。我们需要先执行
git fetch(也可以用git pull --all 建议直接用这个,直接点防止冲突)

然后再执行一下刚才的那个git checkout xxx ......

16、还原代码(恢复到更改前到状态)

  1. 先查看当前改的文件:git status

  2. 还原当前删除的文件到最新版本:git ls-files --deleted

  3. 还原当前的目录到最新版本:git checkout --目录名/