Git常用命令及问题处理

基本命令

初始化一个Git仓库,使用git init命令。

1. 使用命令git add,注意,可反复多次使用,添加多个文件;也可一次add多个文件,文件用逗号分隔,add是添加到暂存区

2. 使用命令git commit -m,可以多次add,一次commit,添加 -a 参数可以add全部修改的文件,一次提交,跳过add ,git commit -a -m "my first commit"

3. 要随时掌握工作区的状态,使用git status命令。

4. 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

5. HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

6. 版本穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。git log --graph --pretty=oneline --abbrev-commit 缩写的id并显示简单图git log --pretty=oneline

7. 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

8. 用git diff HEAD --命令可以查看工作区和版本库里面最新版本的区别

9. 修改了,但是未add,通过git checkout -- file 撤销工作区修改,若两次修改,只add一次,checkout只能回到add后的,也就是说checkout不能撤销add的

10. 如果已经add了,怎么办?git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本此时,暂存的修改被撤销,但修改还在,相当于修改后未add,此时想撤销就可以用checkout了

远程

11. 本地库和远程库关联 git remote add origin [email protected]:michaelliao/learngit.git

查看远程库:git remote

Git remote -v 显示更详细的信息,包括可以抓取和推送的origin的地址。如果没有推送权限,就看不到push的地址

查看远程库地址:git remote xxx

删除远程库:git remote rm xxx

修改远程库:git remote set-url xxx

关联后,使用命令git push -u origin master第一次推送master分支的所有内容

git push origin推送到指定远程分支

12. 克隆仓库:git clone 可以使用git的原生协议,也可以使用https协议,但通过ssh支持的原生git协议速度最快

分支

13. 查看分支:git branch

本地和远程分支 git branch -a

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除本地分支:git branch -d

强制删除未合并的分支:git branch -D

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

推送当前分支到远程仓库:git push --set-upstream origin

14. git merge命令用于合并指定分支到当前分支,优先使用快速合并不使用快速合并 git merge --no-ff -m "merge with no-ff" dev

15. 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;

16. 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;

17. 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name;

贮藏区

当前的修改,尚未达到可提交的状态,又需要切换到其他分支开发,可先add,然后git stash添加到暂存区,添加暂存后文件就不在工作区了

18. 查看暂存列表:git stash list

19. 恢复暂存区:

一是用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除;

另一种方式是用git stash pop,恢复的同时把stash内容也删了如果暂存有多个,可以在恢复和删除命令的后面添加编号:stash@{0},例如git stash drop stash@{0}

20. rebase操作可以把本地未push的分叉提交历史整理成直线;

rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

21. git tag查看所有标签

git tag 就可以打一个新标签,默认标签是打在最新提交的commit上的

git tag 在指定提交点打标签

22. git show 查看标签信息

创建带有说明的标签,用-a指定标签名,-m指定说明文字

git tag -a v0.1 -m "version 0.1 released" 1094adb

删除标签:git tag -d

23. 推送标签到远程: git push origin推送全部本地标签: git push origin --tags

24. 删除远程标签:

git push origin :refs/tags/前提是删除本地标签

配置

git 修改当前的project的用户名的命令为:git config user.name;

git 修改当前的project提交邮箱的命令为:git config user.email

修改全局配置命令分别为: git config  --global user.namegit config  --global user.email

免费Git服务

github:https://github.com/

Gitlab:https://about.gitlab.com/

Coding:https://coding.net/

Gitee:https://gitee.com/

搭建git服务:https://gogs.io/

问题列表

1) 修改错误提交,或者提交错分支:

git  reset --soft 先本地回退到相应版本

注:--soft回退后保留当前工作修改,可重新提交,--hard放弃修改

git push origin --force  force用于强制覆盖远端

此时切换到想要提交的分支,git checkout 此时回退后的内容还在,可继续commit和push操作

注: 

git reset –mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息,若要提交需再次add   

git reset –soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可   

git reset –hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容

2) 由于错误用户信息导致无法push由于log里已经包含了提交用户信息如果服务器做了校验,所以这次提交是无法push了,只能回退此次提交,然后再重新提交

git reset  切换到你上次提交之前的版本,也就是第二个版本,可以直接使用git reset HEAD^

然后就可以通过git config user.name修改用户信息了,修改完后通过git add、git commit等进行提交

特殊的,如果只是修改最近一次,可以使用下面命令:

git commit --amend --author="userName "

你可能感兴趣的:(Git常用命令及问题处理)